Updates
diff --git a/about/index.html b/about/index.html
index 01b333f..7e89d52 100644
--- a/about/index.html
+++ b/about/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.51a6f681b234fe6f2f73.css">/*!
  * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/component---src-pages-about-js-c595eec620f6abb5c8ad.js"/><link as="script" rel="preload" href="/openj9/commons-995392a5e28deac70171.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js"/><link as="fetch" rel="preload" href="/openj9/page-data/about/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="a14s3y">.css-a14s3y{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:4rem;padding-bottom:4rem;}</style><section class="css-a14s3y"><style data-emotion-css="uirvwh">.css-uirvwh{margin-bottom:3rem;}</style><style data-emotion-css="17u419h">.css-17u419h{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:3rem;}</style><h1 class="css-17u419h">More about OpenJ9</h1><style data-emotion-css="1sl8abc">.css-1sl8abc{background-color:white;padding-top:2rem;padding-bottom:2rem;padding-left:5%;padding-right:5%;border-radius:0.5rem;}</style><div class="css-1sl8abc"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our story</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications.</p></div></section><style data-emotion-css="1cb4n38">.css-1cb4n38{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:7%;padding-right:7%;padding-top:2rem;padding-bottom:2rem;}</style><section class="css-1cb4n38"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our supporters</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">The success of the OpenJ9 project is underpinned by the generosity of our supporters, to whom we would like to extend our thanks. This support comes in different forms; monetory, people, system, and data center resources. People resources help us to staff the planning, development, delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies. Dedicated systems and hosting services allow us to run automated build and test operations, which help ensure that quality and reliability is central to all our deliverables.</p><style data-emotion-css="v2pi9l">.css-v2pi9l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;}</style><div class="css-v2pi9l"><style data-emotion-css="gu2vom">.css-gu2vom{min-height:12.5rem;border-radius:0.5rem;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-gu2vom"><style data-emotion-css="vs5na0">.css-vs5na0{width:50%;height:50%;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="IBM Logo" class="css-vs5na0"/></article><article class="css-gu2vom"><style data-emotion-css="138rpve">.css-138rpve{width:80%;-webkit-filter:invert(100%);filter:invert(100%);}</style><img src="/openj9/static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png" alt="AdoptOpenJDK Logo" class="css-138rpve"/></article><article class="css-gu2vom"><img src="/openj9/static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg" alt="Oregon State University Logo" class="css-vs5na0"/></article><article class="css-gu2vom"><img src="/openj9/static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg" alt="New Brunswick University Logo" class="css-vs5na0"/></article></div></section><style data-emotion-css="wqrdrc">.css-wqrdrc{padding-left:7%;padding-right:7%;padding-top:4rem;padding-bottom:4rem;background-color:#F5F9FC;}</style><section class="css-wqrdrc"><style data-emotion-css="rd3ir2">.css-rd3ir2{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);background-color:white;padding-left:5%;padding-right:5%;padding-top:2rem;padding-bottom:2rem;border-radius:0.5rem;}@media screen and (min-width:35rem){.css-rd3ir2{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-rd3ir2{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-rd3ir2{grid-template-columns:repeat(2,1fr);}}</style><div class="css-rd3ir2"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><article class="css-1b6n4o1"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">DOCS</h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience, but we also have many tuning options to help you ramp up application performance.</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank" class="css-1575med">Go to docs</a></article><article class="css-1b6n4o1"><h3 class="css-4ddra2">BLOGS</h3><p class="css-fza3g9">Our blogs are written by developers, for developers. Read about their insights into up and coming technologies, take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project.</p><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-1575med">Go to blogs</a></article></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/component---src-pages-about-js-c595eec620f6abb5c8ad.js"/><link as="script" rel="preload" href="/openj9/commons-2ee5517a8df806aebc87.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-f3eca94263f09fdd722d.js"/><link as="fetch" rel="preload" href="/openj9/page-data/about/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="a14s3y">.css-a14s3y{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:4rem;padding-bottom:4rem;}</style><section class="css-a14s3y"><style data-emotion-css="uirvwh">.css-uirvwh{margin-bottom:3rem;}</style><style data-emotion-css="17u419h">.css-17u419h{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:3rem;}</style><h1 class="css-17u419h">More about OpenJ9</h1><style data-emotion-css="1sl8abc">.css-1sl8abc{background-color:white;padding-top:2rem;padding-bottom:2rem;padding-left:5%;padding-right:5%;border-radius:0.5rem;}</style><div class="css-1sl8abc"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our story</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that represents hundreds of person-years of effort. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications.</p></div></section><style data-emotion-css="1cb4n38">.css-1cb4n38{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:7%;padding-right:7%;padding-top:2rem;padding-bottom:2rem;}</style><section class="css-1cb4n38"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Our supporters</h2><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">The success of the OpenJ9 project is underpinned by the generosity of our supporters, to whom we would like to extend our thanks. This support comes in different forms; monetory, people, system, and data center resources. People resources help us to staff the planning, development, delivery, and support of OpenJ9 releases as well as pioneering new and innovative technologies. Dedicated systems and hosting services allow us to run automated build and test operations, which help ensure that quality and reliability is central to all our deliverables.</p><style data-emotion-css="v2pi9l">.css-v2pi9l{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;}</style><div class="css-v2pi9l"><style data-emotion-css="gu2vom">.css-gu2vom{min-height:12.5rem;border-radius:0.5rem;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-gu2vom"><style data-emotion-css="vs5na0">.css-vs5na0{width:50%;height:50%;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDVweCIgaGVpZ2h0PSIxOHB4IiB2aWV3Qm94PSIwIDAgNDUgMTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5pYm0tbG9nbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJpYm0tbG9nbyIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAsMTcuNjk0MTE3NiBMOC42NzUwOTQxMiwxNy42OTQxMTc2IEw4LjY3NTA5NDEyLDE2LjU2NzIyMzUgTDAsMTYuNTY3MjIzNSBMMCwxNy42OTQxMTc2IFogTTAsMTUuMzI4MDgyNCBMOC42NzUwOTQxMiwxNS4zMjgwODI0IEw4LjY3NTA5NDEyLDE0LjIwMTE4ODIgTDAsMTQuMjAxMTg4MiBMMCwxNS4zMjgwODI0IFogTTIuNDc4ODM1MjksMTIuOTYyMDQ3MSBMNi4xOTY4MTE3NiwxMi45NjIwNDcxIEw2LjE5NjgxMTc2LDExLjgzNTcwNTkgTDIuNDc4ODM1MjksMTEuODM1NzA1OSBMMi40Nzg4MzUyOSwxMi45NjIwNDcxIFogTTIuNDc4ODM1MjksMTAuNTk2NTY0NyBMNi4xOTY4MTE3NiwxMC41OTY1NjQ3IEw2LjE5NjgxMTc2LDkuNDY5NjcwNTkgTDIuNDc4ODM1MjksOS40Njk2NzA1OSBMMi40Nzg4MzUyOSwxMC41OTY1NjQ3IFogTTIuNDc4ODM1MjksOC4yMzA1Mjk0MSBMNi4xOTY4MTE3Niw4LjIzMDUyOTQxIEw2LjE5NjgxMTc2LDcuMTA0MTg4MjQgTDIuNDc4ODM1MjksNy4xMDQxODgyNCBMMi40Nzg4MzUyOSw4LjIzMDUyOTQxIFogTTIuNDc4MjgyMzUsNS44NjQ0OTQxMiBMNi4xOTYyNTg4Miw1Ljg2NDQ5NDEyIEw2LjE5NjI1ODgyLDQuNzM3NiBMMi40NzgyODIzNSw0LjczNzYgTDIuNDc4MjgyMzUsNS44NjQ0OTQxMiBaIE0wLDMuNDk4NDU4ODIgTDguNjc1MDk0MTIsMy40OTg0NTg4MiBMOC42NzUwOTQxMiwyLjM3MjExNzY1IEwwLDIuMzcyMTE3NjUgTDAsMy40OTg0NTg4MiBaIE0wLDEuMTMyOTc2NDcgTDguNjc1MDk0MTIsMS4xMzI5NzY0NyBMOC42NzUwOTQxMiwwLjAwNjA4MjM1Mjk0IEwwLDAuMDA2MDgyMzUyOTQgTDAsMS4xMzI5NzY0NyBaIE05LjkxNDIzNTI5LDE2LjU2Nzc3NjUgTDkuOTE0MjM1MjksMTcuNjk0MTIxOSBMMTkuMDM5OTc2NSwxNy42OTQxMjE5IEMyMC4xNjI2NTU1LDE3LjY5NTYyMTIgMjEuMjQ4OTc1NCwxNy4yOTYxOTI4IDIyLjEwMzI3MDYsMTYuNTY3Nzc2NSBMOS45MTQyMzUyOSwxNi41Njc3NzY1IFogTTkuOTE0MjM1MjksMTQuMjAxMTg4MiBMOS45MTQyMzUyOSwxNS4zMjgwODI0IEwyMy4xMzcyNzA2LDE1LjMyODA4MjQgQzIzLjM0MjA3MjUsMTQuOTc0Mzg3NCAyMy41MDAwNjExLDE0LjU5NTU4NjYgMjMuNjA3MjcwNiwxNC4yMDExODgyIEw5LjkxNDIzNTI5LDE0LjIwMTE4ODIgWiBNMTIuMzkyNTE3NiwxMi45NjIwNDcxIEwxNi4xMTA0OTQxLDEyLjk2MjA0NzEgTDE2LjExMDQ5NDEsMTEuODM1NzA1OSBMMTIuMzkyNTE3NiwxMS44MzU3MDU5IEwxMi4zOTI1MTc2LDEyLjk2MjA0NzEgWiBNMjIuMTg2MjExOCw5LjQ2OTY3MDU5IEwxMi4zOTI1MTc2LDkuNDY5NjcwNTkgTDEyLjM5MjUxNzYsMTAuNTk2NTY0NyBMMjMuMDk2MzUyOSwxMC41OTY1NjQ3IEMyMi44NTIzMjQ4LDEwLjE3Njc5NjMgMjIuNTQ1NTg5LDkuNzk2Nzc5NjEgMjIuMTg2NzY0Nyw5LjQ2OTY3MDU5IE0xMi4zOTMwNzA2LDcuMTA0MTg4MjQgTDEyLjM5MzA3MDYsOC4yMjk5NzY0NyBMMjIuMjI3NjgyNCw4LjIyOTk3NjQ3IEMyMi41ODYzMTY2LDcuOTAzMDQyNiAyMi44OTI4Njg3LDcuNTIzMjA4ODggMjMuMTM2NzE3Niw3LjEwMzYzNTI5IEwxMi4zOTMwNzA2LDcuMTAzNjM1MjkgTDEyLjM5MzA3MDYsNy4xMDQxODgyNCBaIE0yMy42MDY3MTc2LDMuNDk4NDU4ODIgQzIzLjQ5OTk4OTMsMy4xMDQwNzA5MiAyMy4zNDE5NzM5LDIuNzI1MzkxNzkgMjMuMTM2NzE3NiwyLjM3MjExNzY1IEw5LjkxNDIzNTI5LDIuMzcyMTE3NjUgTDkuOTE0MjM1MjksMy40OTg0NTg4MiBMMjMuNjA2NzE3NiwzLjQ5ODQ1ODgyIEwyMy42MDY3MTc2LDMuNDk4NDU4ODIgWiBNMjIuMTAzMjcwNiwxLjEzMjk3NjQ3IEMyMS4yNDg5NzU0LDAuNDA0NTYwMTQyIDIwLjE2MjY1NTUsMC4wMDUxMzE2OTc4MiAxOS4wMzk5NzY1LDAuMDA2NjMxMDY0NDkgTDkuOTE0MjM1MjksMC4wMDY2MzEwNjQ0OSBMOS45MTQyMzUyOSwxLjEzMjk3NjQ3IEwyMi4xMDMyNzA2LDEuMTMyOTc2NDcgTDIyLjEwMzI3MDYsMS4xMzI5NzY0NyBaIE0xMi4zOTI1MTc2LDUuODY0NDk0MTIgTDE2LjExMDQ5NDEsNS44NjQ0OTQxMiBMMTYuMTEwNDk0MSw0LjczNzYgTDEyLjM5MjUxNzYsNC43Mzc2IEwxMi4zOTI1MTc2LDUuODY0NDk0MTIgWiBNMTkuNjAzNDIzNSw1Ljg2NDQ5NDEyIEwyMy42MzQzNjQ3LDUuODY0NDk0MTIgQzIzLjcyNDg5Miw1LjQ5NTY4MzA0IDIzLjc3MDkyOTUsNS4xMTczNTg0NCAyMy43NzE0OTQxLDQuNzM3NiBMMTkuNjAzNDIzNSw0LjczNzYgTDE5LjYwMzQyMzUsNS44NjQ0OTQxMiBaIE0xOS42MDM0MjM1LDExLjgzNTcwNTkgTDE5LjYwMzQyMzUsMTIuOTYyMDQ3MSBMMjMuNzcxNDk0MSwxMi45NjIwNDcxIEMyMy43NzE0OTQxLDEyLjU3MzMyOTQgMjMuNzIxNzI5NCwxMi4xOTY3NzY1IDIzLjYzNDM2NDcsMTEuODM1NzA1OSBMMTkuNjAzNDIzNSwxMS44MzU3MDU5IFogTTMxLjc3MDM0MTIsMCBMMjQuNzg1NTg4MiwwIEwyNC43ODU1ODgyLDEuMTI2ODk0MTIgTDMyLjE2MTgyMzUsMS4xMjY4OTQxMiBMMzEuNzcwMzQxMiwwIFogTTI0Ljc4NjE0MTIsMTcuNjk0MTE3NiBMMzAuOTg0NjExOCwxNy42OTQxMTc2IEwzMC45ODQ2MTE4LDE2LjU2NzIyMzUgTDI0Ljc4NjE0MTIsMTYuNTY3MjIzNSBMMjQuNzg2MTQxMiwxNy42OTQxMTc2IFogTTI0Ljc4NjE0MTIsMTUuMzI3NTI5NCBMMzAuOTg0NjExOCwxNS4zMjc1Mjk0IEwzMC45ODQ2MTE4LDE0LjIwMDYzNTMgTDI0Ljc4NjE0MTIsMTQuMjAwNjM1MyBMMjQuNzg2MTQxMiwxNS4zMjc1Mjk0IFogTTI3LjI2NDk3NjUsMTIuOTYwMzg4MiBMMzAuOTg0NjExOCwxMi45NjAzODgyIEwzMC45ODQ2MTE4LDExLjgzMzQ5NDEgTDI3LjI2NDk3NjUsMTEuODMzNDk0MSBMMjcuMjY0OTc2NSwxMi45NjAzODgyIFogTTI3LjI2NDk3NjUsMTAuNTkzOCBMMzAuOTg0NjExOCwxMC41OTM4IEwzMC45ODQ2MTE4LDkuNDY2OTA1ODggTDI3LjI2NDk3NjUsOS40NjY5MDU4OCBMMjcuMjY0OTc2NSwxMC41OTM4IFogTTM4LjQyMjc3NjUsMTcuNjk0MTE3NiBMNDQuNjIxMjQ3MSwxNy42OTQxMTc2IEw0NC42MjEyNDcxLDE2LjU2NzIyMzUgTDM4LjQyMjc3NjUsMTYuNTY3MjIzNSBMMzguNDIyNzc2NSwxNy42OTQxMTc2IFogTTM4LjQyMjc3NjUsMTUuMzI3NTI5NCBMNDQuNjIxMjQ3MSwxNS4zMjc1Mjk0IEw0NC42MjEyNDcxLDE0LjIwMDYzNTMgTDM4LjQyMjc3NjUsMTQuMjAwNjM1MyBMMzguNDIyNzc2NSwxNS4zMjc1Mjk0IFogTTM4LjQyMjc3NjUsMTIuOTYwMzg4MiBMNDIuMTQxODU4OCwxMi45NjAzODgyIEw0Mi4xNDE4NTg4LDExLjgzMzQ5NDEgTDM4LjQyMjc3NjUsMTEuODMzNDk0MSBMMzguNDIyNzc2NSwxMi45NjAzODgyIFogTTM4LjQyMjIyMzUsMTAuNTkzOCBMNDIuMTQxMzA1OSwxMC41OTM4IEw0Mi4xNDEzMDU5LDkuNDY2OTA1ODggTDM4LjQyMjIyMzUsOS40NjY5MDU4OCBMMzguNDIyMjIzNSwxMC41OTM4IFogTTM4LjQyMjc3NjUsOC4yMjcyMTE3NiBMNDIuMTQxODU4OCw4LjIyNzIxMTc2IEw0Mi4xNDE4NTg4LDcuMDk5NzY0NzEgTDM1LjE3MDM3NjUsNy4wOTk3NjQ3MSBMMzQuNzc5NDQ3MSw4LjIyNjY1ODgyIEwzOC4wNDM0NTg4LDguMjI2NjU4ODIgTDM4LjQyMjc3NjUsNy4xNTM5NTI5NCBMMzguNDIyNzc2NSw4LjIyNzIxMTc2IFogTTM0LjIzNTkwNTksNy4wOTk3NjQ3MSBMMjcuMjY1NTI5NCw3LjA5OTc2NDcxIEwyNy4yNjU1Mjk0LDguMjI3MjExNzYgTDMwLjk4NDYxMTgsOC4yMjcyMTE3NiBMMzAuOTg0NjExOCw3LjE1NDUwNTg4IEwzMS4zNjM5Mjk0LDguMjI3MjExNzYgTDM0LjYyNzk0MTIsOC4yMjcyMTE3NiBMMzQuMjM1OTA1OSw3LjA5OTc2NDcxIFogTTQyLjE0MTMwNTksNC43MzMxNzY0NyBMMzUuOTkxNDk0MSw0LjczMzE3NjQ3IEwzNS42MDA1NjQ3LDUuODYwMDcwNTkgTDQyLjE0MTg1ODgsNS44NjAwNzA1OSBMNDIuMTQxMzA1OSw0LjczMzE3NjQ3IFogTTM3LjYzMzE3NjUsMCBMMzcuMjQyOCwxLjEyNjg5NDEyIEw0NC42MjEyNDcxLDEuMTI2ODk0MTIgTDQ0LjYyMTI0NzEsMCBMMzcuNjMzMTc2NSwwIFogTTM0LjcwMDkyOTQsMTcuNjk0MTE3NiBMMzUuMDk5MDQ3MSwxNi41NjcyMjM1IEwzNC4zMDcyMzUzLDE2LjU2NzIyMzUgTDM0LjcwMDkyOTQsMTcuNjk0MTE3NiBaIE0zMy44Njk4NTg4LDE1LjMyNzUyOTQgTDM1LjUzNjk3NjUsMTUuMzI3NTI5NCBMMzUuOTM1MDk0MSwxNC4yMDA2MzUzIEwzMy40NzE3NDEyLDE0LjIwMDYzNTMgTDMzLjg2OTg1ODgsMTUuMzI3NTI5NCBaIE0zMy4wMzQzNjQ3LDEyLjk2MDk0MTIgTDM2LjM3MjQ3MDYsMTIuOTYwOTQxMiBMMzYuNzcwNTg4MiwxMS44MzM0OTQxIEwzMi42MzY4LDExLjgzMzQ5NDEgTDMzLjAzNDM2NDcsMTIuOTYwOTQxMiBaIE0zMi4xOTg4NzA2LDEwLjU5MzggTDM3LjIwODUxNzYsMTAuNTkzOCBMMzcuNjA2MDgyNCw5LjQ2NjkwNTg4IEwzMS44MDAyLDkuNDY2OTA1ODggTDMyLjE5ODg3MDYsMTAuNTkzOCBaIE0yNy4yNjQ5NzY1LDUuODYwMDcwNTkgTDMzLjgwNjI3MDYsNS44NjAwNzA1OSBMMzMuNDE1MzQxMiw0LjczMzE3NjQ3IEwyNy4yNjQ5NzY1LDQuNzMzMTc2NDcgTDI3LjI2NDk3NjUsNS44NjAwNzA1OSBaIE0zNi40MjExMjk0LDMuNDkzNDgyMzUgTDQ0LjYyMTI0NzEsMy40OTM0ODIzNSBMNDQuNjIxMjQ3MSwyLjM2NjU4ODI0IEwzNi44MTI2MTE4LDIuMzY2NTg4MjQgTDM2LjQyMTEyOTQsMy40OTM0ODIzNSBaIE0zMi41OTQyMjM1LDIuMzY2NTg4MjQgTDI0Ljc4NjE0MTIsMi4zNjY1ODgyNCBMMjQuNzg2MTQxMiwzLjQ5MzQ4MjM1IEwzMi45ODUxNTI5LDMuNDkzNDgyMzUgTDMyLjU5NDIyMzUsMi4zNjY1ODgyNCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="IBM Logo" class="css-vs5na0"/></article><article class="css-gu2vom"><style data-emotion-css="138rpve">.css-138rpve{width:80%;-webkit-filter:invert(100%);filter:invert(100%);}</style><img src="/openj9/static/adopt-open-jdk-7072a4c16b356c87671638dba5c860e9.png" alt="AdoptOpenJDK Logo" class="css-138rpve"/></article><article class="css-gu2vom"><img src="/openj9/static/oregon-state-university-logo-3c2d68263b3d6bd814701041f7626cbe.svg" alt="Oregon State University Logo" class="css-vs5na0"/></article><article class="css-gu2vom"><img src="/openj9/static/uni-new-brunswick-logo-6555470091976484ab5115fd4dc596ac.svg" alt="New Brunswick University Logo" class="css-vs5na0"/></article></div></section><style data-emotion-css="wqrdrc">.css-wqrdrc{padding-left:7%;padding-right:7%;padding-top:4rem;padding-bottom:4rem;background-color:#F5F9FC;}</style><section class="css-wqrdrc"><style data-emotion-css="rd3ir2">.css-rd3ir2{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);background-color:white;padding-left:5%;padding-right:5%;padding-top:2rem;padding-bottom:2rem;border-radius:0.5rem;}@media screen and (min-width:35rem){.css-rd3ir2{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-rd3ir2{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-rd3ir2{grid-template-columns:repeat(2,1fr);}}</style><div class="css-rd3ir2"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><article class="css-1b6n4o1"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">DOCS</h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">If you are new to OpenJ9, our documentation will help you get started. Out of the box, we expect you to discover a great experience, but we also have many tuning options to help you ramp up application performance.</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank" class="css-1575med">Go to docs</a></article><article class="css-1b6n4o1"><h3 class="css-4ddra2">BLOGS</h3><p class="css-fza3g9">Our blogs are written by developers, for developers. Read about their insights into up and coming technologies, take deep dives into OpenJ9 development, or simply hear about their experiences of working on the project.</p><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-1575med">Go to blogs</a></article></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -17,4 +17,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/about/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-742d9c9328e3978208ef.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-51cfc654fd38628b84c4.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/commons-995392a5e28deac70171.js" async=""></script><script src="/openj9/component---src-pages-about-js-c595eec620f6abb5c8ad.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/about/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-95eb74b93a53ac66e3a0.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-528a44fbfd1bc3044539.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-f3eca94263f09fdd722d.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/commons-2ee5517a8df806aebc87.js" async=""></script><script src="/openj9/component---src-pages-about-js-c595eec620f6abb5c8ad.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/chunk-map.json b/chunk-map.json
index 887fcfe..dfe99dc 100644
--- a/chunk-map.json
+++ b/chunk-map.json
@@ -1 +1 @@
-{"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-742d9c9328e3978208ef.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-51cfc654fd38628b84c4.js"]}
\ No newline at end of file
+{"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-95eb74b93a53ac66e3a0.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-528a44fbfd1bc3044539.js"]}
\ No newline at end of file
diff --git a/commons-2ee5517a8df806aebc87.js b/commons-2ee5517a8df806aebc87.js
new file mode 100644
index 0000000..a76dc3c
--- /dev/null
+++ b/commons-2ee5517a8df806aebc87.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{"2A+t":function(e,M,t){"use strict";t.d(M,"c",(function(){return D})),t.d(M,"a",(function(){return a})),t.d(M,"e",(function(){return u})),t.d(M,"d",(function(){return y})),t.d(M,"b",(function(){return O}));var r=t("qKvR"),i=t("ZdEh"),n=t("q1tI"),o=t.n(n),c=t("tZ2j"),N=t.n(c),j=t("ITVs"),g=function(e){if(!e)return null;var M={};for(var t in e)"sx"!==t&&(M[t]=e[t]);var r=function(e){if(e.sx||e.css)return function(M){return[Object(i.a)(e.sx)(M),"function"==typeof e.css?e.css(M):e.css]}}(e);return r&&(M.css=r),M},D=function(e,M){for(var t=[],i=arguments.length-2;i-- >0;)t[i]=arguments[i+2];return r.c.apply(void 0,[e,g(M)].concat(t))},a=o.a.createContext({__EMOTION_VERSION__:j.a,theme:null}),u=function(){return o.a.useContext(a)},I="function"==typeof Symbol&&Symbol.for,s=I?Symbol.for("react.element"):60103,T=I?Symbol.for("react.forward_ref"):60103,l=function(e){return!!e&&"object"==typeof e&&e.$$typeof!==s&&e.$$typeof!==T},L=function(e,M,t){return M},y=function(e,M){return N()(e,M,{isMergeableObject:l,arrayMerge:L})};y.all=function(){for(var e=[],M=arguments.length;M--;)e[M]=arguments[M];return N.a.all(e,{isMergeableObject:l,arrayMerge:L})};var z=function(e){var M=e.context,t=e.children;return D(r.b.Provider,{value:M.theme},D(a.Provider,{value:M,children:t}))},O=function(e){var M=e.theme,t=e.children,r=u();var i="function"==typeof M?Object.assign({},r,{theme:M(r.theme)}):y.all({},r,{theme:M});return D(z,{context:i,children:t})}},"8+s/":function(e,M,t){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var i=t("q1tI"),n=r(i),o=r(t("Gytx"));function c(e,M,t){return M in e?Object.defineProperty(e,M,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[M]=t,e}var N=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,M,t){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof M)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==t&&"function"!=typeof t)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var j,g=[];function D(){j=e(g.map((function(e){return e.props}))),a.canUseDOM?M(j):t&&(j=t(j))}var a=function(e){var M,t;function i(){return e.apply(this,arguments)||this}t=e,(M=i).prototype=Object.create(t.prototype),M.prototype.constructor=M,M.__proto__=t,i.peek=function(){return j},i.rewind=function(){if(i.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=j;return j=void 0,g=[],e};var c=i.prototype;return c.shouldComponentUpdate=function(e){return!o(e,this.props)},c.componentWillMount=function(){g.push(this),D()},c.componentDidUpdate=function(){D()},c.componentWillUnmount=function(){var e=g.indexOf(this);g.splice(e,1),D()},c.render=function(){return n.createElement(r,this.props)},i}(i.Component);return c(a,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),c(a,"canUseDOM",N),a}}},"9uj6":function(e,M,t){"use strict";var r=t("4qRI"),i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,n=Object(r.a)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}));M.a=n},Bl7J:function(e,M,t){"use strict";var r=t("q1tI"),i=t.n(r),n=t("2A+t"),o=t("qKvR"),c=t("ZdEh"),N=function(e){return"--theme-ui-"+e},j=function(e,M){return"var("+N(e)+", "+M+")"},g=function(){for(var e=[],M=arguments.length;M--;)e[M]=arguments[M];return e.filter(Boolean).join("-")},D={fontWeights:!0,lineHeights:!0},a={useCustomProperties:!0,initialColorModeName:!0,initialColorMode:!0},u=function(e,M){return"number"!=typeof M||D[e]?M:M+"px"},I=function e(M,t){var r={};for(var i in t)if("modes"!==i){var n=g(M,i),o=t[i];o&&"object"==typeof o?r=Object.assign({},r,e(n,o)):r[N(n)]=o}return r},s=function(e){try{return window.localStorage.getItem("theme-ui-color-mode")||e}catch(M){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",M)}},T=function(e){try{window.localStorage.setItem("theme-ui-color-mode",e)}catch(M){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",M)}},l=function(e){void 0===e&&(e={});var M=i.a.useState(e.initialColorModeName||"default"),t=M[0],r=M[1];return i.a.useEffect((function(){var M=s();if(document.body.classList.remove("theme-ui-"+M),M||!e.useColorSchemeMediaQuery){var i,n,o;M&&M!==t&&r(M)}else{var c=(i="(prefers-color-scheme: dark)",n=window.matchMedia?window.matchMedia(i):{},o=window.matchMedia?window.matchMedia("(prefers-color-scheme: light)"):{},n.media===i&&n.matches?"dark":"(prefers-color-scheme: light)"===o.media&&o.matches?"light":"default");r(c)}}),[]),i.a.useEffect((function(){t&&T(t)}),[t]),[t,r]},L=function(){return Object(n.c)(o.a,{styles:function(e){return function(e){if(void 0===e&&(e={}),!e.colors||!1===e.useBodyStyles)return{};if(!1===e.useCustomProperties||!e.colors.modes)return Object(c.a)({body:{color:"text",bg:"background"}})(e);var M=e.rawColors||e.colors,t=M.modes,r=I("colors",M);return Object.keys(t).forEach((function(e){r["&.theme-ui-"+e]=I("colors",t[e])})),Object(c.a)({body:Object.assign({},r,{color:"text",bg:"background"})})(e)}(e)}})},y=function(e){var M=e.children,t=Object(n.e)(),r=l(t.theme),i=r[0],N=r[1],D=function(e,M){if(!M)return e;var t=Object(c.b)(e,"colors.modes",{});return n.d.all({},e,{colors:Object(c.b)(t,M,{})})}(t.theme||{},i),I=Object.assign({},D);!1!==D.useCustomProperties&&(I.colors=function e(M,t,r){var i=Array.isArray(M)?[]:{};for(var n in M){var o=M[n],c=g(t,n);if(o&&"object"==typeof o)i[n]=e(o,c,n);else if(a[n])i[n]=o;else{var N=u(r||n,o);i[n]=j(c,N)}}return i}(I.colors,"colors"));var s=Object.assign({},t,{theme:D,colorMode:i,setColorMode:N});return Object(n.c)(o.b.Provider,{value:I},Object(n.c)(n.a.Provider,{value:s},Object(n.c)(L,{key:"color-mode"}),M))},z=t("MXbp"),O=function(e,M,t,r,i){for(M=M&&M.split?M.split("."):[M],r=0;r<M.length;r++)e=e?e[M[r]]:i;return e===i?t:e},A=[40,52,64].map((function(e){return e+"em"})),E={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},w={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},d={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},x={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},C=function(e,M){if("number"!=typeof M||M>=0)return O(e,M,M);var t=Math.abs(M),r=O(e,t,t);return"string"==typeof r?"-"+r:-1*r},p=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,M){var t;return Object.assign({},e,((t={})[M]=C,t))}),{}),S=function e(M){return function(t){void 0===t&&(t={});var r=Object.assign({},E,t.theme||t),i={},n=function(e){return function(M){var t={},r=O(M,"breakpoints",A),i=[null].concat(r.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var n in e){var o="function"==typeof e[n]?e[n](M):e[n];if(null!=o)if(Array.isArray(o))for(var c=0;c<o.slice(0,i.length).length;c++){var N=i[c];N?(t[N]=t[N]||{},null!=o[c]&&(t[N][n]=o[c])):t[n]=o[c]}else t[n]=o}return t}}("function"==typeof M?M(r):M)(r);for(var o in n){var c=n[o],N="function"==typeof c?c(r):c;if("variant"!==o)if(N&&"object"==typeof N)i[o]=e(N)(r);else{var j=O(w,o,o),g=O(x,j),D=O(r,g,O(r,j,{})),a=O(p,j,O)(D,N,N);if(d[j])for(var u=d[j],I=0;I<u.length;I++)i[u[I]]=a;else i[j]=a}else{var s=e(O(r,N))(r);i=Object.assign({},i,s)}}return i}},f=function(){return Object(n.c)(o.a,{styles:function(e){if(!1===e.useBodyStyles||e.styles&&!e.styles.root)return!1;var M=!1===e.useBorderBox?null:"border-box";return S({"*":{boxSizing:M},body:{margin:0,variant:"styles.root"}})(e)}})},b=function(e){var M=e.theme,t=e.components,r=e.children;return"function"==typeof Object(n.e)().setColorMode?Object(n.c)(n.b,{theme:M},Object(n.c)(z.a,{components:t,children:r})):Object(n.c)(n.b,{theme:M},Object(n.c)(y,null,Object(n.c)(f),Object(n.c)(z.a,{components:t,children:r})))},m={fonts:{heading:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'",body:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'"},colors:{darkText:"#4d4f50",lightText:"#d8d8d8",links:"#5DA7A3",primary:"#434343",secondary:"#5DA7A3",secondaryDark:"#5d9da3",accent:"#F8D000",background:"#FFFFFF",lightGrey:"#F1F1F1"},radii:{button:"2.5rem",card:"0.5rem"},breakpoints:["35rem","62.5rem","85rem","120rem"],fontSizes:[16,18,20,24,28,36],space:[0,8,16,24,32,40],fontWeights:{body:400,heading:700},lineHeights:{body:1.5,heading:1.125},buttons:{primary:{backgroundColor:"secondary",color:"white",borderRadius:"button",height:"2rem",width:"10rem",border:"none",fontFamily:"body",fontSize:0,"&:hover":{cursor:"pointer",backgroundColor:"secondaryDark",borderColor:"secondaryDark",textDecoration:"none",color:"white"}},secondary:{variant:"buttons.primary",width:"12rem"}},text:{heading:{fontFamily:"heading",lineHeight:"heading",fontWeight:"heading",marginY:2}},styles:{root:{fontFamily:"body",lineHeight:"body",fontWeight:"body"},h1:{variant:"text.heading",fontSize:5},h2:{variant:"text.heading",fontSize:4},h3:{variant:"text.heading",fontSize:3},h4:{variant:"text.heading",fontSize:2},h5:{variant:"text.heading",fontSize:1},h6:{variant:"text.heading",fontSize:0},p:{marginBottom:5,fontSize:1}},lists:{navRow:{display:"flex",listStyle:"none",justifyContent:"flex-end",li:{padding:1,marginX:1,a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}},"li:first-of-type":{marginLeft:0},"li:last-child":{marginRight:0,paddingRight:0}},navCol:{variant:"lists.navRow",flexDirection:"column",li:{padding:1,paddingLeft:0}}},borders:{cardBorder:"#5DA7A3 0.625rem solid"},shadows:{cardShadow:"#DADADA 0 0 1.25rem"}},k=t("Wbzz"),h=t("TwYP"),Q=t.n(h),Y=t("taE0"),U=t.n(Y),v=t("Q4rR"),B=t.n(v),P=t("JAXw"),G=t.n(P),R=t("Fy0m"),Z=t.n(R),_=function(e){var M=e.isHome;return Object(n.c)("header",{sx:{display:["none","none","flex","flex"],backgroundColor:M?"#00000000":"primary",position:M?"absolute":null,width:"100%",color:"lightText",paddingX:5,paddingY:4,alignItems:"center"}},Object(n.c)("div",{sx:{flex:1,opacity:M?0:1,pointerEvents:M?"none":"all"}},Object(n.c)(k.Link,{to:"/"},Object(n.c)("img",{src:Q.a,alt:"OpenJ9 Logo"}))),Object(n.c)("nav",{sx:{flex:2}},Object(n.c)("ul",{sx:{variant:"lists.navRow"}},Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/"},"Home")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/about"},"About")),Object(n.c)("li",null,Object(n.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/performance"},"Performance")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/news"},"News")))),Object(n.c)("nav",{sx:{flex:1}},Object(n.c)("ul",{sx:{variant:"lists.navRow"}},Object(n.c)("li",null,Object(n.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:G.a,alt:"Twitter Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://github.com/eclipse-openj9/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:B.a,alt:"GitHub Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:U.a,alt:"Slack logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:Z.a,alt:"Stack Overflow logo"}))))))},H=t("fuUq"),W=t.n(H),X=function(){return Object(n.c)("footer",{sx:{display:"flex",backgroundColor:"primary",color:"white",flexWrap:"wrap",padding:"1rem",paddingBottom:["3rem","3rem","0","0"],flexDirection:"reverse-column"}},Object(n.c)("section",{sx:{flex:"50%",display:["flex","none","none","none"],alignItems:["center","center","flex-end","flex-end"],flexDirection:"column"}},Object(n.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:W.a,alt:"Eclipse Incubator Logo"})),Object(n.c)(z.b.h6,{sx:{fontSize:"0.9rem"}},"OpenJ9 is an Eclipse Incubator Project")),Object(n.c)("nav",{sx:{display:["flex","flex","flex","flex"],flex:["100%","50%","50%","50%"],flexDirection:["column","row","row","row"],justifyContent:"center",a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(n.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem","0.8rem","0.8rem"],marginRight:"1.1rem",padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(n.c)(z.b.h4,{sx:{marginBottom:"0.2rem"}},"Docs"),Object(n.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/openj9_newuser/",rel:"noopener noreferrer",target:"_blank"},"New to OpenJ9?")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/introduction/",rel:"noopener noreferrer",target:"_blank"},"Getting started")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/cmdline_specifying/",rel:"noopener noreferrer",target:"_blank"},"Command-line options")))),Object(n.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem",0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(n.c)(z.b.h4,{sx:{marginBottom:"0.2rem"}},"Resources"),Object(n.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(n.c)("li",null,Object(n.c)(k.Link,{sx:{textDecoration:"none",color:"white"},to:"/about"},"About")),Object(n.c)("li",null,Object(n.c)(k.Link,{sx:{textDecoration:"none",color:"white"},to:"/performance"},"Performance")))),Object(n.c)("section",{sx:{flex:1,paddingLeft:["2rem",0,0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"],marginLeft:[0,"1rem"]}},Object(n.c)(z.b.h4,{sx:{marginBottom:"0.2rem"}},"Community"),Object(n.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(n.c)("li",null,Object(n.c)(k.Link,{sx:{textDecoration:"none",color:"white"},to:"/news"},"News")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://blog.openj9.org/",rel:"noopener noreferrer",target:"_blank"},"Blogs"))))),Object(n.c)("section",{sx:{flex:"25%",display:["none","flex","flex","flex"],alignItems:["center","flex-end","flex-end","flex-end"],flexDirection:"column"}},Object(n.c)(z.b.h6,{sx:{fontSize:"0.9rem",marginTop:"1.3rem",marginLeft:"0.6rem"}},"OpenJ9 is an Eclipse Incubator Project"),Object(n.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:W.a,alt:"Eclipse Incubator Logo"}))),Object(n.c)("div",{sx:{height:"0.15rem",backgroundColor:"secondary",width:"100%",marginY:2}}),Object(n.c)("nav",{sx:{width:"70%"}},Object(n.c)("ul",{sx:{display:"flex",flexDirection:["column","row","row","row"],li:{padding:"0.4rem",fontSize:["0.9rem","0.7rem","1rem","1rem"],listStyleType:"none",paddingLeft:"1rem",color:"white"},a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(n.c)("li",{sx:{paddingLeft:["1rem","0rem !important","0.5rem !important","0.5 !important"]}},Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/",rel:"noopener noreferrer",target:"_blank"},"Eclipse Foundation Website ")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/privacy.php",rel:"noopener noreferrer",target:"_blank"},"Privacy Policy")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/termsofuse.php",rel:"noopener noreferrer",target:"_blank"},"Terms of Use")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/copyright.php",rel:"noopener noreferrer",target:"_blank"},"Copyright Agent")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/",rel:"noopener noreferrer",target:"_blank"},"Legal")))),Object(n.c)("nav",{sx:{display:["inline","inline","block","block"],flex:"30%"}},Object(n.c)("ul",{sx:{variant:"lists.navRow",justifyContent:["center","flex-end","flex-end","flex-end"]}},Object(n.c)("li",null,Object(n.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:G.a,alt:"Twitter Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://github.com/eclipse-openj9/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:B.a,alt:"GitHub Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:U.a,alt:"Slack logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:Z.a,alt:"Stack Overflow logo"}))))))},F=t("TJpk"),J=function(e){var M=e.title,t=e.description,r=Object(k.useStaticQuery)(K).site.siteMetadata,i=r.defaultTitle,n=r.titleTemplate,c=r.defaultDescription,N=r.siteUrl,j=r.twitterUsername,g={title:M||i,description:t||c,image:r.defaultImage,url:""+N};return Object(o.c)(F.Helmet,{title:g.title,titleTemplate:n},Object(o.c)("meta",{name:"description",content:g.description}),Object(o.c)("meta",{name:"image",content:g.image}),g.url&&Object(o.c)("meta",{property:"og:url",content:g.url}),g.title&&Object(o.c)("meta",{property:"og:title",content:g.title}),g.description&&Object(o.c)("meta",{property:"og:description",content:g.description}),g.image&&Object(o.c)("meta",{property:"og:image",content:g.image}),Object(o.c)("meta",{name:"twitter:card",content:"summary_large_image"}),j&&Object(o.c)("meta",{name:"twitter:creator",content:j}),g.title&&Object(o.c)("meta",{name:"twitter:title",content:g.title}),g.description&&Object(o.c)("meta",{name:"twitter:description",content:g.description}),Object(o.c)("link",{href:"https://fonts.googleapis.com/css2?family=Gelasio:ital,wght@0,400;0,700;1,400;1,700&display=swap",rel:"stylesheet"}),Object(o.c)("link",{rel:"stylesheet",type:"text/css",href:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css"}),Object(o.c)("script",{src:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"}))},V=J;J.defaultProps={title:null,description:null};var K="965098542",q=function(e){return Object(o.c)(V,{title:e.title,description:e.description})},$=function(){return Object(n.c)("nav",{sx:{display:["flex","flex","none","none"],justifyContent:"center",alignItems:"center",position:"fixed",width:"100%",bottom:"0",backgroundColor:"white",height:"3rem",boxShadow:"0 0.5rem 2rem grey",zIndex:"9999"}},Object(n.c)("ul",{sx:{variant:"lists.navRow",li:{a:{color:"black",textDecoration:"none"}},justifyContent:"space-evenly",width:"100%"}},Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/"},"Home")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/about"},"About")," "),Object(n.c)("li",null,Object(n.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")," "),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/performance"},"Performance")," "),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/news"},"News")," ")))};M.a=function(e){var M=e.children,t=e.isHome,r=e.title,i=e.description;return Object(o.c)(b,{theme:m},Object(o.c)(o.a,{styles:function(e){return{"*":{padding:0,margin:0}}}}),Object(o.c)(q,{title:r,description:i}),Object(o.c)(_,{isHome:t}),Object(o.c)($,null),M,Object(o.c)(X,null))}},Fy0m:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo="},Gytx:function(e,M){e.exports=function(e,M,t,r){var i=t?t.call(r,e,M):void 0;if(void 0!==i)return!!i;if(e===M)return!0;if("object"!=typeof e||!e||"object"!=typeof M||!M)return!1;var n=Object.keys(e),o=Object.keys(M);if(n.length!==o.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(M),N=0;N<n.length;N++){var j=n[N];if(!c(j))return!1;var g=e[j],D=M[j];if(!1===(i=t?t.call(r,g,D,j):void 0)||void 0===i&&g!==D)return!1}return!0}},ITVs:function(e){e.exports=JSON.parse('{"a":"10.0.34"}')},JAXw:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},MXbp:function(e,M,t){"use strict";t.d(M,"b",(function(){return b})),t.d(M,"a",(function(){return k}));var r=t("2A+t"),i=t("ZdEh"),n=t("q1tI"),o=t.n(n),c=t("qKvR"),N=t("lSNA"),j=t.n(N),g=t("9uj6"),D=t("SIPS"),a=t("MiSq"),u=g.a,I=function(e){return"theme"!==e&&"innerRef"!==e},s=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?u:I};function T(e,M){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);M&&(r=r.filter((function(M){return Object.getOwnPropertyDescriptor(e,M).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var M=1;M<arguments.length;M++){var t=null!=arguments[M]?arguments[M]:{};M%2?T(t,!0).forEach((function(M){j()(e,M,t[M])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):T(t).forEach((function(M){Object.defineProperty(e,M,Object.getOwnPropertyDescriptor(t,M))}))}return e}var L=function e(M,t){var r,i,o;void 0!==t&&(r=t.label,o=t.target,i=M.__emotion_forwardProp&&t.shouldForwardProp?function(e){return M.__emotion_forwardProp(e)&&t.shouldForwardProp(e)}:t.shouldForwardProp);var N=M.__emotion_real===M,j=N&&M.__emotion_base||M;"function"!=typeof i&&N&&(i=M.__emotion_forwardProp);var g=i||s(j),u=!g("as");return function(){var I=arguments,T=N&&void 0!==M.__emotion_styles?M.__emotion_styles.slice(0):[];if(void 0!==r&&T.push("label:"+r+";"),null==I[0]||void 0===I[0].raw)T.push.apply(T,I);else{0,T.push(I[0][0]);for(var L=I.length,y=1;y<L;y++)T.push(I[y],I[0][y])}var z=Object(c.d)((function(e,M,t){return Object(n.createElement)(c.b.Consumer,null,(function(r){var c=u&&e.as||j,N="",I=[],l=e;if(null==e.theme){for(var L in l={},e)l[L]=e[L];l.theme=r}"string"==typeof e.className?N=Object(D.a)(M.registered,I,e.className):null!=e.className&&(N=e.className+" ");var y=Object(a.a)(T.concat(I),M.registered,l);Object(D.b)(M,y,"string"==typeof c);N+=M.key+"-"+y.name,void 0!==o&&(N+=" "+o);var z=u&&void 0===i?s(c):g,O={};for(var A in e)u&&"as"===A||z(A)&&(O[A]=e[A]);return O.className=N,O.ref=t||e.innerRef,Object(n.createElement)(c,O)}))}));return z.displayName=void 0!==r?r:"Styled("+("string"==typeof j?j:j.displayName||j.name||"Component")+")",z.defaultProps=M.defaultProps,z.__emotion_real=z,z.__emotion_base=j,z.__emotion_styles=T,z.__emotion_forwardProp=i,Object.defineProperty(z,"toString",{value:function(){return"."+o}}),z.withComponent=function(M,r){return e(M,void 0!==r?l({},t||{},{},r):t).apply(void 0,T)},z}}.bind();["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){L[e]=L(e)}));var y=L;function z(e,M,t){return M in e?Object.defineProperty(e,M,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[M]=t,e}function O(e,M){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);M&&(r=r.filter((function(M){return Object.getOwnPropertyDescriptor(e,M).enumerable}))),t.push.apply(t,r)}return t}function A(e){for(var M=1;M<arguments.length;M++){var t=null!=arguments[M]?arguments[M]:{};M%2?O(Object(t),!0).forEach((function(M){z(e,M,t[M])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):O(Object(t)).forEach((function(M){Object.defineProperty(e,M,Object.getOwnPropertyDescriptor(t,M))}))}return e}function E(e,M){if(null==e)return{};var t,r,i=function(e,M){if(null==e)return{};var t,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)t=n[r],M.indexOf(t)>=0||(i[t]=e[t]);return i}(e,M);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)t=n[r],M.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var w=o.a.createContext({}),d=function(e){var M=o.a.useContext(w),t=M;return e&&(t="function"==typeof e?e(M):A(A({},M),e)),t},x=function(e){var M=d(e.components);return o.a.createElement(w.Provider,{value:M},e.children)},C={inlineCode:"code",wrapper:function(e){var M=e.children;return o.a.createElement(o.a.Fragment,{},M)}},p=o.a.forwardRef((function(e,M){var t=e.components,r=e.mdxType,i=e.originalType,n=e.parentName,c=E(e,["components","mdxType","originalType","parentName"]),N=d(t),j=r,g=N["".concat(n,".").concat(j)]||N[j]||C[j]||i;return t?o.a.createElement(g,A(A({ref:M},c),{},{components:t})):o.a.createElement(g,A({ref:M},c))}));p.displayName="MDXCreateElement";var S={inlineCode:"code",thematicBreak:"hr",root:"div"},f=function(e){return function(M){return Object(i.a)(Object(i.b)(M.theme,"styles."+e))(M.theme)}},b=y("div")(f("div")),m={};["p","b","i","a","h1","h2","h3","h4","h5","h6","img","pre","code","ol","ul","li","blockquote","hr","em","table","tr","th","td","em","strong","del","inlineCode","thematicBreak","div","root"].forEach((function(e){var M;m[e]=y(S[M=e]||M)(f(e)),b[e]=m[e]}));var k=function(e){var M,t,i=e.components,n=e.children,o=d();return Object(r.c)(x,{components:(M=Object.assign({},o,i),t=Object.assign({},m),Object.keys(M).forEach((function(e){t[e]=y(M[e])(f(e))})),t),children:n})}},Q4rR:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},TJpk:function(e,M,t){M.__esModule=!0,M.Helmet=void 0;var r=Object.assign||function(e){for(var M=1;M<arguments.length;M++){var t=arguments[M];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},i=function(){function e(e,M){for(var t=0;t<M.length;t++){var r=M[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(M,t,r){return t&&e(M.prototype,t),r&&e(M,r),M}}(),n=D(t("q1tI")),o=D(t("17x9")),c=D(t("8+s/")),N=D(t("bmMU")),j=t("v1p5"),g=t("hFT/");function D(e){return e&&e.__esModule?e:{default:e}}function a(e,M){var t={};for(var r in e)M.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}function u(e,M){if(!(e instanceof M))throw new TypeError("Cannot call a class as a function")}function I(e,M){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!M||"object"!=typeof M&&"function"!=typeof M?e:M}var s,T,l,L=(0,c.default)(j.reducePropsToState,j.handleClientStateChange,j.mapStateOnServer)((function(){return null})),y=(s=L,l=T=function(e){function M(){return u(this,M),I(this,e.apply(this,arguments))}return function(e,M){if("function"!=typeof M&&null!==M)throw new TypeError("Super expression must either be null or a function, not "+typeof M);e.prototype=Object.create(M&&M.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),M&&(Object.setPrototypeOf?Object.setPrototypeOf(e,M):e.__proto__=M)}(M,e),M.prototype.shouldComponentUpdate=function(e){return!(0,N.default)(this.props,e)},M.prototype.mapNestedChildrenToProps=function(e,M){if(!M)return null;switch(e.type){case g.TAG_NAMES.SCRIPT:case g.TAG_NAMES.NOSCRIPT:return{innerHTML:M};case g.TAG_NAMES.STYLE:return{cssText:M}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},M.prototype.flattenArrayTypeChildren=function(e){var M,t=e.child,i=e.arrayTypeChildren,n=e.newChildProps,o=e.nestedChildren;return r({},i,((M={})[t.type]=[].concat(i[t.type]||[],[r({},n,this.mapNestedChildrenToProps(t,o))]),M))},M.prototype.mapObjectTypeChildren=function(e){var M,t,i=e.child,n=e.newProps,o=e.newChildProps,c=e.nestedChildren;switch(i.type){case g.TAG_NAMES.TITLE:return r({},n,((M={})[i.type]=c,M.titleAttributes=r({},o),M));case g.TAG_NAMES.BODY:return r({},n,{bodyAttributes:r({},o)});case g.TAG_NAMES.HTML:return r({},n,{htmlAttributes:r({},o)})}return r({},n,((t={})[i.type]=r({},o),t))},M.prototype.mapArrayTypeChildrenToProps=function(e,M){var t=r({},M);return Object.keys(e).forEach((function(M){var i;t=r({},t,((i={})[M]=e[M],i))})),t},M.prototype.warnOnInvalidChildren=function(e,M){return!0},M.prototype.mapChildrenToProps=function(e,M){var t=this,r={};return n.default.Children.forEach(e,(function(e){if(e&&e.props){var i=e.props,n=i.children,o=a(i,["children"]),c=(0,j.convertReactPropstoHtmlAttributes)(o);switch(t.warnOnInvalidChildren(e,n),e.type){case g.TAG_NAMES.LINK:case g.TAG_NAMES.META:case g.TAG_NAMES.NOSCRIPT:case g.TAG_NAMES.SCRIPT:case g.TAG_NAMES.STYLE:r=t.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:c,nestedChildren:n});break;default:M=t.mapObjectTypeChildren({child:e,newProps:M,newChildProps:c,nestedChildren:n})}}})),M=this.mapArrayTypeChildrenToProps(r,M)},M.prototype.render=function(){var e=this.props,M=e.children,t=a(e,["children"]),i=r({},t);return M&&(i=this.mapChildrenToProps(M,i)),n.default.createElement(s,i)},i(M,null,[{key:"canUseDOM",set:function(e){s.canUseDOM=e}}]),M}(n.default.Component),T.propTypes={base:o.default.object,bodyAttributes:o.default.object,children:o.default.oneOfType([o.default.arrayOf(o.default.node),o.default.node]),defaultTitle:o.default.string,defer:o.default.bool,encodeSpecialCharacters:o.default.bool,htmlAttributes:o.default.object,link:o.default.arrayOf(o.default.object),meta:o.default.arrayOf(o.default.object),noscript:o.default.arrayOf(o.default.object),onChangeClientState:o.default.func,script:o.default.arrayOf(o.default.object),style:o.default.arrayOf(o.default.object),title:o.default.string,titleAttributes:o.default.object,titleTemplate:o.default.string},T.defaultProps={defer:!0,encodeSpecialCharacters:!0},T.peek=s.peek,T.rewind=function(){var e=s.rewind();return e||(e=(0,j.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},l);y.renderStatic=y.rewind,M.Helmet=y,M.default=y},TwYP:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},ZdEh:function(e,M,t){"use strict";t.d(M,"b",(function(){return r})),t.d(M,"a",(function(){return D}));var r=function(e,M,t,r,i){for(M=M&&M.split?M.split("."):[M],r=0;r<M.length;r++)e=e?e[M[r]]:i;return e===i?t:e},i=[40,52,64].map((function(e){return e+"em"})),n={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},o={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},c={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},N={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},j=function(e,M){if("number"!=typeof M||M>=0)return r(e,M,M);var t=Math.abs(M),i=r(e,t,t);return"string"==typeof i?"-"+i:-1*i},g=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,M){var t;return Object.assign({},e,((t={})[M]=j,t))}),{}),D=function e(M){return function(t){void 0===t&&(t={});var j=Object.assign({},n,t.theme||t),D={},a=function(e){return function(M){var t={},n=r(M,"breakpoints",i),o=[null].concat(n.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var c in e){var N="function"==typeof e[c]?e[c](M):e[c];if(null!=N)if(Array.isArray(N))for(var j=0;j<N.slice(0,o.length).length;j++){var g=o[j];g?(t[g]=t[g]||{},null!=N[j]&&(t[g][c]=N[j])):t[c]=N[j]}else t[c]=N}return t}}("function"==typeof M?M(j):M)(j);for(var u in a){var I=a[u],s="function"==typeof I?I(j):I;if("variant"!==u)if(s&&"object"==typeof s)D[u]=e(s)(j);else{var T=r(o,u,u),l=r(N,T),L=r(j,l,r(j,T,{})),y=r(g,T,r)(L,s,s);if(c[T])for(var z=c[T],O=0;O<z.length;O++)D[z[O]]=y;else D[T]=y}else{var A=e(r(j,s))(j);D=Object.assign({},D,A)}}return D}}},bmMU:function(e,M,t){"use strict";var r=Array.isArray,i=Object.keys,n=Object.prototype.hasOwnProperty,o="undefined"!=typeof Element;e.exports=function(e,M){try{return function e(M,t){if(M===t)return!0;if(M&&t&&"object"==typeof M&&"object"==typeof t){var c,N,j,g=r(M),D=r(t);if(g&&D){if((N=M.length)!=t.length)return!1;for(c=N;0!=c--;)if(!e(M[c],t[c]))return!1;return!0}if(g!=D)return!1;var a=M instanceof Date,u=t instanceof Date;if(a!=u)return!1;if(a&&u)return M.getTime()==t.getTime();var I=M instanceof RegExp,s=t instanceof RegExp;if(I!=s)return!1;if(I&&s)return M.toString()==t.toString();var T=i(M);if((N=T.length)!==i(t).length)return!1;for(c=N;0!=c--;)if(!n.call(t,T[c]))return!1;if(o&&M instanceof Element&&t instanceof Element)return M===t;for(c=N;0!=c--;)if(!("_owner"===(j=T[c])&&M.$$typeof||e(M[j],t[j])))return!1;return!0}return M!=M&&t!=t}(e,M)}catch(t){if(t.message&&t.message.match(/stack|recursion/i)||-2146828260===t.number)return console.warn("Warning: react-fast-compare does not handle circular references.",t.name,t.message),!1;throw t}}},fuUq:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},"hFT/":function(e,M){M.__esModule=!0;M.ATTRIBUTE_NAMES={BODY:"bodyAttributes",HTML:"htmlAttributes",TITLE:"titleAttributes"};var t=M.TAG_NAMES={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},r=(M.VALID_TAG_NAMES=Object.keys(t).map((function(e){return t[e]})),M.TAG_PROPERTIES={CHARSET:"charset",CSS_TEXT:"cssText",HREF:"href",HTTPEQUIV:"http-equiv",INNER_HTML:"innerHTML",ITEM_PROP:"itemprop",NAME:"name",PROPERTY:"property",REL:"rel",SRC:"src"},M.REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"});M.HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate"},M.HTML_TAG_MAP=Object.keys(r).reduce((function(e,M){return e[r[M]]=M,e}),{}),M.SELF_CLOSING_TAGS=[t.NOSCRIPT,t.SCRIPT,t.STYLE],M.HELMET_ATTRIBUTE="data-react-helmet"},lSNA:function(e,M){e.exports=function(e,M,t){return M in e?Object.defineProperty(e,M,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[M]=t,e}},tZ2j:function(e,M,t){"use strict";var r=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var M=Object.prototype.toString.call(e);return"[object RegExp]"===M||"[object Date]"===M||function(e){return e.$$typeof===i}(e)}(e)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,M){return!1!==M.clone&&M.isMergeableObject(e)?g((t=e,Array.isArray(t)?[]:{}),e,M):e;var t}function o(e,M,t){return e.concat(M).map((function(e){return n(e,t)}))}function c(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(M){return e.propertyIsEnumerable(M)})):[]}(e))}function N(e,M){try{return M in e}catch(t){return!1}}function j(e,M,t){var r={};return t.isMergeableObject(e)&&c(e).forEach((function(M){r[M]=n(e[M],t)})),c(M).forEach((function(i){(function(e,M){return N(e,M)&&!(Object.hasOwnProperty.call(e,M)&&Object.propertyIsEnumerable.call(e,M))})(e,i)||(N(e,i)&&t.isMergeableObject(M[i])?r[i]=function(e,M){if(!M.customMerge)return g;var t=M.customMerge(e);return"function"==typeof t?t:g}(i,t)(e[i],M[i],t):r[i]=n(M[i],t))})),r}function g(e,M,t){(t=t||{}).arrayMerge=t.arrayMerge||o,t.isMergeableObject=t.isMergeableObject||r,t.cloneUnlessOtherwiseSpecified=n;var i=Array.isArray(M);return i===Array.isArray(e)?i?t.arrayMerge(e,M,t):j(e,M,t):n(M,t)}g.all=function(e,M){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,t){return g(e,t,M)}),{})};var D=g;e.exports=D},taE0:function(e,M){e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+"},v1p5:function(e,M,t){(function(e){M.__esModule=!0,M.warn=M.requestAnimationFrame=M.reducePropsToState=M.mapStateOnServer=M.handleClientStateChange=M.convertReactPropstoHtmlAttributes=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=Object.assign||function(e){for(var M=1;M<arguments.length;M++){var t=arguments[M];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},n=N(t("q1tI")),o=N(t("6qGY")),c=t("hFT/");function N(e){return e&&e.__esModule?e:{default:e}}var j,g=function(e){var M=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===M?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")},D=function(e){var M=T(e,c.TAG_NAMES.TITLE),t=T(e,c.HELMET_PROPS.TITLE_TEMPLATE);if(t&&M)return t.replace(/%s/g,(function(){return M}));var r=T(e,c.HELMET_PROPS.DEFAULT_TITLE);return M||r||void 0},a=function(e){return T(e,c.HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},u=function(e,M){return M.filter((function(M){return void 0!==M[e]})).map((function(M){return M[e]})).reduce((function(e,M){return i({},e,M)}),{})},I=function(e,M){return M.filter((function(e){return void 0!==e[c.TAG_NAMES.BASE]})).map((function(e){return e[c.TAG_NAMES.BASE]})).reverse().reduce((function(M,t){if(!M.length)for(var r=Object.keys(t),i=0;i<r.length;i++){var n=r[i].toLowerCase();if(-1!==e.indexOf(n)&&t[n])return M.concat(t)}return M}),[])},s=function(e,M,t){var i={};return t.filter((function(M){return!!Array.isArray(M[e])||(void 0!==M[e]&&O("Helmet: "+e+' should be of type "Array". Instead found type "'+r(M[e])+'"'),!1)})).map((function(M){return M[e]})).reverse().reduce((function(e,t){var r={};t.filter((function(e){for(var t=void 0,n=Object.keys(e),o=0;o<n.length;o++){var N=n[o],j=N.toLowerCase();-1===M.indexOf(j)||t===c.TAG_PROPERTIES.REL&&"canonical"===e[t].toLowerCase()||j===c.TAG_PROPERTIES.REL&&"stylesheet"===e[j].toLowerCase()||(t=j),-1===M.indexOf(N)||N!==c.TAG_PROPERTIES.INNER_HTML&&N!==c.TAG_PROPERTIES.CSS_TEXT&&N!==c.TAG_PROPERTIES.ITEM_PROP||(t=N)}if(!t||!e[t])return!1;var g=e[t].toLowerCase();return i[t]||(i[t]={}),r[t]||(r[t]={}),!i[t][g]&&(r[t][g]=!0,!0)})).reverse().forEach((function(M){return e.push(M)}));for(var n=Object.keys(r),N=0;N<n.length;N++){var j=n[N],g=(0,o.default)({},i[j],r[j]);i[j]=g}return e}),[]).reverse()},T=function(e,M){for(var t=e.length-1;t>=0;t--){var r=e[t];if(r.hasOwnProperty(M))return r[M]}return null},l=(j=Date.now(),function(e){var M=Date.now();M-j>16?(j=M,e(M)):setTimeout((function(){l(e)}),0)}),L=function(e){return clearTimeout(e)},y="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||l:e.requestAnimationFrame||l,z="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||L:e.cancelAnimationFrame||L,O=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},A=null,E=function(e,M){var t=e.baseTag,r=e.bodyAttributes,i=e.htmlAttributes,n=e.linkTags,o=e.metaTags,N=e.noscriptTags,j=e.onChangeClientState,g=e.scriptTags,D=e.styleTags,a=e.title,u=e.titleAttributes;x(c.TAG_NAMES.BODY,r),x(c.TAG_NAMES.HTML,i),d(a,u);var I={baseTag:C(c.TAG_NAMES.BASE,t),linkTags:C(c.TAG_NAMES.LINK,n),metaTags:C(c.TAG_NAMES.META,o),noscriptTags:C(c.TAG_NAMES.NOSCRIPT,N),scriptTags:C(c.TAG_NAMES.SCRIPT,g),styleTags:C(c.TAG_NAMES.STYLE,D)},s={},T={};Object.keys(I).forEach((function(e){var M=I[e],t=M.newTags,r=M.oldTags;t.length&&(s[e]=t),r.length&&(T[e]=I[e].oldTags)})),M&&M(),j(e,s,T)},w=function(e){return Array.isArray(e)?e.join(""):e},d=function(e,M){void 0!==e&&document.title!==e&&(document.title=w(e)),x(c.TAG_NAMES.TITLE,M)},x=function(e,M){var t=document.getElementsByTagName(e)[0];if(t){for(var r=t.getAttribute(c.HELMET_ATTRIBUTE),i=r?r.split(","):[],n=[].concat(i),o=Object.keys(M),N=0;N<o.length;N++){var j=o[N],g=M[j]||"";t.getAttribute(j)!==g&&t.setAttribute(j,g),-1===i.indexOf(j)&&i.push(j);var D=n.indexOf(j);-1!==D&&n.splice(D,1)}for(var a=n.length-1;a>=0;a--)t.removeAttribute(n[a]);i.length===n.length?t.removeAttribute(c.HELMET_ATTRIBUTE):t.getAttribute(c.HELMET_ATTRIBUTE)!==o.join(",")&&t.setAttribute(c.HELMET_ATTRIBUTE,o.join(","))}},C=function(e,M){var t=document.head||document.querySelector(c.TAG_NAMES.HEAD),r=t.querySelectorAll(e+"["+c.HELMET_ATTRIBUTE+"]"),i=Array.prototype.slice.call(r),n=[],o=void 0;return M&&M.length&&M.forEach((function(M){var t=document.createElement(e);for(var r in M)if(M.hasOwnProperty(r))if(r===c.TAG_PROPERTIES.INNER_HTML)t.innerHTML=M.innerHTML;else if(r===c.TAG_PROPERTIES.CSS_TEXT)t.styleSheet?t.styleSheet.cssText=M.cssText:t.appendChild(document.createTextNode(M.cssText));else{var N=void 0===M[r]?"":M[r];t.setAttribute(r,N)}t.setAttribute(c.HELMET_ATTRIBUTE,"true"),i.some((function(e,M){return o=M,t.isEqualNode(e)}))?i.splice(o,1):n.push(t)})),i.forEach((function(e){return e.parentNode.removeChild(e)})),n.forEach((function(e){return t.appendChild(e)})),{oldTags:i,newTags:n}},p=function(e){return Object.keys(e).reduce((function(M,t){var r=void 0!==e[t]?t+'="'+e[t]+'"':""+t;return M?M+" "+r:r}),"")},S=function(e){var M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(M,t){return M[c.REACT_TAG_MAP[t]||t]=e[t],M}),M)},f=function(e,M,t){switch(e){case c.TAG_NAMES.TITLE:return{toComponent:function(){return e=M.title,t=M.titleAttributes,(r={key:e})[c.HELMET_ATTRIBUTE]=!0,i=S(t,r),[n.default.createElement(c.TAG_NAMES.TITLE,i,e)];var e,t,r,i},toString:function(){return function(e,M,t,r){var i=p(t),n=w(M);return i?"<"+e+" "+c.HELMET_ATTRIBUTE+'="true" '+i+">"+g(n,r)+"</"+e+">":"<"+e+" "+c.HELMET_ATTRIBUTE+'="true">'+g(n,r)+"</"+e+">"}(e,M.title,M.titleAttributes,t)}};case c.ATTRIBUTE_NAMES.BODY:case c.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return S(M)},toString:function(){return p(M)}};default:return{toComponent:function(){return function(e,M){return M.map((function(M,t){var r,i=((r={key:t})[c.HELMET_ATTRIBUTE]=!0,r);return Object.keys(M).forEach((function(e){var t=c.REACT_TAG_MAP[e]||e;if(t===c.TAG_PROPERTIES.INNER_HTML||t===c.TAG_PROPERTIES.CSS_TEXT){var r=M.innerHTML||M.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[t]=M[e]})),n.default.createElement(e,i)}))}(e,M)},toString:function(){return function(e,M,t){return M.reduce((function(M,r){var i=Object.keys(r).filter((function(e){return!(e===c.TAG_PROPERTIES.INNER_HTML||e===c.TAG_PROPERTIES.CSS_TEXT)})).reduce((function(e,M){var i=void 0===r[M]?M:M+'="'+g(r[M],t)+'"';return e?e+" "+i:i}),""),n=r.innerHTML||r.cssText||"",o=-1===c.SELF_CLOSING_TAGS.indexOf(e);return M+"<"+e+" "+c.HELMET_ATTRIBUTE+'="true" '+i+(o?"/>":">"+n+"</"+e+">")}),"")}(e,M,t)}}}};M.convertReactPropstoHtmlAttributes=function(e){var M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(M,t){return M[c.HTML_TAG_MAP[t]||t]=e[t],M}),M)},M.handleClientStateChange=function(e){A&&z(A),e.defer?A=y((function(){E(e,(function(){A=null}))})):(E(e),A=null)},M.mapStateOnServer=function(e){var M=e.baseTag,t=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,n=e.linkTags,o=e.metaTags,N=e.noscriptTags,j=e.scriptTags,g=e.styleTags,D=e.title,a=void 0===D?"":D,u=e.titleAttributes;return{base:f(c.TAG_NAMES.BASE,M,r),bodyAttributes:f(c.ATTRIBUTE_NAMES.BODY,t,r),htmlAttributes:f(c.ATTRIBUTE_NAMES.HTML,i,r),link:f(c.TAG_NAMES.LINK,n,r),meta:f(c.TAG_NAMES.META,o,r),noscript:f(c.TAG_NAMES.NOSCRIPT,N,r),script:f(c.TAG_NAMES.SCRIPT,j,r),style:f(c.TAG_NAMES.STYLE,g,r),title:f(c.TAG_NAMES.TITLE,{title:a,titleAttributes:u},r)}},M.reducePropsToState=function(e){return{baseTag:I([c.TAG_PROPERTIES.HREF],e),bodyAttributes:u(c.ATTRIBUTE_NAMES.BODY,e),defer:T(e,c.HELMET_PROPS.DEFER),encode:T(e,c.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:u(c.ATTRIBUTE_NAMES.HTML,e),linkTags:s(c.TAG_NAMES.LINK,[c.TAG_PROPERTIES.REL,c.TAG_PROPERTIES.HREF],e),metaTags:s(c.TAG_NAMES.META,[c.TAG_PROPERTIES.NAME,c.TAG_PROPERTIES.CHARSET,c.TAG_PROPERTIES.HTTPEQUIV,c.TAG_PROPERTIES.PROPERTY,c.TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:s(c.TAG_NAMES.NOSCRIPT,[c.TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:a(e),scriptTags:s(c.TAG_NAMES.SCRIPT,[c.TAG_PROPERTIES.SRC,c.TAG_PROPERTIES.INNER_HTML],e),styleTags:s(c.TAG_NAMES.STYLE,[c.TAG_PROPERTIES.CSS_TEXT],e),title:D(e),titleAttributes:u(c.ATTRIBUTE_NAMES.TITLE,e)}},M.requestAnimationFrame=y,M.warn=O}).call(this,t("yLpj"))},yLpj:function(e,M){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(r){"object"==typeof window&&(t=window)}e.exports=t}}]);
+//# sourceMappingURL=commons-2ee5517a8df806aebc87.js.map
\ No newline at end of file
diff --git a/commons-2ee5517a8df806aebc87.js.map b/commons-2ee5517a8df806aebc87.js.map
new file mode 100644
index 0000000..311a80e
--- /dev/null
+++ b/commons-2ee5517a8df806aebc87.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./node_modules/@theme-ui/core/dist/index.esm.js","webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/@theme-ui/color-modes/dist/index.esm.js","webpack:///./node_modules/@theme-ui/theme-provider/dist/index.esm.js","webpack:///./src/theme.js","webpack:///./src/components/header.js","webpack:///./src/components/footer.js","webpack:///./src/components/seo.js","webpack:///./src/components/head.js","webpack:///./src/components/mobileNav.js","webpack:///./src/components/layout.js","webpack:///./src/images/stackoverflow-logo.svg","webpack:///./node_modules/shallowequal/index.js","webpack:///./src/images/twitter-logo.svg","webpack:///./node_modules/@emotion/styled-base/dist/styled-base.browser.esm.js","webpack:///./node_modules/@emotion/styled/dist/styled.browser.esm.js","webpack:///./node_modules/@theme-ui/mdx/node_modules/@mdx-js/react/dist/esm.js","webpack:///./node_modules/@theme-ui/mdx/dist/index.esm.js","webpack:///./src/images/github-logo.svg","webpack:///./node_modules/react-helmet/lib/Helmet.js","webpack:///./src/images/openJ9-header-logo.svg","webpack:///./node_modules/@theme-ui/css/dist/index.esm.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./src/images/incubator-logo.svg","webpack:///./node_modules/react-helmet/lib/HelmetConstants.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@theme-ui/core/node_modules/deepmerge/dist/cjs.js","webpack:///./src/images/slack-icon.svg","webpack:///./node_modules/react-helmet/lib/HelmetUtils.js","webpack:///(webpack)/buildin/global.js"],"names":["parseProps","props","next","key","css$$1","sx","css","theme","getCSS","jsx$1","type","children","len","arguments","length","apply","undefined","concat","Context","createContext","__EMOTION_VERSION__","useThemeUI","useContext","canUseSymbol","Symbol","for","REACT_ELEMENT","FORWARD_REF","isMergeableObject","n","$$typeof","arrayMerge","destinationArray","sourceArray","options","merge","a","b","all","args","BaseProvider","ref","context","Provider","value","ThemeProvider","outer","Object","assign","_interopDefault","ex","React","React__default","shallowEqual","_defineProperty","obj","defineProperty","enumerable","configurable","writable","canUseDOM","window","document","createElement","module","exports","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","Error","WrappedComponent","state","mountedInstances","emitChange","map","instance","SideEffect","_Component","subClass","superClass","this","prototype","create","constructor","__proto__","peek","rewind","recordedState","_proto","shouldComponentUpdate","nextProps","componentWillMount","push","componentDidUpdate","componentWillUnmount","index","indexOf","splice","render","Component","displayName","name","getDisplayName","reactPropsRegex","prop","test","charCodeAt","toVarName","toVarValue","join","filter","Boolean","numberScales","fontWeights","lineHeights","reservedKeys","useCustomProperties","initialColorModeName","initialColorMode","toPixel","objectToVars","parent","vars","storage","init","localStorage","getItem","e","console","warn","setItem","useState","mode","setMode","useEffect","stored","body","classList","remove","useColorSchemeMediaQuery","darkQuery","darkMQL","lightMQL","query","matchMedia","media","matches","styles","colors","useBodyStyles","modes","color","bg","rawColors","keys","forEach","ref$1","colorMode","setColorMode","emotionTheme","toCustomProperties","themeKey","Array","isArray","val","get","def","p","undef","split","defaultBreakpoints","defaultTheme","space","fontSizes","aliases","m","mt","mr","mb","ml","mx","my","pt","pr","pb","pl","px","py","multiples","marginX","marginY","paddingX","paddingY","size","scales","backgroundColor","borderColor","margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","top","right","bottom","left","gridGap","gridColumnGap","gridRowGap","gap","columnGap","rowGap","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","border","borderTop","borderRight","borderBottom","borderLeft","borderWidth","borderStyle","borderRadius","borderTopRightRadius","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderTopColor","borderTopStyle","borderBottomWidth","borderBottomColor","borderBottomStyle","borderLeftWidth","borderLeftColor","borderLeftStyle","borderRightWidth","borderRightColor","borderRightStyle","outlineColor","boxShadow","textShadow","zIndex","width","minWidth","maxWidth","height","minHeight","maxHeight","flexBasis","fill","stroke","positiveOrNegative","scale","absolute","Math","abs","transforms","reduce","acc","curr","result","breakpoints","mediaQueries","i","slice","responsive","x","scaleName","transform","dirs","variant","root","boxSizing","useBorderBox","components","fonts","heading","darkText","lightText","links","primary","secondary","secondaryDark","accent","background","lightGrey","radii","button","card","buttons","cursor","textDecoration","text","h1","h2","h3","h4","h5","h6","lists","navRow","display","listStyle","justifyContent","li","navCol","flexDirection","borders","cardBorder","shadows","cardShadow","isHome","position","alignItems","flex","opacity","pointerEvents","to","src","openJ9Logo","alt","href","rel","target","twitterLogo","githubLogo","slackIcon","stackoverflowLogo","flexWrap","incubatorLogo","listStyleType","SEO","title","description","useStaticQuery","site","siteMetadata","defaultTitle","titleTemplate","defaultDescription","siteUrl","twitterUsername","seo","image","defaultImage","url","Helmet","content","property","defaultProps","MobileNav","objA","objB","compare","compareContext","ret","call","keysA","keysB","bHasOwnProperty","hasOwnProperty","bind","idx","valueA","valueB","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","tag","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","newStyled","createStyled","identifierName","shouldForwardProp","targetClassName","label","__emotion_forwardProp","propName","isReal","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","__emotion_styles","raw","Styled","Consumer","finalTag","as","className","classInterpolations","mergedProps","registered","serialized","finalShouldForwardProp","newProps","_key","innerRef","withComponent","nextTag","nextOptions","tagName","_objectSpread2","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","MDXContext","contextComponents","allComponents","DEFAULTS","inlineCode","wrapper","_ref","Fragment","MDXCreateElement","forwardRef","propComponents","mdxType","originalType","parentName","etc","thematicBreak","comps","__esModule","_extends","_createClass","descriptor","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","default","_classCallCheck","TypeError","_possibleConstructorReturn","self","ReferenceError","_class","_temp","HelmetSideEffects","handleClientStateChange","HelmetExport","_React$Component","HelmetWrapper","setPrototypeOf","_inherits","mapNestedChildrenToProps","child","nestedChildren","TAG_NAMES","SCRIPT","NOSCRIPT","innerHTML","STYLE","cssText","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_extends3","_extends4","TITLE","titleAttributes","BODY","bodyAttributes","HTML","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","_this2","Children","_child$props","childProps","convertReactPropstoHtmlAttributes","LINK","META","_props","set","propTypes","base","oneOfType","arrayOf","node","string","defer","bool","encodeSpecialCharacters","link","meta","noscript","onChangeClientState","func","script","style","mappedState","linkTags","metaTags","noscriptTags","scriptTags","styleTags","renderStatic","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","error","message","match","number","ATTRIBUTE_NAMES","BASE","HEAD","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","NAME","PROPERTY","REL","SRC","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","isNonNullObject","stringValue","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","element","getKeys","symbol","getEnumerableOwnPropertySymbols","propertyIsOnObject","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","sourceIsArray","array","prev","deepmerge_1","requestAnimationFrame","_typeof","iterator","_objectAssign2","clock","str","encode","String","replace","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","toLowerCase","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","now","callback","currentTime","setTimeout","cafPolyfill","id","clearTimeout","webkitRequestAnimationFrame","mozRequestAnimationFrame","global","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","_i","removeAttribute","tags","headElement","head","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","_ref$title","g","Function"],"mappings":"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","file":"commons-2ee5517a8df806aebc87.js","sourcesContent":["import { jsx, ThemeContext } from '@emotion/core';\nimport { css } from '@theme-ui/css';\nimport React from 'react';\nimport deepmerge from 'deepmerge';\nimport { version } from '@emotion/core/package.json';\n\nvar getCSS = function getCSS(props) {\n  if (!props.sx && !props.css) {\n    return undefined;\n  }\n\n  return function (theme) {\n    var styles = css(props.sx)(theme);\n    var raw = typeof props.css === 'function' ? props.css(theme) : props.css;\n    return [styles, raw];\n  };\n};\n\nvar parseProps = function parseProps(props) {\n  if (!props) {\n    return null;\n  }\n\n  var next = {};\n\n  for (var key in props) {\n    if (key === 'sx') {\n      continue;\n    }\n\n    next[key] = props[key];\n  }\n\n  var css$$1 = getCSS(props);\n\n  if (css$$1) {\n    next.css = css$$1;\n  }\n\n  return next;\n};\n\nvar jsx$1 = function jsx$1(type, props) {\n  var children = [],\n      len = arguments.length - 2;\n\n  while (len-- > 0) {\n    children[len] = arguments[len + 2];\n  }\n\n  return jsx.apply(undefined, [type, parseProps(props)].concat(children));\n};\n\nvar Context = React.createContext({\n  __EMOTION_VERSION__: version,\n  theme: null\n});\n\nvar useThemeUI = function useThemeUI() {\n  return React.useContext(Context);\n};\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\nvar FORWARD_REF = canUseSymbol ? Symbol.for('react.forward_ref') : 0xeac7;\n\nvar isMergeableObject = function isMergeableObject(n) {\n  return !!n && typeof n === 'object' && n.$$typeof !== REACT_ELEMENT && n.$$typeof !== FORWARD_REF;\n};\n\nvar arrayMerge = function arrayMerge(destinationArray, sourceArray, options) {\n  return sourceArray;\n};\n\nvar merge = function merge(a, b) {\n  return deepmerge(a, b, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nmerge.all = function () {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return deepmerge.all(args, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nvar BaseProvider = function BaseProvider(ref) {\n  var context = ref.context;\n  var children = ref.children;\n  return jsx$1(ThemeContext.Provider, {\n    value: context.theme\n  }, jsx$1(Context.Provider, {\n    value: context,\n    children: children\n  }));\n};\n\nvar ThemeProvider = function ThemeProvider(ref) {\n  var theme = ref.theme;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (outer.__EMOTION_VERSION__ !== version) {\n      console.warn('Multiple versions of Emotion detected,', 'and theming might not work as expected.', 'Please ensure there is only one copy of @emotion/core installed in your application.');\n    }\n  }\n\n  var context = typeof theme === 'function' ? Object.assign({}, outer, {\n    theme: theme(outer.theme)\n  }) : merge.all({}, outer, {\n    theme: theme\n  });\n  return jsx$1(BaseProvider, {\n    context: context,\n    children: children\n  });\n};\n\nexport { jsx$1 as jsx, Context, useThemeUI, merge, ThemeProvider };","'use strict';\n\nfunction _interopDefault(ex) {\n  return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n  if (typeof reducePropsToState !== 'function') {\n    throw new Error('Expected reducePropsToState to be a function.');\n  }\n\n  if (typeof handleStateChangeOnClient !== 'function') {\n    throw new Error('Expected handleStateChangeOnClient to be a function.');\n  }\n\n  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n    throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (typeof WrappedComponent !== 'function') {\n      throw new Error('Expected WrappedComponent to be a React component.');\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n\n      if (SideEffect.canUseDOM) {\n        handleStateChangeOnClient(state);\n      } else if (mapStateOnServer) {\n        state = mapStateOnServer(state);\n      }\n    }\n\n    var SideEffect = /*#__PURE__*/function (_Component) {\n      _inheritsLoose(SideEffect, _Component);\n\n      function SideEffect() {\n        return _Component.apply(this, arguments) || this;\n      } // Try to use displayName of wrapped component\n      // Expose canUseDOM so tests can monkeypatch it\n\n\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      SideEffect.rewind = function rewind() {\n        if (SideEffect.canUseDOM) {\n          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n        }\n\n        var recordedState = state;\n        state = undefined;\n        mountedInstances = [];\n        return recordedState;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n        return !shallowEqual(nextProps, this.props);\n      };\n\n      _proto.componentWillMount = function componentWillMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return React__default.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(React.Component);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n    return SideEffect;\n  };\n}\n\nmodule.exports = withSideEffect;","import memoize from '@emotion/memoize';\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\nexport default index;","import React from 'react';\nimport { jsx, useThemeUI, merge, Context } from '@theme-ui/core';\nimport { Global, ThemeContext } from '@emotion/core';\nimport { css, get } from '@theme-ui/css';\n\nvar toVarName = function toVarName(key) {\n  return \"--theme-ui-\" + key;\n};\n\nvar toVarValue = function toVarValue(key, value) {\n  return \"var(\" + toVarName(key) + \", \" + value + \")\";\n};\n\nvar join = function join() {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return args.filter(Boolean).join('-');\n};\n\nvar numberScales = {\n  fontWeights: true,\n  lineHeights: true\n};\nvar reservedKeys = {\n  useCustomProperties: true,\n  initialColorModeName: true,\n  initialColorMode: true\n};\n\nvar toPixel = function toPixel(key, value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n\n  if (numberScales[key]) {\n    return value;\n  }\n\n  return value + 'px';\n}; // convert theme values to custom properties\n\n\nvar toCustomProperties = function toCustomProperties(obj, parent, themeKey) {\n  var next = Array.isArray(obj) ? [] : {};\n\n  for (var key in obj) {\n    var value = obj[key];\n    var name = join(parent, key);\n\n    if (value && typeof value === 'object') {\n      next[key] = toCustomProperties(value, name, key);\n      continue;\n    }\n\n    if (reservedKeys[key]) {\n      next[key] = value;\n      continue;\n    }\n\n    var val = toPixel(themeKey || key, value);\n    next[key] = toVarValue(name, val);\n  }\n\n  return next;\n};\n\nvar objectToVars = function objectToVars(parent, obj) {\n  var vars = {};\n\n  for (var key in obj) {\n    if (key === 'modes') {\n      continue;\n    }\n\n    var name = join(parent, key);\n    var value = obj[key];\n\n    if (value && typeof value === 'object') {\n      vars = Object.assign({}, vars, objectToVars(name, value));\n    } else {\n      vars[toVarName(name)] = value;\n    }\n  }\n\n  return vars;\n}; // create body styles for color modes\n\n\nvar createColorStyles = function createColorStyles(theme) {\n  if (theme === void 0) theme = {};\n\n  if (!theme.colors || theme.useBodyStyles === false) {\n    return {};\n  }\n\n  if (theme.useCustomProperties === false || !theme.colors.modes) {\n    return css({\n      body: {\n        color: 'text',\n        bg: 'background'\n      }\n    })(theme);\n  }\n\n  var colors = theme.rawColors || theme.colors;\n  var modes = colors.modes;\n  var styles = objectToVars('colors', colors);\n  Object.keys(modes).forEach(function (mode) {\n    var key = \"&.theme-ui-\" + mode;\n    styles[key] = objectToVars('colors', modes[mode]);\n  });\n  return css({\n    body: Object.assign({}, styles, {\n      color: 'text',\n      bg: 'background'\n    })\n  })(theme);\n};\n\nvar STORAGE_KEY = 'theme-ui-color-mode';\nvar storage = {\n  get: function get(init) {\n    try {\n      return window.localStorage.getItem(STORAGE_KEY) || init;\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  },\n  set: function set(value) {\n    try {\n      window.localStorage.setItem(STORAGE_KEY, value);\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  }\n};\n\nvar getMediaQuery = function getMediaQuery() {\n  var darkQuery = '(prefers-color-scheme: dark)';\n  var lightQuery = '(prefers-color-scheme: light)';\n  var darkMQL = window.matchMedia ? window.matchMedia(darkQuery) : {};\n  var lightMQL = window.matchMedia ? window.matchMedia(lightQuery) : {};\n  var dark = darkMQL.media === darkQuery && darkMQL.matches;\n\n  if (dark) {\n    return 'dark';\n  }\n\n  var light = lightMQL.media === lightQuery && lightMQL.matches;\n\n  if (light) {\n    return 'light';\n  }\n\n  return 'default';\n};\n\nvar useColorModeState = function useColorModeState(theme) {\n  if (theme === void 0) theme = {};\n  var ref = React.useState(theme.initialColorModeName || 'default');\n  var mode = ref[0];\n  var setMode = ref[1]; // initialize state\n\n  React.useEffect(function () {\n    var stored = storage.get();\n    document.body.classList.remove('theme-ui-' + stored);\n\n    if (!stored && theme.useColorSchemeMediaQuery) {\n      var query = getMediaQuery();\n      setMode(query);\n      return;\n    }\n\n    if (!stored || stored === mode) {\n      return;\n    }\n\n    setMode(stored);\n  }, []);\n  React.useEffect(function () {\n    if (!mode) {\n      return;\n    }\n\n    storage.set(mode);\n  }, [mode]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (theme.colors && theme.colors.modes && Object.keys(theme.colors.modes).indexOf(theme.initialColorModeName) > -1) {\n      console.warn('The `initialColorModeName` value should be a unique name' + ' and cannot reference a key in `theme.colors.modes`.');\n    }\n  }\n\n  return [mode, setMode];\n};\n\nvar useColorMode = function useColorMode() {\n  var ref = useThemeUI();\n  var colorMode = ref.colorMode;\n  var setColorMode = ref.setColorMode;\n\n  if (typeof setColorMode !== 'function') {\n    throw new Error(\"[useColorMode] requires the ColorModeProvider component\");\n  }\n\n  return [colorMode, setColorMode];\n};\n\nvar applyColorMode = function applyColorMode(theme, mode) {\n  if (!mode) {\n    return theme;\n  }\n\n  var modes = get(theme, 'colors.modes', {});\n  return merge.all({}, theme, {\n    colors: get(modes, mode, {})\n  });\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      return createColorStyles(theme);\n    }\n  });\n};\n\nvar ColorModeProvider = function ColorModeProvider(ref) {\n  var children = ref.children;\n  var outer = useThemeUI();\n  var ref$1 = useColorModeState(outer.theme);\n  var colorMode = ref$1[0];\n  var setColorMode = ref$1[1];\n  var theme = applyColorMode(outer.theme || {}, colorMode);\n  var emotionTheme = Object.assign({}, theme);\n\n  if (theme.useCustomProperties !== false) {\n    emotionTheme.colors = toCustomProperties(emotionTheme.colors, 'colors');\n  }\n\n  var context = Object.assign({}, outer, {\n    theme: theme,\n    colorMode: colorMode,\n    setColorMode: setColorMode\n  });\n  return jsx(ThemeContext.Provider, {\n    value: emotionTheme\n  }, jsx(Context.Provider, {\n    value: context\n  }, jsx(BodyStyles, {\n    key: 'color-mode'\n  }), children));\n};\n\nvar noflash = \"(function() { try {\\n  var mode = localStorage.getItem('theme-ui-color-mode');\\n  if (!mode) return\\n  document.body.classList.add('theme-ui-' + mode);\\n} catch (e) {} })();\";\n\nvar InitializeColorMode = function InitializeColorMode() {\n  return jsx('script', {\n    key: 'theme-ui-no-flash',\n    dangerouslySetInnerHTML: {\n      __html: noflash\n    }\n  });\n};\n\nexport { useColorMode, ColorModeProvider, InitializeColorMode };","import { jsx, useThemeUI, ThemeProvider } from '@theme-ui/core';\nimport { ColorModeProvider } from '@theme-ui/color-modes';\nimport { MDXProvider } from '@theme-ui/mdx';\nimport { Global } from '@emotion/core';\n\nvar get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      if (theme.useBodyStyles === false || theme.styles && !theme.styles.root) {\n        return false;\n      }\n\n      var boxSizing = theme.useBorderBox === false ? null : 'border-box';\n      return css({\n        '*': {\n          boxSizing: boxSizing\n        },\n        body: {\n          margin: 0,\n          variant: 'styles.root'\n        }\n      })(theme);\n    }\n  });\n};\n\nvar ThemeProvider$1 = function ThemeProvider$1(ref) {\n  var theme = ref.theme;\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (typeof outer.setColorMode === 'function') {\n    return jsx(ThemeProvider, {\n      theme: theme\n    }, jsx(MDXProvider, {\n      components: components,\n      children: children\n    }));\n  }\n\n  return jsx(ThemeProvider, {\n    theme: theme\n  }, jsx(ColorModeProvider, null, jsx(BodyStyles), jsx(MDXProvider, {\n    components: components,\n    children: children\n  })));\n};\n\nexport { ThemeProvider$1 as ThemeProvider };","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nexport default {\n  fonts: {\n    heading: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\",\n    body: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\"\n  },\n  colors: {\n    darkText: \"#4d4f50\",\n    lightText: \"#d8d8d8\",\n    links: \"#5DA7A3\",\n    primary: \"#434343\",\n    secondary: \"#5DA7A3\",\n    secondaryDark:\"#5d9da3\",\n    accent: \"#F8D000\",\n    background: \"#FFFFFF\",\n    lightGrey: \"#F1F1F1\"\n  },\n  radii: {\n    button: \"2.5rem\",\n    card: \"0.5rem\"\n  },\n  // [mobile, ipad, ipad pro, desktop]\n  breakpoints: [\"35rem\", \"62.5rem\", \"85rem\", \"120rem\"],\n  fontSizes: [16, 18, 20, 24, 28, 36],\n  space: [0, 8, 16, 24, 32, 40],\n  fontWeights: {\n    body: 400,\n    heading: 700\n  },\n  lineHeights: {\n    body: 1.5,\n    heading: 1.125\n  },\n  buttons: {\n    primary: {\n      backgroundColor: \"secondary\",\n      color: \"white\",\n      borderRadius: \"button\",\n      height: \"2rem\",\n      width: \"10rem\",\n      border: \"none\",\n      fontFamily: \"body\",\n      fontSize: 0,\n      \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: \"secondaryDark\",\n        borderColor: \"secondaryDark\",\n        textDecoration:\"none\",\n        color:\"white\"\n      }\n    },\n    secondary: { variant: \"buttons.primary\", width: \"12rem\" }\n  },\n  text: {\n    heading: {\n      fontFamily: \"heading\",\n      lineHeight: \"heading\",\n      fontWeight: \"heading\",\n      marginY: 2\n    }\n  },\n  styles: {\n    root: {\n      fontFamily: \"body\",\n      lineHeight: \"body\",\n      fontWeight: \"body\"\n    },\n    h1: {\n      variant: \"text.heading\",\n      fontSize: 5\n    },\n    h2: {\n      variant: \"text.heading\",\n      fontSize: 4\n    },\n    h3: {\n      variant: \"text.heading\",\n      fontSize: 3\n    },\n    h4: {\n      variant: \"text.heading\",\n      fontSize: 2,\n\n    },\n    h5: {\n      variant: \"text.heading\",\n      fontSize: 1\n    },\n    h6: {\n      variant: \"text.heading\",\n      fontSize: 0\n    },\n    p: {\n      marginBottom: 5,\n      fontSize: 1\n    }\n  },\n  lists: {\n    navRow: {\n      display: \"flex\",\n      listStyle: \"none\",\n      justifyContent: \"flex-end\",\n      li: {\n        padding: 1,\n        marginX: 1,\n        a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n      },\n      \"li:first-of-type\": {\n        marginLeft: 0\n      },\n      \"li:last-child\": {\n        marginRight: 0,\n        paddingRight: 0\n      }\n    },\n    navCol: {\n      variant: \"lists.navRow\",\n      flexDirection: \"column\",\n      li: {\n        padding: 1,\n        paddingLeft: 0\n      }\n    }\n  },\n  borders: {\n    cardBorder: \"#5DA7A3 0.625rem solid\"\n  },\n  shadows: {\n    cardShadow: \"#DADADA 0 0 1.25rem\"\n  },\n};\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\";\n\nimport openJ9Logo from \"../images/openJ9-header-logo.svg\";\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\n\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nexport default ({ isHome }) => (\n  <header\n    sx={{\n      display: [\"none\", \"none\", \"flex\", \"flex\"],\n      backgroundColor: isHome ? \"#00000000\" : \"primary\",\n      position: isHome ? \"absolute\" : null,\n      width: \"100%\",\n      color: \"lightText\",\n      paddingX: 5,\n      paddingY: 4,\n      alignItems: \"center\"\n    }}\n  >\n    <div\n      sx={{\n        flex: 1,\n        opacity: isHome ? 0 : 1,\n        pointerEvents: isHome ? \"none\" : \"all\"\n      }}\n    >\n      <Link to=\"/\">\n        <img src={openJ9Logo} alt=\"OpenJ9 Logo\"></img>\n      </Link>\n    </div>\n    <nav sx={{ flex: 2 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li>\n          <Link to=\"/\">Home</Link>\n        </li>\n        <li>\n          <Link to=\"/about\">About</Link>\n        </li>\n        <li>\n          <a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a>\n        </li>\n        <li>\n          <Link to=\"/performance\">Performance</Link>\n        </li>\n        <li>\n          <Link to=\"/news\">News</Link>\n        </li>\n      </ul>\n    </nav>\n    <nav sx={{ flex: 1 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse-openj9/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </header>\n);\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport incubatorLogo from \"../images/incubator-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\nimport { Link } from \"gatsby\";\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nexport default () => (\n  <footer\n    sx={{\n      display: \"flex\",\n      backgroundColor: \"primary\",\n      color: \"white\",\n      flexWrap: \"wrap\",\n      padding: \"1rem\",\n      paddingBottom: [\"3rem\", \"3rem\", \"0\", \"0\"],\n      flexDirection: \"reverse-column\"\n    }}\n  >\n      <section\n      sx={{\n        flex: \"50%\",\n        display: [\"flex\", \"none\", \"none\", \"none\"],\n        alignItems: [\"center\", \"center\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n      <Styled.h6 sx={{fontSize:\"0.9rem\"}} >OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n    </section>\n\n\n    <nav sx={{ display: [\"flex\", \"flex\", \"flex\", \"flex\"],\n          flex: [\"100%\", \"50%\", \"50%\",\"50%\"], \n          flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n          justifyContent:\"center\",\n          a: {\n            color: \"white\",\n            textDecoration: \"none\",\n            \"&:hover\": {\n              color: \"links\",\n            }\n    }}}>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", \"0.8rem\", \"0.8rem\"],  marginRight:\"1.1rem\", padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"]}}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Docs</Styled.h4>\n        <ul sx={{ \n          variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n           }}>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/openj9_newuser/\" rel=\"noopener noreferrer\" target=\"_blank\">New to OpenJ9?</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/introduction/\" rel=\"noopener noreferrer\" target=\"_blank\">Getting started</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/cmdline_specifying/\" rel=\"noopener noreferrer\" target=\"_blank\">Command-line options</a></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Resources</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n          }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/about\">About</Link></li>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/performance\">Performance</Link></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", 0, 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"], marginLeft:[0,\"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Community</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n       }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/news\">News</Link></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://blog.openj9.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Blogs</a></li>\n        </ul>\n      </section>\n    </nav>\n    <section\n      sx={{\n        flex: \"25%\",\n        display: [\"none\",\"flex\", \"flex\", \"flex\"],\n        alignItems: [\"center\", \"flex-end\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <Styled.h6 sx={{fontSize:\"0.9rem\", marginTop:\"1.3rem\", marginLeft:\"0.6rem\"}}>OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n    </section>\n    <div\n      sx={{\n        height: \"0.15rem\",\n        backgroundColor: \"secondary\",\n        width: \"100%\",\n        marginY: 2\n      }}\n    ></div>\n    <nav sx={{width:\"70%\"}}>\n      <ul sx={{ \n        display: \"flex\", flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n        li: { \n          padding: \"0.4rem\",\n          fontSize: [\"0.9rem\", \"0.7rem\", \"1rem\", \"1rem\"],\n          listStyleType: \"none\",\n          paddingLeft:\"1rem\",\n          color:\"white\",\n        },\n         a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n        }}>\n          \n        <li sx={{ paddingLeft:[\"1rem\", \"0rem !important\", \"0.5rem !important\", \"0.5 !important\"]}}><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Eclipse Foundation Website </a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/privacy.php\" rel=\"noopener noreferrer\" target=\"_blank\">Privacy Policy</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/termsofuse.php\" rel=\"noopener noreferrer\" target=\"_blank\">Terms of Use</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/copyright.php\" rel=\"noopener noreferrer\" target=\"_blank\">Copyright Agent</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/\" rel=\"noopener noreferrer\" target=\"_blank\">Legal</a></li>\n      </ul>\n    </nav>\n    <nav sx={{ display: [\"inline\", \"inline\", \"block\", \"block\"], flex: \"30%\" }}>\n      <ul sx={{ variant: \"lists.navRow\", justifyContent: [\"center\", \"flex-end\",\"flex-end\", \"flex-end\"] }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse-openj9/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </footer>\n);\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Helmet } from \"react-helmet\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nconst SEO = ({ title, description }) => {\n  const { site } = useStaticQuery(query);\n\n  const {\n    defaultTitle,\n    titleTemplate,\n    defaultDescription,\n    siteUrl,\n    twitterUsername,\n    defaultImage,\n  } = site.siteMetadata;\n\n  const seo = {\n    title: title || defaultTitle,\n    description: description || defaultDescription,\n    image: defaultImage,\n    url: `${siteUrl}`,\n  };\n  return (\n    <Helmet title={seo.title} titleTemplate={titleTemplate}>\n      <meta name=\"description\" content={seo.description} />\n      <meta name=\"image\" content={seo.image} />\n\n      {seo.url && <meta property=\"og:url\" content={seo.url} />}\n\n      {seo.title && <meta property=\"og:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta property=\"og:description\" content={seo.description} />\n      )}\n\n      {seo.image && <meta property=\"og:image\" content={seo.image} />}\n\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n\n      {twitterUsername && (\n        <meta name=\"twitter:creator\" content={twitterUsername} />\n      )}\n\n      {seo.title && <meta name=\"twitter:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta name=\"twitter:description\" content={seo.description} />\n      )}\n      <link href=\"https://fonts.googleapis.com/css2?family=Gelasio:ital,wght@0,400;0,700;1,400;1,700&display=swap\" rel=\"stylesheet\"/>\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css\" />\n      <script src=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js\"></script>\n    </Helmet>\n  )\n};\n\nexport default SEO\n\nSEO.propTypes = {\n  title: PropTypes.string,\n  description: PropTypes.string,\n}\n\nSEO.defaultProps = {\n  title: null,\n  description: null,\n}\n\nconst query = graphql`\n  query SEO {\n    site {\n      siteMetadata {\n        defaultTitle: title\n        defaultDescription: description\n        siteUrl: url\n        twitterUsername\n        defaultImage: image\n      }\n    }\n  }\n`","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\n\nimport SEO from \"../components/seo\";\n\nexport default (props) => {\n    return (\n        <SEO title={props.title} description={props.description}></SEO>\n    );\n}\n\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\"\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nconst MobileNav = () => (\n    <nav sx={{\n        display: [\"flex\", \"flex\", \"none\", \"none\"], \n        justifyContent: \"center\", \n        alignItems: \"center\", \n        position:\"fixed\", \n        width: \"100%\",\n        bottom: \"0\",\n        backgroundColor: \"white\",\n        height: \"3rem\",\n        boxShadow: \"0 0.5rem 2rem grey\",\n        zIndex: \"9999\"\n        }}> \n        <ul sx={{ \n            variant: \"lists.navRow\", \n            li: { \n                a: {\n                    color: \"black\", \n                    textDecoration: \"none\"\n                }\n            },\n            justifyContent: \"space-evenly\",\n            width: \"100%\"\n        }}>\n            <li><Link to=\"/\">Home</Link></li>\n            <li><Link to=\"/about\">About</Link> </li>\n            <li><a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a> </li>\n            <li><Link to=\"/performance\">Performance</Link> </li>\n            <li><Link to=\"/news\">News</Link> </li>\n        </ul>\n    </nav>\n)\n\nexport default MobileNav","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\nimport { ThemeProvider } from \"theme-ui\";\nimport theme from \"../theme\";\nimport Header from \"./header\";\nimport Footer from \"./footer\";\nimport Head from \"./head\";\nimport MobileNav from \"./mobileNav\";\nimport { Global } from \"@emotion/core\";\n\nexport default ({ children, isHome, title, description }) => (\n  <ThemeProvider theme={theme}>\n    <Global\n      styles={theme => ({\n        \"*\": { padding: 0, margin: 0 },                          \n      })}\n    />\n    <Head title={title} description={description}/>\n    <Header isHome={isHome} />\n    <MobileNav />\n    {children}\n   \n    <Footer />\n    \n  </ThemeProvider>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=\"","//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || ret === void 0 && valueA !== valueB) {\n      return false;\n    }\n  }\n\n  return true;\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { createElement } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/core';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme' && key !== 'innerRef';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(source, true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar createStyled = function createStyled(tag, options) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (tag === undefined) {\n      throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n    }\n  }\n\n  var identifierName;\n  var shouldForwardProp;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n    shouldForwardProp = tag.__emotion_forwardProp && options.shouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && // $FlowFixMe\n      options.shouldForwardProp(propName);\n    } : options.shouldForwardProp;\n  }\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n      if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n        if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n        }\n\n        styles.push(args[i], args[0][i]);\n      }\n    } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n    var Styled = withEmotionCache(function (props, context, ref) {\n      return createElement(ThemeContext.Consumer, null, function (theme) {\n        var finalTag = shouldUseAs && props.as || baseTag;\n        var className = '';\n        var classInterpolations = [];\n        var mergedProps = props;\n\n        if (props.theme == null) {\n          mergedProps = {};\n\n          for (var key in props) {\n            mergedProps[key] = props[key];\n          }\n\n          mergedProps.theme = theme;\n        }\n\n        if (typeof props.className === 'string') {\n          className = getRegisteredStyles(context.registered, classInterpolations, props.className);\n        } else if (props.className != null) {\n          className = props.className + \" \";\n        }\n\n        var serialized = serializeStyles(styles.concat(classInterpolations), context.registered, mergedProps);\n        var rules = insertStyles(context, serialized, typeof finalTag === 'string');\n        className += context.key + \"-\" + serialized.name;\n\n        if (targetClassName !== undefined) {\n          className += \" \" + targetClassName;\n        }\n\n        var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(finalTag) : defaultShouldForwardProp;\n        var newProps = {};\n\n        for (var _key in props) {\n          if (shouldUseAs && _key === 'as') continue;\n\n          if ( // $FlowFixMe\n          finalShouldForwardProp(_key)) {\n            newProps[_key] = props[_key];\n          }\n        }\n\n        newProps.className = className;\n        newProps.ref = ref || props.innerRef;\n\n        if (process.env.NODE_ENV !== 'production' && props.innerRef) {\n          console.error('`innerRef` is deprecated and will be removed in a future major version of Emotion, please use the `ref` prop instead' + (identifierName === undefined ? '' : \" in the usage of `\" + identifierName + \"`\"));\n        }\n\n        var ele = createElement(finalTag, newProps);\n        return ele;\n      });\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n          return 'NO_COMPONENT_SELECTOR';\n        } // $FlowFixMe: coerce undefined to string\n\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      return createStyled(nextTag, nextOptions !== undefined ? _objectSpread({}, options || {}, {}, nextOptions) : options).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport default createStyled;","import styled from '@emotion/styled-base';\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\nvar newStyled = styled.bind();\ntags.forEach(function (tagName) {\n  newStyled[tagName] = newStyled(tagName);\n});\nexport default newStyled;","import React from 'react';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nvar isFunction = function isFunction(obj) {\n  return typeof obj === 'function';\n};\n\nvar MDXContext = /*#__PURE__*/React.createContext({});\n\nvar withMDXComponents = function withMDXComponents(Component) {\n  return function (props) {\n    var allComponents = useMDXComponents(props.components);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n      components: allComponents\n    }));\n  };\n};\n\nvar useMDXComponents = function useMDXComponents(components) {\n  var contextComponents = React.useContext(MDXContext);\n  var allComponents = contextComponents;\n\n  if (components) {\n    allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n  }\n\n  return allComponents;\n};\n\nvar MDXProvider = function MDXProvider(props) {\n  var allComponents = useMDXComponents(props.components);\n  return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n    value: allComponents\n  }, props.children);\n};\n\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n  inlineCode: 'code',\n  wrapper: function wrapper(_ref) {\n    var children = _ref.children;\n    return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n  }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var propComponents = props.components,\n      mdxType = props.mdxType,\n      originalType = props.originalType,\n      parentName = props.parentName,\n      etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n\n  var components = useMDXComponents(propComponents);\n  var type = mdxType;\n  var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n  if (propComponents) {\n    return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n      ref: ref\n    }, etc), {}, {\n      components: propComponents\n    }));\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n    ref: ref\n  }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\n\nfunction createElement(type, props) {\n  var args = arguments;\n  var mdxType = props && props.mdxType;\n\n  if (typeof type === 'string' || mdxType) {\n    var argsLength = args.length;\n    var createElementArgArray = new Array(argsLength);\n    createElementArgArray[0] = MDXCreateElement;\n    var newProps = {};\n\n    for (var key in props) {\n      if (hasOwnProperty.call(props, key)) {\n        newProps[key] = props[key];\n      }\n    }\n\n    newProps.originalType = type;\n    newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n    createElementArgArray[1] = newProps;\n\n    for (var i = 2; i < argsLength; i++) {\n      createElementArgArray[i] = args[i];\n    }\n\n    return React.createElement.apply(null, createElementArgArray);\n  }\n\n  return React.createElement.apply(null, args);\n}\n\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","import { jsx } from '@theme-ui/core';\nimport { css, get } from '@theme-ui/css';\nimport 'react';\nimport '@emotion/core';\nimport styled from '@emotion/styled';\nimport { MDXProvider, useMDXComponents } from '@mdx-js/react';\nvar tags = ['p', 'b', 'i', 'a', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'pre', 'code', 'ol', 'ul', 'li', 'blockquote', 'hr', 'em', 'table', 'tr', 'th', 'td', 'em', 'strong', 'del', // mdx\n'inlineCode', 'thematicBreak', // other\n'div', // theme-ui\n'root'];\nvar aliases = {\n  inlineCode: 'code',\n  thematicBreak: 'hr',\n  root: 'div'\n};\n\nvar alias = function alias(n) {\n  return aliases[n] || n;\n};\n\nvar themed = function themed(key) {\n  return function (props) {\n    return css(get(props.theme, \"styles.\" + key))(props.theme);\n  };\n};\n\nvar Styled = styled('div')(themed('div'));\nvar components = {};\ntags.forEach(function (tag) {\n  components[tag] = styled(alias(tag))(themed(tag));\n  Styled[tag] = components[tag];\n});\n\nvar createComponents = function createComponents(comps) {\n  var next = Object.assign({}, components);\n  Object.keys(comps).forEach(function (key) {\n    next[key] = styled(comps[key])(themed(key));\n  });\n  return next;\n};\n\nvar MDXProvider$1 = function MDXProvider$1(ref) {\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useMDXComponents();\n  return jsx(MDXProvider, {\n    components: createComponents(Object.assign({}, outer, components)),\n    children: children\n  });\n};\n\nexport { themed, Styled, components, MDXProvider$1 as MDXProvider };","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Helmet = function Helmet(Component) {\n  var _class, _temp;\n\n  return _temp = _class = function (_React$Component) {\n    _inherits(HelmetWrapper, _React$Component);\n\n    function HelmetWrapper() {\n      _classCallCheck(this, HelmetWrapper);\n\n      return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n    }\n\n    HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n      return !(0, _reactFastCompare2.default)(this.props, nextProps);\n    };\n\n    HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n      if (!nestedChildren) {\n        return null;\n      }\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.SCRIPT:\n        case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          return {\n            innerHTML: nestedChildren\n          };\n\n        case _HelmetConstants.TAG_NAMES.STYLE:\n          return {\n            cssText: nestedChildren\n          };\n      }\n\n      throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n    };\n\n    HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n      var _extends2;\n\n      var child = _ref.child,\n          arrayTypeChildren = _ref.arrayTypeChildren,\n          newChildProps = _ref.newChildProps,\n          nestedChildren = _ref.nestedChildren;\n      return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n    };\n\n    HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n      var _extends3, _extends4;\n\n      var child = _ref2.child,\n          newProps = _ref2.newProps,\n          newChildProps = _ref2.newChildProps,\n          nestedChildren = _ref2.nestedChildren;\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.TITLE:\n          return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n        case _HelmetConstants.TAG_NAMES.BODY:\n          return _extends({}, newProps, {\n            bodyAttributes: _extends({}, newChildProps)\n          });\n\n        case _HelmetConstants.TAG_NAMES.HTML:\n          return _extends({}, newProps, {\n            htmlAttributes: _extends({}, newChildProps)\n          });\n      }\n\n      return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n    };\n\n    HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n      var newFlattenedProps = _extends({}, newProps);\n\n      Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n        var _extends5;\n\n        newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n      });\n      return newFlattenedProps;\n    };\n\n    HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n          return child.type === name;\n        })) {\n          if (typeof child.type === \"function\") {\n            return (0, _HelmetUtils.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n          }\n\n          return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n        }\n\n        if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n          return typeof nestedChild !== \"string\";\n        }))) {\n          throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n        }\n      }\n\n      return true;\n    };\n\n    HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n      var _this2 = this;\n\n      var arrayTypeChildren = {};\n\n      _react2.default.Children.forEach(children, function (child) {\n        if (!child || !child.props) {\n          return;\n        }\n\n        var _child$props = child.props,\n            nestedChildren = _child$props.children,\n            childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n        var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n        _this2.warnOnInvalidChildren(child, nestedChildren);\n\n        switch (child.type) {\n          case _HelmetConstants.TAG_NAMES.LINK:\n          case _HelmetConstants.TAG_NAMES.META:\n          case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          case _HelmetConstants.TAG_NAMES.SCRIPT:\n          case _HelmetConstants.TAG_NAMES.STYLE:\n            arrayTypeChildren = _this2.flattenArrayTypeChildren({\n              child: child,\n              arrayTypeChildren: arrayTypeChildren,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n\n          default:\n            newProps = _this2.mapObjectTypeChildren({\n              child: child,\n              newProps: newProps,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n        }\n      });\n\n      newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n      return newProps;\n    };\n\n    HelmetWrapper.prototype.render = function render() {\n      var _props = this.props,\n          children = _props.children,\n          props = _objectWithoutProperties(_props, [\"children\"]);\n\n      var newProps = _extends({}, props);\n\n      if (children) {\n        newProps = this.mapChildrenToProps(children, newProps);\n      }\n\n      return _react2.default.createElement(Component, newProps);\n    };\n\n    _createClass(HelmetWrapper, null, [{\n      key: \"canUseDOM\",\n      // Component.peek comes from react-side-effect:\n      // For testing, you may use a static peek() method available on the returned component.\n      // It lets you get the current state without resetting the mounted instance stack.\n      // Don’t use it for anything other than testing.\n\n      /**\n       * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n       * @param {Object} bodyAttributes: {\"className\": \"root\"}\n       * @param {String} defaultTitle: \"Default Title\"\n       * @param {Boolean} defer: true\n       * @param {Boolean} encodeSpecialCharacters: true\n       * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n       * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n       * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n       * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n       * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n       * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n       * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n       * @param {String} title: \"Title\"\n       * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n       * @param {String} titleTemplate: \"MySite.com - %s\"\n       */\n      set: function set(canUseDOM) {\n        Component.canUseDOM = canUseDOM;\n      }\n    }]);\n\n    return HelmetWrapper;\n  }(_react2.default.Component), _class.propTypes = {\n    base: _propTypes2.default.object,\n    bodyAttributes: _propTypes2.default.object,\n    children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n    defaultTitle: _propTypes2.default.string,\n    defer: _propTypes2.default.bool,\n    encodeSpecialCharacters: _propTypes2.default.bool,\n    htmlAttributes: _propTypes2.default.object,\n    link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    onChangeClientState: _propTypes2.default.func,\n    script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    title: _propTypes2.default.string,\n    titleAttributes: _propTypes2.default.object,\n    titleTemplate: _propTypes2.default.string\n  }, _class.defaultProps = {\n    defer: true,\n    encodeSpecialCharacters: true\n  }, _class.peek = Component.peek, _class.rewind = function () {\n    var mappedState = Component.rewind();\n\n    if (!mappedState) {\n      // provide fallback if mappedState is undefined\n      mappedState = (0, _HelmetUtils.mapStateOnServer)({\n        baseTag: [],\n        bodyAttributes: {},\n        encodeSpecialCharacters: true,\n        htmlAttributes: {},\n        linkTags: [],\n        metaTags: [],\n        noscriptTags: [],\n        scriptTags: [],\n        styleTags: [],\n        title: \"\",\n        titleAttributes: {}\n      });\n    }\n\n    return mappedState;\n  }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n  return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","var get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) props = {};\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nexport { get, css };","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n    if (length !== keyList(b).length) return false;\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // start react-fast-compare\n    // custom handling for DOM elements\n\n\n    if (hasElementType && a instanceof Element && b instanceof Element) return a === b; // custom handling for React\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // end react-fast-compare\n    // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n  BODY: \"bodyAttributes\",\n  HTML: \"htmlAttributes\",\n  TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = exports.TAG_NAMES = {\n  BASE: \"base\",\n  BODY: \"body\",\n  HEAD: \"head\",\n  HTML: \"html\",\n  LINK: \"link\",\n  META: \"meta\",\n  NOSCRIPT: \"noscript\",\n  SCRIPT: \"script\",\n  STYLE: \"style\",\n  TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n  return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n  CHARSET: \"charset\",\n  CSS_TEXT: \"cssText\",\n  HREF: \"href\",\n  HTTPEQUIV: \"http-equiv\",\n  INNER_HTML: \"innerHTML\",\n  ITEM_PROP: \"itemprop\",\n  NAME: \"name\",\n  PROPERTY: \"property\",\n  REL: \"rel\",\n  SRC: \"src\"\n};\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n  accesskey: \"accessKey\",\n  charset: \"charSet\",\n  class: \"className\",\n  contenteditable: \"contentEditable\",\n  contextmenu: \"contextMenu\",\n  \"http-equiv\": \"httpEquiv\",\n  itemprop: \"itemProp\",\n  tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n  DEFAULT_TITLE: \"defaultTitle\",\n  DEFER: \"defer\",\n  ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n  ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n  TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n  obj[REACT_TAG_MAP[key]] = key;\n  return obj;\n}, {});\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n  return isNonNullObject(value) && !isSpecial(value);\n};\n\nfunction isNonNullObject(value) {\n  return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value) {\n  var stringValue = Object.prototype.toString.call(value);\n  return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n} // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n  return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nfunction emptyTarget(val) {\n  return Array.isArray(val) ? [] : {};\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n  return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\n\nfunction defaultArrayMerge(target, source, options) {\n  return target.concat(source).map(function (element) {\n    return cloneUnlessOtherwiseSpecified(element, options);\n  });\n}\n\nfunction getMergeFunction(key, options) {\n  if (!options.customMerge) {\n    return deepmerge;\n  }\n\n  var customMerge = options.customMerge(key);\n  return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n  return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n    return target.propertyIsEnumerable(symbol);\n  }) : [];\n}\n\nfunction getKeys(target) {\n  return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\n\nfunction propertyIsOnObject(object, property) {\n  try {\n    return property in object;\n  } catch (_) {\n    return false;\n  }\n} // Protects from prototype poisoning and unexpected merging up the prototype chain.\n\n\nfunction propertyIsUnsafe(target, key) {\n  return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n  && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n  && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n  var destination = {};\n\n  if (options.isMergeableObject(target)) {\n    getKeys(target).forEach(function (key) {\n      destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n    });\n  }\n\n  getKeys(source).forEach(function (key) {\n    if (propertyIsUnsafe(target, key)) {\n      return;\n    }\n\n    if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n      destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n    } else {\n      destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n    }\n  });\n  return destination;\n}\n\nfunction deepmerge(target, source, options) {\n  options = options || {};\n  options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n  options.isMergeableObject = options.isMergeableObject || isMergeableObject; // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n  // implementations can use it. The caller may not replace it.\n\n  options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n  var sourceIsArray = Array.isArray(source);\n  var targetIsArray = Array.isArray(target);\n  var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n  if (!sourceAndTargetTypesMatch) {\n    return cloneUnlessOtherwiseSpecified(source, options);\n  } else if (sourceIsArray) {\n    return options.arrayMerge(target, source, options);\n  } else {\n    return mergeObject(target, source, options);\n  }\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n  if (!Array.isArray(array)) {\n    throw new Error('first argument should be an array');\n  }\n\n  return array.reduce(function (prev, next) {\n    return deepmerge(prev, next, options);\n  }, {});\n};\n\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+\"","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n  var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (encode === false) {\n    return String(str);\n  }\n\n  return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n  var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n  var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n  if (innermostTemplate && innermostTitle) {\n    // use function arg to avoid need to escape $ characters\n    return innermostTemplate.replace(/%s/g, function () {\n      return innermostTitle;\n    });\n  }\n\n  var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n  return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n  return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[tagType] !== \"undefined\";\n  }).map(function (props) {\n    return props[tagType];\n  }).reduce(function (tagAttrs, current) {\n    return _extends({}, tagAttrs, current);\n  }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n  }).map(function (props) {\n    return props[_HelmetConstants.TAG_NAMES.BASE];\n  }).reverse().reduce(function (innermostBaseTag, tag) {\n    if (!innermostBaseTag.length) {\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n          return innermostBaseTag.concat(tag);\n        }\n      }\n    }\n\n    return innermostBaseTag;\n  }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n  // Calculate list of tags, giving priority innermost component (end of the propslist)\n  var approvedSeenTags = {};\n  return propsList.filter(function (props) {\n    if (Array.isArray(props[tagName])) {\n      return true;\n    }\n\n    if (typeof props[tagName] !== \"undefined\") {\n      warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n    }\n\n    return false;\n  }).map(function (props) {\n    return props[tagName];\n  }).reverse().reduce(function (approvedTags, instanceTags) {\n    var instanceSeenTags = {};\n    instanceTags.filter(function (tag) {\n      var primaryAttributeKey = void 0;\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n          primaryAttributeKey = lowerCaseAttributeKey;\n        } // Special case for innerHTML which doesn't work lowercased\n\n\n        if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n          primaryAttributeKey = attributeKey;\n        }\n      }\n\n      if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n        return false;\n      }\n\n      var value = tag[primaryAttributeKey].toLowerCase();\n\n      if (!approvedSeenTags[primaryAttributeKey]) {\n        approvedSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!instanceSeenTags[primaryAttributeKey]) {\n        instanceSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!approvedSeenTags[primaryAttributeKey][value]) {\n        instanceSeenTags[primaryAttributeKey][value] = true;\n        return true;\n      }\n\n      return false;\n    }).reverse().forEach(function (tag) {\n      return approvedTags.push(tag);\n    }); // Update seen tags with tags from this instance\n\n    var keys = Object.keys(instanceSeenTags);\n\n    for (var i = 0; i < keys.length; i++) {\n      var attributeKey = keys[i];\n      var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n      approvedSeenTags[attributeKey] = tagUnion;\n    }\n\n    return approvedTags;\n  }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n  for (var i = propsList.length - 1; i >= 0; i--) {\n    var props = propsList[i];\n\n    if (props.hasOwnProperty(property)) {\n      return props[property];\n    }\n  }\n\n  return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n  return {\n    baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n    defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n    encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n    htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n    linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n    noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    onChangeClientState: getOnChangeClientState(propsList),\n    scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n    title: getTitleFromPropsList(propsList),\n    titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n  };\n};\n\nvar rafPolyfill = function () {\n  var clock = Date.now();\n  return function (callback) {\n    var currentTime = Date.now();\n\n    if (currentTime - clock > 16) {\n      clock = currentTime;\n      callback(currentTime);\n    } else {\n      setTimeout(function () {\n        rafPolyfill(callback);\n      }, 0);\n    }\n  };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n  return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n  return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n  if (_helmetCallback) {\n    cancelAnimationFrame(_helmetCallback);\n  }\n\n  if (newState.defer) {\n    _helmetCallback = requestAnimationFrame(function () {\n      commitTagChanges(newState, function () {\n        _helmetCallback = null;\n      });\n    });\n  } else {\n    commitTagChanges(newState);\n    _helmetCallback = null;\n  }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n  var baseTag = newState.baseTag,\n      bodyAttributes = newState.bodyAttributes,\n      htmlAttributes = newState.htmlAttributes,\n      linkTags = newState.linkTags,\n      metaTags = newState.metaTags,\n      noscriptTags = newState.noscriptTags,\n      onChangeClientState = newState.onChangeClientState,\n      scriptTags = newState.scriptTags,\n      styleTags = newState.styleTags,\n      title = newState.title,\n      titleAttributes = newState.titleAttributes;\n  updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n  updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n  updateTitle(title, titleAttributes);\n  var tagUpdates = {\n    baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n    linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n    metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n    noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n    scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n    styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n  };\n  var addedTags = {};\n  var removedTags = {};\n  Object.keys(tagUpdates).forEach(function (tagType) {\n    var _tagUpdates$tagType = tagUpdates[tagType],\n        newTags = _tagUpdates$tagType.newTags,\n        oldTags = _tagUpdates$tagType.oldTags;\n\n    if (newTags.length) {\n      addedTags[tagType] = newTags;\n    }\n\n    if (oldTags.length) {\n      removedTags[tagType] = tagUpdates[tagType].oldTags;\n    }\n  });\n  cb && cb();\n  onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n  return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n  if (typeof title !== \"undefined\" && document.title !== title) {\n    document.title = flattenArray(title);\n  }\n\n  updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n  var elementTag = document.getElementsByTagName(tagName)[0];\n\n  if (!elementTag) {\n    return;\n  }\n\n  var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n  var attributesToRemove = [].concat(helmetAttributes);\n  var attributeKeys = Object.keys(attributes);\n\n  for (var i = 0; i < attributeKeys.length; i++) {\n    var attribute = attributeKeys[i];\n    var value = attributes[attribute] || \"\";\n\n    if (elementTag.getAttribute(attribute) !== value) {\n      elementTag.setAttribute(attribute, value);\n    }\n\n    if (helmetAttributes.indexOf(attribute) === -1) {\n      helmetAttributes.push(attribute);\n    }\n\n    var indexToSave = attributesToRemove.indexOf(attribute);\n\n    if (indexToSave !== -1) {\n      attributesToRemove.splice(indexToSave, 1);\n    }\n  }\n\n  for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n    elementTag.removeAttribute(attributesToRemove[_i]);\n  }\n\n  if (helmetAttributes.length === attributesToRemove.length) {\n    elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n    elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n  }\n};\n\nvar updateTags = function updateTags(type, tags) {\n  var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n  var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n  var oldTags = Array.prototype.slice.call(tagNodes);\n  var newTags = [];\n  var indexToDelete = void 0;\n\n  if (tags && tags.length) {\n    tags.forEach(function (tag) {\n      var newElement = document.createElement(type);\n\n      for (var attribute in tag) {\n        if (tag.hasOwnProperty(attribute)) {\n          if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n            newElement.innerHTML = tag.innerHTML;\n          } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n            if (newElement.styleSheet) {\n              newElement.styleSheet.cssText = tag.cssText;\n            } else {\n              newElement.appendChild(document.createTextNode(tag.cssText));\n            }\n          } else {\n            var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n            newElement.setAttribute(attribute, value);\n          }\n        }\n      }\n\n      newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n      if (oldTags.some(function (existingTag, index) {\n        indexToDelete = index;\n        return newElement.isEqualNode(existingTag);\n      })) {\n        oldTags.splice(indexToDelete, 1);\n      } else {\n        newTags.push(newElement);\n      }\n    });\n  }\n\n  oldTags.forEach(function (tag) {\n    return tag.parentNode.removeChild(tag);\n  });\n  newTags.forEach(function (tag) {\n    return headElement.appendChild(tag);\n  });\n  return {\n    oldTags: oldTags,\n    newTags: newTags\n  };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n  return Object.keys(attributes).reduce(function (str, key) {\n    var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n    return str ? str + \" \" + attr : attr;\n  }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n  var attributeString = generateElementAttributesAsString(attributes);\n  var flattenedTitle = flattenArray(title);\n  return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n  return tags.reduce(function (str, tag) {\n    var attributeHtml = Object.keys(tag).filter(function (attribute) {\n      return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n    }).reduce(function (string, attribute) {\n      var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n      return string ? string + \" \" + attr : attr;\n    }, \"\");\n    var tagContent = tag.innerHTML || tag.cssText || \"\";\n    var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n    return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n  }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n  var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(attributes).reduce(function (obj, key) {\n    obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n    return obj;\n  }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n  var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(props).reduce(function (obj, key) {\n    obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n    return obj;\n  }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n  var _initProps; // assigning into an array to define toString function on it\n\n\n  var initProps = (_initProps = {\n    key: title\n  }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n  var props = convertElementAttributestoReactProps(attributes, initProps);\n  return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n  return tags.map(function (tag, i) {\n    var _mappedTag;\n\n    var mappedTag = (_mappedTag = {\n      key: i\n    }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n    Object.keys(tag).forEach(function (attribute) {\n      var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n      if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n        var content = tag.innerHTML || tag.cssText;\n        mappedTag.dangerouslySetInnerHTML = {\n          __html: content\n        };\n      } else {\n        mappedTag[mappedAttribute] = tag[attribute];\n      }\n    });\n    return _react2.default.createElement(type, mappedTag);\n  });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n  switch (type) {\n    case _HelmetConstants.TAG_NAMES.TITLE:\n      return {\n        toComponent: function toComponent() {\n          return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n        },\n        toString: function toString() {\n          return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n        }\n      };\n\n    case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n    case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n      return {\n        toComponent: function toComponent() {\n          return convertElementAttributestoReactProps(tags);\n        },\n        toString: function toString() {\n          return generateElementAttributesAsString(tags);\n        }\n      };\n\n    default:\n      return {\n        toComponent: function toComponent() {\n          return generateTagsAsReactComponent(type, tags);\n        },\n        toString: function toString() {\n          return generateTagsAsString(type, tags, encode);\n        }\n      };\n  }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n  var baseTag = _ref.baseTag,\n      bodyAttributes = _ref.bodyAttributes,\n      encode = _ref.encode,\n      htmlAttributes = _ref.htmlAttributes,\n      linkTags = _ref.linkTags,\n      metaTags = _ref.metaTags,\n      noscriptTags = _ref.noscriptTags,\n      scriptTags = _ref.scriptTags,\n      styleTags = _ref.styleTags,\n      _ref$title = _ref.title,\n      title = _ref$title === undefined ? \"\" : _ref$title,\n      titleAttributes = _ref.titleAttributes;\n  return {\n    base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n    bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n    htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n    link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n    meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n    noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n    script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n    style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n    title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, {\n      title: title,\n      titleAttributes: titleAttributes\n    }, encode)\n  };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/commons-995392a5e28deac70171.js b/commons-995392a5e28deac70171.js
deleted file mode 100644
index 5ccc6ef..0000000
--- a/commons-995392a5e28deac70171.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{"2A+t":function(e,M,t){"use strict";t.d(M,"c",(function(){return D})),t.d(M,"a",(function(){return a})),t.d(M,"e",(function(){return u})),t.d(M,"d",(function(){return y})),t.d(M,"b",(function(){return O}));var r=t("qKvR"),i=t("ZdEh"),n=t("q1tI"),o=t.n(n),c=t("tZ2j"),N=t.n(c),j=t("ITVs"),g=function(e){if(!e)return null;var M={};for(var t in e)"sx"!==t&&(M[t]=e[t]);var r=function(e){if(e.sx||e.css)return function(M){return[Object(i.a)(e.sx)(M),"function"==typeof e.css?e.css(M):e.css]}}(e);return r&&(M.css=r),M},D=function(e,M){for(var t=[],i=arguments.length-2;i-- >0;)t[i]=arguments[i+2];return r.c.apply(void 0,[e,g(M)].concat(t))},a=o.a.createContext({__EMOTION_VERSION__:j.a,theme:null}),u=function(){return o.a.useContext(a)},I="function"==typeof Symbol&&Symbol.for,s=I?Symbol.for("react.element"):60103,T=I?Symbol.for("react.forward_ref"):60103,l=function(e){return!!e&&"object"==typeof e&&e.$$typeof!==s&&e.$$typeof!==T},L=function(e,M,t){return M},y=function(e,M){return N()(e,M,{isMergeableObject:l,arrayMerge:L})};y.all=function(){for(var e=[],M=arguments.length;M--;)e[M]=arguments[M];return N.a.all(e,{isMergeableObject:l,arrayMerge:L})};var z=function(e){var M=e.context,t=e.children;return D(r.b.Provider,{value:M.theme},D(a.Provider,{value:M,children:t}))},O=function(e){var M=e.theme,t=e.children,r=u();var i="function"==typeof M?Object.assign({},r,{theme:M(r.theme)}):y.all({},r,{theme:M});return D(z,{context:i,children:t})}},"8+s/":function(e,M,t){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var i=t("q1tI"),n=r(i),o=r(t("Gytx"));function c(e,M,t){return M in e?Object.defineProperty(e,M,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[M]=t,e}var N=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,M,t){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof M)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==t&&"function"!=typeof t)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var j,g=[];function D(){j=e(g.map((function(e){return e.props}))),a.canUseDOM?M(j):t&&(j=t(j))}var a=function(e){var M,t;function i(){return e.apply(this,arguments)||this}t=e,(M=i).prototype=Object.create(t.prototype),M.prototype.constructor=M,M.__proto__=t,i.peek=function(){return j},i.rewind=function(){if(i.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=j;return j=void 0,g=[],e};var c=i.prototype;return c.shouldComponentUpdate=function(e){return!o(e,this.props)},c.componentWillMount=function(){g.push(this),D()},c.componentDidUpdate=function(){D()},c.componentWillUnmount=function(){var e=g.indexOf(this);g.splice(e,1),D()},c.render=function(){return n.createElement(r,this.props)},i}(i.Component);return c(a,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),c(a,"canUseDOM",N),a}}},"9uj6":function(e,M,t){"use strict";var r=t("4qRI"),i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,n=Object(r.a)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}));M.a=n},Bl7J:function(e,M,t){"use strict";var r=t("q1tI"),i=t.n(r),n=t("2A+t"),o=t("qKvR"),c=t("ZdEh"),N=function(e){return"--theme-ui-"+e},j=function(e,M){return"var("+N(e)+", "+M+")"},g=function(){for(var e=[],M=arguments.length;M--;)e[M]=arguments[M];return e.filter(Boolean).join("-")},D={fontWeights:!0,lineHeights:!0},a={useCustomProperties:!0,initialColorModeName:!0,initialColorMode:!0},u=function(e,M){return"number"!=typeof M||D[e]?M:M+"px"},I=function e(M,t){var r={};for(var i in t)if("modes"!==i){var n=g(M,i),o=t[i];o&&"object"==typeof o?r=Object.assign({},r,e(n,o)):r[N(n)]=o}return r},s=function(e){try{return window.localStorage.getItem("theme-ui-color-mode")||e}catch(M){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",M)}},T=function(e){try{window.localStorage.setItem("theme-ui-color-mode",e)}catch(M){console.warn("localStorage is disabled and color mode might not work as expected.","Please check your Site Settings.",M)}},l=function(e){void 0===e&&(e={});var M=i.a.useState(e.initialColorModeName||"default"),t=M[0],r=M[1];return i.a.useEffect((function(){var M=s();if(document.body.classList.remove("theme-ui-"+M),M||!e.useColorSchemeMediaQuery){var i,n,o;M&&M!==t&&r(M)}else{var c=(i="(prefers-color-scheme: dark)",n=window.matchMedia?window.matchMedia(i):{},o=window.matchMedia?window.matchMedia("(prefers-color-scheme: light)"):{},n.media===i&&n.matches?"dark":"(prefers-color-scheme: light)"===o.media&&o.matches?"light":"default");r(c)}}),[]),i.a.useEffect((function(){t&&T(t)}),[t]),[t,r]},L=function(){return Object(n.c)(o.a,{styles:function(e){return function(e){if(void 0===e&&(e={}),!e.colors||!1===e.useBodyStyles)return{};if(!1===e.useCustomProperties||!e.colors.modes)return Object(c.a)({body:{color:"text",bg:"background"}})(e);var M=e.rawColors||e.colors,t=M.modes,r=I("colors",M);return Object.keys(t).forEach((function(e){r["&.theme-ui-"+e]=I("colors",t[e])})),Object(c.a)({body:Object.assign({},r,{color:"text",bg:"background"})})(e)}(e)}})},y=function(e){var M=e.children,t=Object(n.e)(),r=l(t.theme),i=r[0],N=r[1],D=function(e,M){if(!M)return e;var t=Object(c.b)(e,"colors.modes",{});return n.d.all({},e,{colors:Object(c.b)(t,M,{})})}(t.theme||{},i),I=Object.assign({},D);!1!==D.useCustomProperties&&(I.colors=function e(M,t,r){var i=Array.isArray(M)?[]:{};for(var n in M){var o=M[n],c=g(t,n);if(o&&"object"==typeof o)i[n]=e(o,c,n);else if(a[n])i[n]=o;else{var N=u(r||n,o);i[n]=j(c,N)}}return i}(I.colors,"colors"));var s=Object.assign({},t,{theme:D,colorMode:i,setColorMode:N});return Object(n.c)(o.b.Provider,{value:I},Object(n.c)(n.a.Provider,{value:s},Object(n.c)(L,{key:"color-mode"}),M))},z=t("MXbp"),O=function(e,M,t,r,i){for(M=M&&M.split?M.split("."):[M],r=0;r<M.length;r++)e=e?e[M[r]]:i;return e===i?t:e},A=[40,52,64].map((function(e){return e+"em"})),E={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},w={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},d={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},x={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},C=function(e,M){if("number"!=typeof M||M>=0)return O(e,M,M);var t=Math.abs(M),r=O(e,t,t);return"string"==typeof r?"-"+r:-1*r},p=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,M){var t;return Object.assign({},e,((t={})[M]=C,t))}),{}),S=function e(M){return function(t){void 0===t&&(t={});var r=Object.assign({},E,t.theme||t),i={},n=function(e){return function(M){var t={},r=O(M,"breakpoints",A),i=[null].concat(r.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var n in e){var o="function"==typeof e[n]?e[n](M):e[n];if(null!=o)if(Array.isArray(o))for(var c=0;c<o.slice(0,i.length).length;c++){var N=i[c];N?(t[N]=t[N]||{},null!=o[c]&&(t[N][n]=o[c])):t[n]=o[c]}else t[n]=o}return t}}("function"==typeof M?M(r):M)(r);for(var o in n){var c=n[o],N="function"==typeof c?c(r):c;if("variant"!==o)if(N&&"object"==typeof N)i[o]=e(N)(r);else{var j=O(w,o,o),g=O(x,j),D=O(r,g,O(r,j,{})),a=O(p,j,O)(D,N,N);if(d[j])for(var u=d[j],I=0;I<u.length;I++)i[u[I]]=a;else i[j]=a}else{var s=e(O(r,N))(r);i=Object.assign({},i,s)}}return i}},f=function(){return Object(n.c)(o.a,{styles:function(e){if(!1===e.useBodyStyles||e.styles&&!e.styles.root)return!1;var M=!1===e.useBorderBox?null:"border-box";return S({"*":{boxSizing:M},body:{margin:0,variant:"styles.root"}})(e)}})},b=function(e){var M=e.theme,t=e.components,r=e.children;return"function"==typeof Object(n.e)().setColorMode?Object(n.c)(n.b,{theme:M},Object(n.c)(z.a,{components:t,children:r})):Object(n.c)(n.b,{theme:M},Object(n.c)(y,null,Object(n.c)(f),Object(n.c)(z.a,{components:t,children:r})))},m={fonts:{heading:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'",body:"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'"},colors:{darkText:"#4d4f50",lightText:"#d8d8d8",links:"#5DA7A3",primary:"#434343",secondary:"#5DA7A3",secondaryDark:"#5d9da3",accent:"#F8D000",background:"#FFFFFF",lightGrey:"#F1F1F1"},radii:{button:"2.5rem",card:"0.5rem"},breakpoints:["35rem","62.5rem","85rem","120rem"],fontSizes:[16,18,20,24,28,36],space:[0,8,16,24,32,40],fontWeights:{body:400,heading:700},lineHeights:{body:1.5,heading:1.125},buttons:{primary:{backgroundColor:"secondary",color:"white",borderRadius:"button",height:"2rem",width:"10rem",border:"none",fontFamily:"body",fontSize:0,"&:hover":{cursor:"pointer",backgroundColor:"secondaryDark",borderColor:"secondaryDark",textDecoration:"none",color:"white"}},secondary:{variant:"buttons.primary",width:"12rem"}},text:{heading:{fontFamily:"heading",lineHeight:"heading",fontWeight:"heading",marginY:2}},styles:{root:{fontFamily:"body",lineHeight:"body",fontWeight:"body"},h1:{variant:"text.heading",fontSize:5},h2:{variant:"text.heading",fontSize:4},h3:{variant:"text.heading",fontSize:3},h4:{variant:"text.heading",fontSize:2},h5:{variant:"text.heading",fontSize:1},h6:{variant:"text.heading",fontSize:0},p:{marginBottom:5,fontSize:1}},lists:{navRow:{display:"flex",listStyle:"none",justifyContent:"flex-end",li:{padding:1,marginX:1,a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}},"li:first-of-type":{marginLeft:0},"li:last-child":{marginRight:0,paddingRight:0}},navCol:{variant:"lists.navRow",flexDirection:"column",li:{padding:1,paddingLeft:0}}},borders:{cardBorder:"#5DA7A3 0.625rem solid"},shadows:{cardShadow:"#DADADA 0 0 1.25rem"}},k=t("Wbzz"),h=t("TwYP"),Q=t.n(h),Y=t("taE0"),U=t.n(Y),v=t("Q4rR"),B=t.n(v),P=t("JAXw"),G=t.n(P),R=t("Fy0m"),Z=t.n(R),_=function(e){var M=e.isHome;return Object(n.c)("header",{sx:{display:["none","none","flex","flex"],backgroundColor:M?"#00000000":"primary",position:M?"absolute":null,width:"100%",color:"lightText",paddingX:5,paddingY:4,alignItems:"center"}},Object(n.c)("div",{sx:{flex:1,opacity:M?0:1,pointerEvents:M?"none":"all"}},Object(n.c)(k.Link,{to:"/"},Object(n.c)("img",{src:Q.a,alt:"OpenJ9 Logo"}))),Object(n.c)("nav",{sx:{flex:2}},Object(n.c)("ul",{sx:{variant:"lists.navRow"}},Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/"},"Home")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/about"},"About")),Object(n.c)("li",null,Object(n.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/performance"},"Performance")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/news"},"News")))),Object(n.c)("nav",{sx:{flex:1}},Object(n.c)("ul",{sx:{variant:"lists.navRow"}},Object(n.c)("li",null,Object(n.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:G.a,alt:"Twitter Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://github.com/eclipse/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:B.a,alt:"GitHub Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:U.a,alt:"Slack logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:Z.a,alt:"Stack Overflow logo"}))))))},H=t("fuUq"),W=t.n(H),X=function(){return Object(n.c)("footer",{sx:{display:"flex",backgroundColor:"primary",color:"white",flexWrap:"wrap",padding:"1rem",paddingBottom:["3rem","3rem","0","0"],flexDirection:"reverse-column"}},Object(n.c)("section",{sx:{flex:"50%",display:["flex","none","none","none"],alignItems:["center","center","flex-end","flex-end"],flexDirection:"column"}},Object(n.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:W.a,alt:"Eclipse Incubator Logo"})),Object(n.c)(z.b.h6,{sx:{fontSize:"0.9rem"}},"OpenJ9 is an Eclipse Incubator Project")),Object(n.c)("nav",{sx:{display:["flex","flex","flex","flex"],flex:["100%","50%","50%","50%"],flexDirection:["column","row","row","row"],justifyContent:"center",a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(n.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem","0.8rem","0.8rem"],marginRight:"1.1rem",padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(n.c)(z.b.h4,{sx:{marginBottom:"0.2rem"}},"Docs"),Object(n.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/openj9_newuser/",rel:"noopener noreferrer",target:"_blank"},"New to OpenJ9?")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/introduction/",rel:"noopener noreferrer",target:"_blank"},"Getting started")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/openj9/docs/cmdline_specifying/",rel:"noopener noreferrer",target:"_blank"},"Command-line options")))),Object(n.c)("section",{sx:{flex:1,paddingLeft:["2rem","0.8rem",0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"]}},Object(n.c)(z.b.h4,{sx:{marginBottom:"0.2rem"}},"Resources"),Object(n.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(n.c)("li",null,Object(n.c)(k.Link,{sx:{textDecoration:"none",color:"white"},to:"/about"},"About")),Object(n.c)("li",null,Object(n.c)(k.Link,{sx:{textDecoration:"none",color:"white"},to:"/performance"},"Performance")))),Object(n.c)("section",{sx:{flex:1,paddingLeft:["2rem",0,0,0],padding:["1rem",0],fontSize:["1rem","0.9rem","1rem","1rem"],marginLeft:[0,"1rem"]}},Object(n.c)(z.b.h4,{sx:{marginBottom:"0.2rem"}},"Community"),Object(n.c)("ul",{sx:{variant:"lists.navCol",li:{padding:0}}},Object(n.c)("li",null,Object(n.c)(k.Link,{sx:{textDecoration:"none",color:"white"},to:"/news"},"News")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://blog.openj9.org/",rel:"noopener noreferrer",target:"_blank"},"Blogs"))))),Object(n.c)("section",{sx:{flex:"25%",display:["none","flex","flex","flex"],alignItems:["center","flex-end","flex-end","flex-end"],flexDirection:"column"}},Object(n.c)(z.b.h6,{sx:{fontSize:"0.9rem",marginTop:"1.3rem",marginLeft:"0.6rem"}},"OpenJ9 is an Eclipse Incubator Project"),Object(n.c)("a",{href:"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:W.a,alt:"Eclipse Incubator Logo"}))),Object(n.c)("div",{sx:{height:"0.15rem",backgroundColor:"secondary",width:"100%",marginY:2}}),Object(n.c)("nav",{sx:{width:"70%"}},Object(n.c)("ul",{sx:{display:"flex",flexDirection:["column","row","row","row"],li:{padding:"0.4rem",fontSize:["0.9rem","0.7rem","1rem","1rem"],listStyleType:"none",paddingLeft:"1rem",color:"white"},a:{color:"white",textDecoration:"none","&:hover":{color:"links"}}}},Object(n.c)("li",{sx:{paddingLeft:["1rem","0rem !important","0.5rem !important","0.5 !important"]}},Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/",rel:"noopener noreferrer",target:"_blank"},"Eclipse Foundation Website ")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/privacy.php",rel:"noopener noreferrer",target:"_blank"},"Privacy Policy")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/termsofuse.php",rel:"noopener noreferrer",target:"_blank"},"Terms of Use")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/copyright.php",rel:"noopener noreferrer",target:"_blank"},"Copyright Agent")),Object(n.c)("li",null,Object(n.c)("a",{sx:{textDecoration:"none",color:"white"},href:"https://www.eclipse.org/legal/",rel:"noopener noreferrer",target:"_blank"},"Legal")))),Object(n.c)("nav",{sx:{display:["inline","inline","block","block"],flex:"30%"}},Object(n.c)("ul",{sx:{variant:"lists.navRow",justifyContent:["center","flex-end","flex-end","flex-end"]}},Object(n.c)("li",null,Object(n.c)("a",{href:"https://twitter.com/openj9/",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:G.a,alt:"Twitter Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://github.com/eclipse/openj9",rel:"noopener noreferrer",target:"_blank"}," ",Object(n.c)("img",{src:B.a,alt:"GitHub Logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://openj9.slack.com/",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:U.a,alt:"Slack logo"}))),Object(n.c)("li",null,Object(n.c)("a",{href:"https://stackoverflow.com/search?q=%23OpenJ9",rel:"noopener noreferrer",target:"_blank"},Object(n.c)("img",{src:Z.a,alt:"Stack Overflow logo"}))))))},F=t("TJpk"),J=function(e){var M=e.title,t=e.description,r=Object(k.useStaticQuery)(K).site.siteMetadata,i=r.defaultTitle,n=r.titleTemplate,c=r.defaultDescription,N=r.siteUrl,j=r.twitterUsername,g={title:M||i,description:t||c,image:r.defaultImage,url:""+N};return Object(o.c)(F.Helmet,{title:g.title,titleTemplate:n},Object(o.c)("meta",{name:"description",content:g.description}),Object(o.c)("meta",{name:"image",content:g.image}),g.url&&Object(o.c)("meta",{property:"og:url",content:g.url}),g.title&&Object(o.c)("meta",{property:"og:title",content:g.title}),g.description&&Object(o.c)("meta",{property:"og:description",content:g.description}),g.image&&Object(o.c)("meta",{property:"og:image",content:g.image}),Object(o.c)("meta",{name:"twitter:card",content:"summary_large_image"}),j&&Object(o.c)("meta",{name:"twitter:creator",content:j}),g.title&&Object(o.c)("meta",{name:"twitter:title",content:g.title}),g.description&&Object(o.c)("meta",{name:"twitter:description",content:g.description}),Object(o.c)("link",{href:"https://fonts.googleapis.com/css2?family=Gelasio:ital,wght@0,400;0,700;1,400;1,700&display=swap",rel:"stylesheet"}),Object(o.c)("link",{rel:"stylesheet",type:"text/css",href:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css"}),Object(o.c)("script",{src:"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"}))},V=J;J.defaultProps={title:null,description:null};var K="965098542",q=function(e){return Object(o.c)(V,{title:e.title,description:e.description})},$=function(){return Object(n.c)("nav",{sx:{display:["flex","flex","none","none"],justifyContent:"center",alignItems:"center",position:"fixed",width:"100%",bottom:"0",backgroundColor:"white",height:"3rem",boxShadow:"0 0.5rem 2rem grey",zIndex:"9999"}},Object(n.c)("ul",{sx:{variant:"lists.navRow",li:{a:{color:"black",textDecoration:"none"}},justifyContent:"space-evenly",width:"100%"}},Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/"},"Home")),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/about"},"About")," "),Object(n.c)("li",null,Object(n.c)("a",{href:"https://www.eclipse.org/openj9/docs/",rel:"noopener noreferrer",target:"_blank"},"Docs")," "),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/performance"},"Performance")," "),Object(n.c)("li",null,Object(n.c)(k.Link,{to:"/news"},"News")," ")))};M.a=function(e){var M=e.children,t=e.isHome,r=e.title,i=e.description;return Object(o.c)(b,{theme:m},Object(o.c)(o.a,{styles:function(e){return{"*":{padding:0,margin:0}}}}),Object(o.c)(q,{title:r,description:i}),Object(o.c)(_,{isHome:t}),Object(o.c)($,null),M,Object(o.c)(X,null))}},Fy0m:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo="},Gytx:function(e,M){e.exports=function(e,M,t,r){var i=t?t.call(r,e,M):void 0;if(void 0!==i)return!!i;if(e===M)return!0;if("object"!=typeof e||!e||"object"!=typeof M||!M)return!1;var n=Object.keys(e),o=Object.keys(M);if(n.length!==o.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(M),N=0;N<n.length;N++){var j=n[N];if(!c(j))return!1;var g=e[j],D=M[j];if(!1===(i=t?t.call(r,g,D,j):void 0)||void 0===i&&g!==D)return!1}return!0}},ITVs:function(e){e.exports=JSON.parse('{"a":"10.0.34"}')},JAXw:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},MXbp:function(e,M,t){"use strict";t.d(M,"b",(function(){return b})),t.d(M,"a",(function(){return k}));var r=t("2A+t"),i=t("ZdEh"),n=t("q1tI"),o=t.n(n),c=t("qKvR"),N=t("lSNA"),j=t.n(N),g=t("9uj6"),D=t("SIPS"),a=t("MiSq"),u=g.a,I=function(e){return"theme"!==e&&"innerRef"!==e},s=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?u:I};function T(e,M){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);M&&(r=r.filter((function(M){return Object.getOwnPropertyDescriptor(e,M).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var M=1;M<arguments.length;M++){var t=null!=arguments[M]?arguments[M]:{};M%2?T(t,!0).forEach((function(M){j()(e,M,t[M])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):T(t).forEach((function(M){Object.defineProperty(e,M,Object.getOwnPropertyDescriptor(t,M))}))}return e}var L=function e(M,t){var r,i,o;void 0!==t&&(r=t.label,o=t.target,i=M.__emotion_forwardProp&&t.shouldForwardProp?function(e){return M.__emotion_forwardProp(e)&&t.shouldForwardProp(e)}:t.shouldForwardProp);var N=M.__emotion_real===M,j=N&&M.__emotion_base||M;"function"!=typeof i&&N&&(i=M.__emotion_forwardProp);var g=i||s(j),u=!g("as");return function(){var I=arguments,T=N&&void 0!==M.__emotion_styles?M.__emotion_styles.slice(0):[];if(void 0!==r&&T.push("label:"+r+";"),null==I[0]||void 0===I[0].raw)T.push.apply(T,I);else{0,T.push(I[0][0]);for(var L=I.length,y=1;y<L;y++)T.push(I[y],I[0][y])}var z=Object(c.d)((function(e,M,t){return Object(n.createElement)(c.b.Consumer,null,(function(r){var c=u&&e.as||j,N="",I=[],l=e;if(null==e.theme){for(var L in l={},e)l[L]=e[L];l.theme=r}"string"==typeof e.className?N=Object(D.a)(M.registered,I,e.className):null!=e.className&&(N=e.className+" ");var y=Object(a.a)(T.concat(I),M.registered,l);Object(D.b)(M,y,"string"==typeof c);N+=M.key+"-"+y.name,void 0!==o&&(N+=" "+o);var z=u&&void 0===i?s(c):g,O={};for(var A in e)u&&"as"===A||z(A)&&(O[A]=e[A]);return O.className=N,O.ref=t||e.innerRef,Object(n.createElement)(c,O)}))}));return z.displayName=void 0!==r?r:"Styled("+("string"==typeof j?j:j.displayName||j.name||"Component")+")",z.defaultProps=M.defaultProps,z.__emotion_real=z,z.__emotion_base=j,z.__emotion_styles=T,z.__emotion_forwardProp=i,Object.defineProperty(z,"toString",{value:function(){return"."+o}}),z.withComponent=function(M,r){return e(M,void 0!==r?l({},t||{},{},r):t).apply(void 0,T)},z}}.bind();["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){L[e]=L(e)}));var y=L;function z(e,M,t){return M in e?Object.defineProperty(e,M,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[M]=t,e}function O(e,M){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);M&&(r=r.filter((function(M){return Object.getOwnPropertyDescriptor(e,M).enumerable}))),t.push.apply(t,r)}return t}function A(e){for(var M=1;M<arguments.length;M++){var t=null!=arguments[M]?arguments[M]:{};M%2?O(Object(t),!0).forEach((function(M){z(e,M,t[M])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):O(Object(t)).forEach((function(M){Object.defineProperty(e,M,Object.getOwnPropertyDescriptor(t,M))}))}return e}function E(e,M){if(null==e)return{};var t,r,i=function(e,M){if(null==e)return{};var t,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)t=n[r],M.indexOf(t)>=0||(i[t]=e[t]);return i}(e,M);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)t=n[r],M.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var w=o.a.createContext({}),d=function(e){var M=o.a.useContext(w),t=M;return e&&(t="function"==typeof e?e(M):A(A({},M),e)),t},x=function(e){var M=d(e.components);return o.a.createElement(w.Provider,{value:M},e.children)},C={inlineCode:"code",wrapper:function(e){var M=e.children;return o.a.createElement(o.a.Fragment,{},M)}},p=o.a.forwardRef((function(e,M){var t=e.components,r=e.mdxType,i=e.originalType,n=e.parentName,c=E(e,["components","mdxType","originalType","parentName"]),N=d(t),j=r,g=N["".concat(n,".").concat(j)]||N[j]||C[j]||i;return t?o.a.createElement(g,A(A({ref:M},c),{},{components:t})):o.a.createElement(g,A({ref:M},c))}));p.displayName="MDXCreateElement";var S={inlineCode:"code",thematicBreak:"hr",root:"div"},f=function(e){return function(M){return Object(i.a)(Object(i.b)(M.theme,"styles."+e))(M.theme)}},b=y("div")(f("div")),m={};["p","b","i","a","h1","h2","h3","h4","h5","h6","img","pre","code","ol","ul","li","blockquote","hr","em","table","tr","th","td","em","strong","del","inlineCode","thematicBreak","div","root"].forEach((function(e){var M;m[e]=y(S[M=e]||M)(f(e)),b[e]=m[e]}));var k=function(e){var M,t,i=e.components,n=e.children,o=d();return Object(r.c)(x,{components:(M=Object.assign({},o,i),t=Object.assign({},m),Object.keys(M).forEach((function(e){t[e]=y(M[e])(f(e))})),t),children:n})}},Q4rR:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},TJpk:function(e,M,t){M.__esModule=!0,M.Helmet=void 0;var r=Object.assign||function(e){for(var M=1;M<arguments.length;M++){var t=arguments[M];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},i=function(){function e(e,M){for(var t=0;t<M.length;t++){var r=M[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(M,t,r){return t&&e(M.prototype,t),r&&e(M,r),M}}(),n=D(t("q1tI")),o=D(t("17x9")),c=D(t("8+s/")),N=D(t("bmMU")),j=t("v1p5"),g=t("hFT/");function D(e){return e&&e.__esModule?e:{default:e}}function a(e,M){var t={};for(var r in e)M.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}function u(e,M){if(!(e instanceof M))throw new TypeError("Cannot call a class as a function")}function I(e,M){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!M||"object"!=typeof M&&"function"!=typeof M?e:M}var s,T,l,L=(0,c.default)(j.reducePropsToState,j.handleClientStateChange,j.mapStateOnServer)((function(){return null})),y=(s=L,l=T=function(e){function M(){return u(this,M),I(this,e.apply(this,arguments))}return function(e,M){if("function"!=typeof M&&null!==M)throw new TypeError("Super expression must either be null or a function, not "+typeof M);e.prototype=Object.create(M&&M.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),M&&(Object.setPrototypeOf?Object.setPrototypeOf(e,M):e.__proto__=M)}(M,e),M.prototype.shouldComponentUpdate=function(e){return!(0,N.default)(this.props,e)},M.prototype.mapNestedChildrenToProps=function(e,M){if(!M)return null;switch(e.type){case g.TAG_NAMES.SCRIPT:case g.TAG_NAMES.NOSCRIPT:return{innerHTML:M};case g.TAG_NAMES.STYLE:return{cssText:M}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},M.prototype.flattenArrayTypeChildren=function(e){var M,t=e.child,i=e.arrayTypeChildren,n=e.newChildProps,o=e.nestedChildren;return r({},i,((M={})[t.type]=[].concat(i[t.type]||[],[r({},n,this.mapNestedChildrenToProps(t,o))]),M))},M.prototype.mapObjectTypeChildren=function(e){var M,t,i=e.child,n=e.newProps,o=e.newChildProps,c=e.nestedChildren;switch(i.type){case g.TAG_NAMES.TITLE:return r({},n,((M={})[i.type]=c,M.titleAttributes=r({},o),M));case g.TAG_NAMES.BODY:return r({},n,{bodyAttributes:r({},o)});case g.TAG_NAMES.HTML:return r({},n,{htmlAttributes:r({},o)})}return r({},n,((t={})[i.type]=r({},o),t))},M.prototype.mapArrayTypeChildrenToProps=function(e,M){var t=r({},M);return Object.keys(e).forEach((function(M){var i;t=r({},t,((i={})[M]=e[M],i))})),t},M.prototype.warnOnInvalidChildren=function(e,M){return!0},M.prototype.mapChildrenToProps=function(e,M){var t=this,r={};return n.default.Children.forEach(e,(function(e){if(e&&e.props){var i=e.props,n=i.children,o=a(i,["children"]),c=(0,j.convertReactPropstoHtmlAttributes)(o);switch(t.warnOnInvalidChildren(e,n),e.type){case g.TAG_NAMES.LINK:case g.TAG_NAMES.META:case g.TAG_NAMES.NOSCRIPT:case g.TAG_NAMES.SCRIPT:case g.TAG_NAMES.STYLE:r=t.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:c,nestedChildren:n});break;default:M=t.mapObjectTypeChildren({child:e,newProps:M,newChildProps:c,nestedChildren:n})}}})),M=this.mapArrayTypeChildrenToProps(r,M)},M.prototype.render=function(){var e=this.props,M=e.children,t=a(e,["children"]),i=r({},t);return M&&(i=this.mapChildrenToProps(M,i)),n.default.createElement(s,i)},i(M,null,[{key:"canUseDOM",set:function(e){s.canUseDOM=e}}]),M}(n.default.Component),T.propTypes={base:o.default.object,bodyAttributes:o.default.object,children:o.default.oneOfType([o.default.arrayOf(o.default.node),o.default.node]),defaultTitle:o.default.string,defer:o.default.bool,encodeSpecialCharacters:o.default.bool,htmlAttributes:o.default.object,link:o.default.arrayOf(o.default.object),meta:o.default.arrayOf(o.default.object),noscript:o.default.arrayOf(o.default.object),onChangeClientState:o.default.func,script:o.default.arrayOf(o.default.object),style:o.default.arrayOf(o.default.object),title:o.default.string,titleAttributes:o.default.object,titleTemplate:o.default.string},T.defaultProps={defer:!0,encodeSpecialCharacters:!0},T.peek=s.peek,T.rewind=function(){var e=s.rewind();return e||(e=(0,j.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},l);y.renderStatic=y.rewind,M.Helmet=y,M.default=y},TwYP:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},ZdEh:function(e,M,t){"use strict";t.d(M,"b",(function(){return r})),t.d(M,"a",(function(){return D}));var r=function(e,M,t,r,i){for(M=M&&M.split?M.split("."):[M],r=0;r<M.length;r++)e=e?e[M[r]]:i;return e===i?t:e},i=[40,52,64].map((function(e){return e+"em"})),n={space:[0,4,8,16,32,64,128,256,512],fontSizes:[12,14,16,20,24,32,48,64,72]},o={bg:"backgroundColor",m:"margin",mt:"marginTop",mr:"marginRight",mb:"marginBottom",ml:"marginLeft",mx:"marginX",my:"marginY",p:"padding",pt:"paddingTop",pr:"paddingRight",pb:"paddingBottom",pl:"paddingLeft",px:"paddingX",py:"paddingY"},c={marginX:["marginLeft","marginRight"],marginY:["marginTop","marginBottom"],paddingX:["paddingLeft","paddingRight"],paddingY:["paddingTop","paddingBottom"],size:["width","height"]},N={color:"colors",backgroundColor:"colors",borderColor:"colors",margin:"space",marginTop:"space",marginRight:"space",marginBottom:"space",marginLeft:"space",marginX:"space",marginY:"space",padding:"space",paddingTop:"space",paddingRight:"space",paddingBottom:"space",paddingLeft:"space",paddingX:"space",paddingY:"space",top:"space",right:"space",bottom:"space",left:"space",gridGap:"space",gridColumnGap:"space",gridRowGap:"space",gap:"space",columnGap:"space",rowGap:"space",fontFamily:"fonts",fontSize:"fontSizes",fontWeight:"fontWeights",lineHeight:"lineHeights",letterSpacing:"letterSpacings",border:"borders",borderTop:"borders",borderRight:"borders",borderBottom:"borders",borderLeft:"borders",borderWidth:"borderWidths",borderStyle:"borderStyles",borderRadius:"radii",borderTopRightRadius:"radii",borderTopLeftRadius:"radii",borderBottomRightRadius:"radii",borderBottomLeftRadius:"radii",borderTopWidth:"borderWidths",borderTopColor:"colors",borderTopStyle:"borderStyles",borderBottomWidth:"borderWidths",borderBottomColor:"colors",borderBottomStyle:"borderStyles",borderLeftWidth:"borderWidths",borderLeftColor:"colors",borderLeftStyle:"borderStyles",borderRightWidth:"borderWidths",borderRightColor:"colors",borderRightStyle:"borderStyles",outlineColor:"colors",boxShadow:"shadows",textShadow:"shadows",zIndex:"zIndices",width:"sizes",minWidth:"sizes",maxWidth:"sizes",height:"sizes",minHeight:"sizes",maxHeight:"sizes",flexBasis:"sizes",size:"sizes",fill:"colors",stroke:"colors"},j=function(e,M){if("number"!=typeof M||M>=0)return r(e,M,M);var t=Math.abs(M),i=r(e,t,t);return"string"==typeof i?"-"+i:-1*i},g=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,M){var t;return Object.assign({},e,((t={})[M]=j,t))}),{}),D=function e(M){return function(t){void 0===t&&(t={});var j=Object.assign({},n,t.theme||t),D={},a=function(e){return function(M){var t={},n=r(M,"breakpoints",i),o=[null].concat(n.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var c in e){var N="function"==typeof e[c]?e[c](M):e[c];if(null!=N)if(Array.isArray(N))for(var j=0;j<N.slice(0,o.length).length;j++){var g=o[j];g?(t[g]=t[g]||{},null!=N[j]&&(t[g][c]=N[j])):t[c]=N[j]}else t[c]=N}return t}}("function"==typeof M?M(j):M)(j);for(var u in a){var I=a[u],s="function"==typeof I?I(j):I;if("variant"!==u)if(s&&"object"==typeof s)D[u]=e(s)(j);else{var T=r(o,u,u),l=r(N,T),L=r(j,l,r(j,T,{})),y=r(g,T,r)(L,s,s);if(c[T])for(var z=c[T],O=0;O<z.length;O++)D[z[O]]=y;else D[T]=y}else{var A=e(r(j,s))(j);D=Object.assign({},D,A)}}return D}}},bmMU:function(e,M,t){"use strict";var r=Array.isArray,i=Object.keys,n=Object.prototype.hasOwnProperty,o="undefined"!=typeof Element;e.exports=function(e,M){try{return function e(M,t){if(M===t)return!0;if(M&&t&&"object"==typeof M&&"object"==typeof t){var c,N,j,g=r(M),D=r(t);if(g&&D){if((N=M.length)!=t.length)return!1;for(c=N;0!=c--;)if(!e(M[c],t[c]))return!1;return!0}if(g!=D)return!1;var a=M instanceof Date,u=t instanceof Date;if(a!=u)return!1;if(a&&u)return M.getTime()==t.getTime();var I=M instanceof RegExp,s=t instanceof RegExp;if(I!=s)return!1;if(I&&s)return M.toString()==t.toString();var T=i(M);if((N=T.length)!==i(t).length)return!1;for(c=N;0!=c--;)if(!n.call(t,T[c]))return!1;if(o&&M instanceof Element&&t instanceof Element)return M===t;for(c=N;0!=c--;)if(!("_owner"===(j=T[c])&&M.$$typeof||e(M[j],t[j])))return!1;return!0}return M!=M&&t!=t}(e,M)}catch(t){if(t.message&&t.message.match(/stack|recursion/i)||-2146828260===t.number)return console.warn("Warning: react-fast-compare does not handle circular references.",t.name,t.message),!1;throw t}}},fuUq:function(e,M){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},"hFT/":function(e,M){M.__esModule=!0;M.ATTRIBUTE_NAMES={BODY:"bodyAttributes",HTML:"htmlAttributes",TITLE:"titleAttributes"};var t=M.TAG_NAMES={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},r=(M.VALID_TAG_NAMES=Object.keys(t).map((function(e){return t[e]})),M.TAG_PROPERTIES={CHARSET:"charset",CSS_TEXT:"cssText",HREF:"href",HTTPEQUIV:"http-equiv",INNER_HTML:"innerHTML",ITEM_PROP:"itemprop",NAME:"name",PROPERTY:"property",REL:"rel",SRC:"src"},M.REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"});M.HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate"},M.HTML_TAG_MAP=Object.keys(r).reduce((function(e,M){return e[r[M]]=M,e}),{}),M.SELF_CLOSING_TAGS=[t.NOSCRIPT,t.SCRIPT,t.STYLE],M.HELMET_ATTRIBUTE="data-react-helmet"},lSNA:function(e,M){e.exports=function(e,M,t){return M in e?Object.defineProperty(e,M,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[M]=t,e}},tZ2j:function(e,M,t){"use strict";var r=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var M=Object.prototype.toString.call(e);return"[object RegExp]"===M||"[object Date]"===M||function(e){return e.$$typeof===i}(e)}(e)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,M){return!1!==M.clone&&M.isMergeableObject(e)?g((t=e,Array.isArray(t)?[]:{}),e,M):e;var t}function o(e,M,t){return e.concat(M).map((function(e){return n(e,t)}))}function c(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(M){return e.propertyIsEnumerable(M)})):[]}(e))}function N(e,M){try{return M in e}catch(t){return!1}}function j(e,M,t){var r={};return t.isMergeableObject(e)&&c(e).forEach((function(M){r[M]=n(e[M],t)})),c(M).forEach((function(i){(function(e,M){return N(e,M)&&!(Object.hasOwnProperty.call(e,M)&&Object.propertyIsEnumerable.call(e,M))})(e,i)||(N(e,i)&&t.isMergeableObject(M[i])?r[i]=function(e,M){if(!M.customMerge)return g;var t=M.customMerge(e);return"function"==typeof t?t:g}(i,t)(e[i],M[i],t):r[i]=n(M[i],t))})),r}function g(e,M,t){(t=t||{}).arrayMerge=t.arrayMerge||o,t.isMergeableObject=t.isMergeableObject||r,t.cloneUnlessOtherwiseSpecified=n;var i=Array.isArray(M);return i===Array.isArray(e)?i?t.arrayMerge(e,M,t):j(e,M,t):n(M,t)}g.all=function(e,M){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,t){return g(e,t,M)}),{})};var D=g;e.exports=D},taE0:function(e,M){e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+"},v1p5:function(e,M,t){(function(e){M.__esModule=!0,M.warn=M.requestAnimationFrame=M.reducePropsToState=M.mapStateOnServer=M.handleClientStateChange=M.convertReactPropstoHtmlAttributes=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=Object.assign||function(e){for(var M=1;M<arguments.length;M++){var t=arguments[M];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},n=N(t("q1tI")),o=N(t("6qGY")),c=t("hFT/");function N(e){return e&&e.__esModule?e:{default:e}}var j,g=function(e){var M=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===M?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")},D=function(e){var M=T(e,c.TAG_NAMES.TITLE),t=T(e,c.HELMET_PROPS.TITLE_TEMPLATE);if(t&&M)return t.replace(/%s/g,(function(){return M}));var r=T(e,c.HELMET_PROPS.DEFAULT_TITLE);return M||r||void 0},a=function(e){return T(e,c.HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},u=function(e,M){return M.filter((function(M){return void 0!==M[e]})).map((function(M){return M[e]})).reduce((function(e,M){return i({},e,M)}),{})},I=function(e,M){return M.filter((function(e){return void 0!==e[c.TAG_NAMES.BASE]})).map((function(e){return e[c.TAG_NAMES.BASE]})).reverse().reduce((function(M,t){if(!M.length)for(var r=Object.keys(t),i=0;i<r.length;i++){var n=r[i].toLowerCase();if(-1!==e.indexOf(n)&&t[n])return M.concat(t)}return M}),[])},s=function(e,M,t){var i={};return t.filter((function(M){return!!Array.isArray(M[e])||(void 0!==M[e]&&O("Helmet: "+e+' should be of type "Array". Instead found type "'+r(M[e])+'"'),!1)})).map((function(M){return M[e]})).reverse().reduce((function(e,t){var r={};t.filter((function(e){for(var t=void 0,n=Object.keys(e),o=0;o<n.length;o++){var N=n[o],j=N.toLowerCase();-1===M.indexOf(j)||t===c.TAG_PROPERTIES.REL&&"canonical"===e[t].toLowerCase()||j===c.TAG_PROPERTIES.REL&&"stylesheet"===e[j].toLowerCase()||(t=j),-1===M.indexOf(N)||N!==c.TAG_PROPERTIES.INNER_HTML&&N!==c.TAG_PROPERTIES.CSS_TEXT&&N!==c.TAG_PROPERTIES.ITEM_PROP||(t=N)}if(!t||!e[t])return!1;var g=e[t].toLowerCase();return i[t]||(i[t]={}),r[t]||(r[t]={}),!i[t][g]&&(r[t][g]=!0,!0)})).reverse().forEach((function(M){return e.push(M)}));for(var n=Object.keys(r),N=0;N<n.length;N++){var j=n[N],g=(0,o.default)({},i[j],r[j]);i[j]=g}return e}),[]).reverse()},T=function(e,M){for(var t=e.length-1;t>=0;t--){var r=e[t];if(r.hasOwnProperty(M))return r[M]}return null},l=(j=Date.now(),function(e){var M=Date.now();M-j>16?(j=M,e(M)):setTimeout((function(){l(e)}),0)}),L=function(e){return clearTimeout(e)},y="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||l:e.requestAnimationFrame||l,z="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||L:e.cancelAnimationFrame||L,O=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},A=null,E=function(e,M){var t=e.baseTag,r=e.bodyAttributes,i=e.htmlAttributes,n=e.linkTags,o=e.metaTags,N=e.noscriptTags,j=e.onChangeClientState,g=e.scriptTags,D=e.styleTags,a=e.title,u=e.titleAttributes;x(c.TAG_NAMES.BODY,r),x(c.TAG_NAMES.HTML,i),d(a,u);var I={baseTag:C(c.TAG_NAMES.BASE,t),linkTags:C(c.TAG_NAMES.LINK,n),metaTags:C(c.TAG_NAMES.META,o),noscriptTags:C(c.TAG_NAMES.NOSCRIPT,N),scriptTags:C(c.TAG_NAMES.SCRIPT,g),styleTags:C(c.TAG_NAMES.STYLE,D)},s={},T={};Object.keys(I).forEach((function(e){var M=I[e],t=M.newTags,r=M.oldTags;t.length&&(s[e]=t),r.length&&(T[e]=I[e].oldTags)})),M&&M(),j(e,s,T)},w=function(e){return Array.isArray(e)?e.join(""):e},d=function(e,M){void 0!==e&&document.title!==e&&(document.title=w(e)),x(c.TAG_NAMES.TITLE,M)},x=function(e,M){var t=document.getElementsByTagName(e)[0];if(t){for(var r=t.getAttribute(c.HELMET_ATTRIBUTE),i=r?r.split(","):[],n=[].concat(i),o=Object.keys(M),N=0;N<o.length;N++){var j=o[N],g=M[j]||"";t.getAttribute(j)!==g&&t.setAttribute(j,g),-1===i.indexOf(j)&&i.push(j);var D=n.indexOf(j);-1!==D&&n.splice(D,1)}for(var a=n.length-1;a>=0;a--)t.removeAttribute(n[a]);i.length===n.length?t.removeAttribute(c.HELMET_ATTRIBUTE):t.getAttribute(c.HELMET_ATTRIBUTE)!==o.join(",")&&t.setAttribute(c.HELMET_ATTRIBUTE,o.join(","))}},C=function(e,M){var t=document.head||document.querySelector(c.TAG_NAMES.HEAD),r=t.querySelectorAll(e+"["+c.HELMET_ATTRIBUTE+"]"),i=Array.prototype.slice.call(r),n=[],o=void 0;return M&&M.length&&M.forEach((function(M){var t=document.createElement(e);for(var r in M)if(M.hasOwnProperty(r))if(r===c.TAG_PROPERTIES.INNER_HTML)t.innerHTML=M.innerHTML;else if(r===c.TAG_PROPERTIES.CSS_TEXT)t.styleSheet?t.styleSheet.cssText=M.cssText:t.appendChild(document.createTextNode(M.cssText));else{var N=void 0===M[r]?"":M[r];t.setAttribute(r,N)}t.setAttribute(c.HELMET_ATTRIBUTE,"true"),i.some((function(e,M){return o=M,t.isEqualNode(e)}))?i.splice(o,1):n.push(t)})),i.forEach((function(e){return e.parentNode.removeChild(e)})),n.forEach((function(e){return t.appendChild(e)})),{oldTags:i,newTags:n}},p=function(e){return Object.keys(e).reduce((function(M,t){var r=void 0!==e[t]?t+'="'+e[t]+'"':""+t;return M?M+" "+r:r}),"")},S=function(e){var M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(M,t){return M[c.REACT_TAG_MAP[t]||t]=e[t],M}),M)},f=function(e,M,t){switch(e){case c.TAG_NAMES.TITLE:return{toComponent:function(){return e=M.title,t=M.titleAttributes,(r={key:e})[c.HELMET_ATTRIBUTE]=!0,i=S(t,r),[n.default.createElement(c.TAG_NAMES.TITLE,i,e)];var e,t,r,i},toString:function(){return function(e,M,t,r){var i=p(t),n=w(M);return i?"<"+e+" "+c.HELMET_ATTRIBUTE+'="true" '+i+">"+g(n,r)+"</"+e+">":"<"+e+" "+c.HELMET_ATTRIBUTE+'="true">'+g(n,r)+"</"+e+">"}(e,M.title,M.titleAttributes,t)}};case c.ATTRIBUTE_NAMES.BODY:case c.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return S(M)},toString:function(){return p(M)}};default:return{toComponent:function(){return function(e,M){return M.map((function(M,t){var r,i=((r={key:t})[c.HELMET_ATTRIBUTE]=!0,r);return Object.keys(M).forEach((function(e){var t=c.REACT_TAG_MAP[e]||e;if(t===c.TAG_PROPERTIES.INNER_HTML||t===c.TAG_PROPERTIES.CSS_TEXT){var r=M.innerHTML||M.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[t]=M[e]})),n.default.createElement(e,i)}))}(e,M)},toString:function(){return function(e,M,t){return M.reduce((function(M,r){var i=Object.keys(r).filter((function(e){return!(e===c.TAG_PROPERTIES.INNER_HTML||e===c.TAG_PROPERTIES.CSS_TEXT)})).reduce((function(e,M){var i=void 0===r[M]?M:M+'="'+g(r[M],t)+'"';return e?e+" "+i:i}),""),n=r.innerHTML||r.cssText||"",o=-1===c.SELF_CLOSING_TAGS.indexOf(e);return M+"<"+e+" "+c.HELMET_ATTRIBUTE+'="true" '+i+(o?"/>":">"+n+"</"+e+">")}),"")}(e,M,t)}}}};M.convertReactPropstoHtmlAttributes=function(e){var M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(M,t){return M[c.HTML_TAG_MAP[t]||t]=e[t],M}),M)},M.handleClientStateChange=function(e){A&&z(A),e.defer?A=y((function(){E(e,(function(){A=null}))})):(E(e),A=null)},M.mapStateOnServer=function(e){var M=e.baseTag,t=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,n=e.linkTags,o=e.metaTags,N=e.noscriptTags,j=e.scriptTags,g=e.styleTags,D=e.title,a=void 0===D?"":D,u=e.titleAttributes;return{base:f(c.TAG_NAMES.BASE,M,r),bodyAttributes:f(c.ATTRIBUTE_NAMES.BODY,t,r),htmlAttributes:f(c.ATTRIBUTE_NAMES.HTML,i,r),link:f(c.TAG_NAMES.LINK,n,r),meta:f(c.TAG_NAMES.META,o,r),noscript:f(c.TAG_NAMES.NOSCRIPT,N,r),script:f(c.TAG_NAMES.SCRIPT,j,r),style:f(c.TAG_NAMES.STYLE,g,r),title:f(c.TAG_NAMES.TITLE,{title:a,titleAttributes:u},r)}},M.reducePropsToState=function(e){return{baseTag:I([c.TAG_PROPERTIES.HREF],e),bodyAttributes:u(c.ATTRIBUTE_NAMES.BODY,e),defer:T(e,c.HELMET_PROPS.DEFER),encode:T(e,c.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:u(c.ATTRIBUTE_NAMES.HTML,e),linkTags:s(c.TAG_NAMES.LINK,[c.TAG_PROPERTIES.REL,c.TAG_PROPERTIES.HREF],e),metaTags:s(c.TAG_NAMES.META,[c.TAG_PROPERTIES.NAME,c.TAG_PROPERTIES.CHARSET,c.TAG_PROPERTIES.HTTPEQUIV,c.TAG_PROPERTIES.PROPERTY,c.TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:s(c.TAG_NAMES.NOSCRIPT,[c.TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:a(e),scriptTags:s(c.TAG_NAMES.SCRIPT,[c.TAG_PROPERTIES.SRC,c.TAG_PROPERTIES.INNER_HTML],e),styleTags:s(c.TAG_NAMES.STYLE,[c.TAG_PROPERTIES.CSS_TEXT],e),title:D(e),titleAttributes:u(c.ATTRIBUTE_NAMES.TITLE,e)}},M.requestAnimationFrame=y,M.warn=O}).call(this,t("yLpj"))},yLpj:function(e,M){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(r){"object"==typeof window&&(t=window)}e.exports=t}}]);
-//# sourceMappingURL=commons-995392a5e28deac70171.js.map
\ No newline at end of file
diff --git a/commons-995392a5e28deac70171.js.map b/commons-995392a5e28deac70171.js.map
deleted file mode 100644
index 5883e2f..0000000
--- a/commons-995392a5e28deac70171.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./node_modules/@theme-ui/core/dist/index.esm.js","webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/@theme-ui/color-modes/dist/index.esm.js","webpack:///./node_modules/@theme-ui/theme-provider/dist/index.esm.js","webpack:///./src/theme.js","webpack:///./src/components/header.js","webpack:///./src/components/footer.js","webpack:///./src/components/seo.js","webpack:///./src/components/head.js","webpack:///./src/components/mobileNav.js","webpack:///./src/components/layout.js","webpack:///./src/images/stackoverflow-logo.svg","webpack:///./node_modules/shallowequal/index.js","webpack:///./src/images/twitter-logo.svg","webpack:///./node_modules/@emotion/styled-base/dist/styled-base.browser.esm.js","webpack:///./node_modules/@emotion/styled/dist/styled.browser.esm.js","webpack:///./node_modules/@theme-ui/mdx/node_modules/@mdx-js/react/dist/esm.js","webpack:///./node_modules/@theme-ui/mdx/dist/index.esm.js","webpack:///./src/images/github-logo.svg","webpack:///./node_modules/react-helmet/lib/Helmet.js","webpack:///./src/images/openJ9-header-logo.svg","webpack:///./node_modules/@theme-ui/css/dist/index.esm.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./src/images/incubator-logo.svg","webpack:///./node_modules/react-helmet/lib/HelmetConstants.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@theme-ui/core/node_modules/deepmerge/dist/cjs.js","webpack:///./src/images/slack-icon.svg","webpack:///./node_modules/react-helmet/lib/HelmetUtils.js","webpack:///(webpack)/buildin/global.js"],"names":["parseProps","props","next","key","css$$1","sx","css","theme","getCSS","jsx$1","type","children","len","arguments","length","apply","undefined","concat","Context","createContext","__EMOTION_VERSION__","useThemeUI","useContext","canUseSymbol","Symbol","for","REACT_ELEMENT","FORWARD_REF","isMergeableObject","n","$$typeof","arrayMerge","destinationArray","sourceArray","options","merge","a","b","all","args","BaseProvider","ref","context","Provider","value","ThemeProvider","outer","Object","assign","_interopDefault","ex","React","React__default","shallowEqual","_defineProperty","obj","defineProperty","enumerable","configurable","writable","canUseDOM","window","document","createElement","module","exports","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","Error","WrappedComponent","state","mountedInstances","emitChange","map","instance","SideEffect","_Component","subClass","superClass","this","prototype","create","constructor","__proto__","peek","rewind","recordedState","_proto","shouldComponentUpdate","nextProps","componentWillMount","push","componentDidUpdate","componentWillUnmount","index","indexOf","splice","render","Component","displayName","name","getDisplayName","reactPropsRegex","prop","test","charCodeAt","toVarName","toVarValue","join","filter","Boolean","numberScales","fontWeights","lineHeights","reservedKeys","useCustomProperties","initialColorModeName","initialColorMode","toPixel","objectToVars","parent","vars","storage","init","localStorage","getItem","e","console","warn","setItem","useState","mode","setMode","useEffect","stored","body","classList","remove","useColorSchemeMediaQuery","darkQuery","darkMQL","lightMQL","query","matchMedia","media","matches","styles","colors","useBodyStyles","modes","color","bg","rawColors","keys","forEach","ref$1","colorMode","setColorMode","emotionTheme","toCustomProperties","themeKey","Array","isArray","val","get","def","p","undef","split","defaultBreakpoints","defaultTheme","space","fontSizes","aliases","m","mt","mr","mb","ml","mx","my","pt","pr","pb","pl","px","py","multiples","marginX","marginY","paddingX","paddingY","size","scales","backgroundColor","borderColor","margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","top","right","bottom","left","gridGap","gridColumnGap","gridRowGap","gap","columnGap","rowGap","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","border","borderTop","borderRight","borderBottom","borderLeft","borderWidth","borderStyle","borderRadius","borderTopRightRadius","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderTopColor","borderTopStyle","borderBottomWidth","borderBottomColor","borderBottomStyle","borderLeftWidth","borderLeftColor","borderLeftStyle","borderRightWidth","borderRightColor","borderRightStyle","outlineColor","boxShadow","textShadow","zIndex","width","minWidth","maxWidth","height","minHeight","maxHeight","flexBasis","fill","stroke","positiveOrNegative","scale","absolute","Math","abs","transforms","reduce","acc","curr","result","breakpoints","mediaQueries","i","slice","responsive","x","scaleName","transform","dirs","variant","root","boxSizing","useBorderBox","components","fonts","heading","darkText","lightText","links","primary","secondary","secondaryDark","accent","background","lightGrey","radii","button","card","buttons","cursor","textDecoration","text","h1","h2","h3","h4","h5","h6","lists","navRow","display","listStyle","justifyContent","li","navCol","flexDirection","borders","cardBorder","shadows","cardShadow","isHome","position","alignItems","flex","opacity","pointerEvents","to","src","openJ9Logo","alt","href","rel","target","twitterLogo","githubLogo","slackIcon","stackoverflowLogo","flexWrap","incubatorLogo","listStyleType","SEO","title","description","useStaticQuery","site","siteMetadata","defaultTitle","titleTemplate","defaultDescription","siteUrl","twitterUsername","seo","image","defaultImage","url","Helmet","content","property","defaultProps","MobileNav","objA","objB","compare","compareContext","ret","call","keysA","keysB","bHasOwnProperty","hasOwnProperty","bind","idx","valueA","valueB","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","tag","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","newStyled","createStyled","identifierName","shouldForwardProp","targetClassName","label","__emotion_forwardProp","propName","isReal","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","__emotion_styles","raw","Styled","Consumer","finalTag","as","className","classInterpolations","mergedProps","registered","serialized","finalShouldForwardProp","newProps","_key","innerRef","withComponent","nextTag","nextOptions","tagName","_objectSpread2","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","MDXContext","contextComponents","allComponents","DEFAULTS","inlineCode","wrapper","_ref","Fragment","MDXCreateElement","forwardRef","propComponents","mdxType","originalType","parentName","etc","thematicBreak","comps","__esModule","_extends","_createClass","descriptor","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","default","_classCallCheck","TypeError","_possibleConstructorReturn","self","ReferenceError","_class","_temp","HelmetSideEffects","handleClientStateChange","HelmetExport","_React$Component","HelmetWrapper","setPrototypeOf","_inherits","mapNestedChildrenToProps","child","nestedChildren","TAG_NAMES","SCRIPT","NOSCRIPT","innerHTML","STYLE","cssText","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_extends3","_extends4","TITLE","titleAttributes","BODY","bodyAttributes","HTML","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","_this2","Children","_child$props","childProps","convertReactPropstoHtmlAttributes","LINK","META","_props","set","propTypes","base","oneOfType","arrayOf","node","string","defer","bool","encodeSpecialCharacters","link","meta","noscript","onChangeClientState","func","script","style","mappedState","linkTags","metaTags","noscriptTags","scriptTags","styleTags","renderStatic","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","error","message","match","number","ATTRIBUTE_NAMES","BASE","HEAD","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","NAME","PROPERTY","REL","SRC","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","isNonNullObject","stringValue","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","element","getKeys","symbol","getEnumerableOwnPropertySymbols","propertyIsOnObject","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","sourceIsArray","array","prev","deepmerge_1","requestAnimationFrame","_typeof","iterator","_objectAssign2","clock","str","encode","String","replace","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","toLowerCase","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","now","callback","currentTime","setTimeout","cafPolyfill","id","clearTimeout","webkitRequestAnimationFrame","mozRequestAnimationFrame","global","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","_i","removeAttribute","tags","headElement","head","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","_ref$title","g","Function"],"mappings":"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","file":"commons-995392a5e28deac70171.js","sourcesContent":["import { jsx, ThemeContext } from '@emotion/core';\nimport { css } from '@theme-ui/css';\nimport React from 'react';\nimport deepmerge from 'deepmerge';\nimport { version } from '@emotion/core/package.json';\n\nvar getCSS = function getCSS(props) {\n  if (!props.sx && !props.css) {\n    return undefined;\n  }\n\n  return function (theme) {\n    var styles = css(props.sx)(theme);\n    var raw = typeof props.css === 'function' ? props.css(theme) : props.css;\n    return [styles, raw];\n  };\n};\n\nvar parseProps = function parseProps(props) {\n  if (!props) {\n    return null;\n  }\n\n  var next = {};\n\n  for (var key in props) {\n    if (key === 'sx') {\n      continue;\n    }\n\n    next[key] = props[key];\n  }\n\n  var css$$1 = getCSS(props);\n\n  if (css$$1) {\n    next.css = css$$1;\n  }\n\n  return next;\n};\n\nvar jsx$1 = function jsx$1(type, props) {\n  var children = [],\n      len = arguments.length - 2;\n\n  while (len-- > 0) {\n    children[len] = arguments[len + 2];\n  }\n\n  return jsx.apply(undefined, [type, parseProps(props)].concat(children));\n};\n\nvar Context = React.createContext({\n  __EMOTION_VERSION__: version,\n  theme: null\n});\n\nvar useThemeUI = function useThemeUI() {\n  return React.useContext(Context);\n};\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\nvar FORWARD_REF = canUseSymbol ? Symbol.for('react.forward_ref') : 0xeac7;\n\nvar isMergeableObject = function isMergeableObject(n) {\n  return !!n && typeof n === 'object' && n.$$typeof !== REACT_ELEMENT && n.$$typeof !== FORWARD_REF;\n};\n\nvar arrayMerge = function arrayMerge(destinationArray, sourceArray, options) {\n  return sourceArray;\n};\n\nvar merge = function merge(a, b) {\n  return deepmerge(a, b, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nmerge.all = function () {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return deepmerge.all(args, {\n    isMergeableObject: isMergeableObject,\n    arrayMerge: arrayMerge\n  });\n};\n\nvar BaseProvider = function BaseProvider(ref) {\n  var context = ref.context;\n  var children = ref.children;\n  return jsx$1(ThemeContext.Provider, {\n    value: context.theme\n  }, jsx$1(Context.Provider, {\n    value: context,\n    children: children\n  }));\n};\n\nvar ThemeProvider = function ThemeProvider(ref) {\n  var theme = ref.theme;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (outer.__EMOTION_VERSION__ !== version) {\n      console.warn('Multiple versions of Emotion detected,', 'and theming might not work as expected.', 'Please ensure there is only one copy of @emotion/core installed in your application.');\n    }\n  }\n\n  var context = typeof theme === 'function' ? Object.assign({}, outer, {\n    theme: theme(outer.theme)\n  }) : merge.all({}, outer, {\n    theme: theme\n  });\n  return jsx$1(BaseProvider, {\n    context: context,\n    children: children\n  });\n};\n\nexport { jsx$1 as jsx, Context, useThemeUI, merge, ThemeProvider };","'use strict';\n\nfunction _interopDefault(ex) {\n  return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n  if (typeof reducePropsToState !== 'function') {\n    throw new Error('Expected reducePropsToState to be a function.');\n  }\n\n  if (typeof handleStateChangeOnClient !== 'function') {\n    throw new Error('Expected handleStateChangeOnClient to be a function.');\n  }\n\n  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n    throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (typeof WrappedComponent !== 'function') {\n      throw new Error('Expected WrappedComponent to be a React component.');\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n\n      if (SideEffect.canUseDOM) {\n        handleStateChangeOnClient(state);\n      } else if (mapStateOnServer) {\n        state = mapStateOnServer(state);\n      }\n    }\n\n    var SideEffect = /*#__PURE__*/function (_Component) {\n      _inheritsLoose(SideEffect, _Component);\n\n      function SideEffect() {\n        return _Component.apply(this, arguments) || this;\n      } // Try to use displayName of wrapped component\n      // Expose canUseDOM so tests can monkeypatch it\n\n\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      SideEffect.rewind = function rewind() {\n        if (SideEffect.canUseDOM) {\n          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n        }\n\n        var recordedState = state;\n        state = undefined;\n        mountedInstances = [];\n        return recordedState;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n        return !shallowEqual(nextProps, this.props);\n      };\n\n      _proto.componentWillMount = function componentWillMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return React__default.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(React.Component);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n    return SideEffect;\n  };\n}\n\nmodule.exports = withSideEffect;","import memoize from '@emotion/memoize';\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\nexport default index;","import React from 'react';\nimport { jsx, useThemeUI, merge, Context } from '@theme-ui/core';\nimport { Global, ThemeContext } from '@emotion/core';\nimport { css, get } from '@theme-ui/css';\n\nvar toVarName = function toVarName(key) {\n  return \"--theme-ui-\" + key;\n};\n\nvar toVarValue = function toVarValue(key, value) {\n  return \"var(\" + toVarName(key) + \", \" + value + \")\";\n};\n\nvar join = function join() {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return args.filter(Boolean).join('-');\n};\n\nvar numberScales = {\n  fontWeights: true,\n  lineHeights: true\n};\nvar reservedKeys = {\n  useCustomProperties: true,\n  initialColorModeName: true,\n  initialColorMode: true\n};\n\nvar toPixel = function toPixel(key, value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n\n  if (numberScales[key]) {\n    return value;\n  }\n\n  return value + 'px';\n}; // convert theme values to custom properties\n\n\nvar toCustomProperties = function toCustomProperties(obj, parent, themeKey) {\n  var next = Array.isArray(obj) ? [] : {};\n\n  for (var key in obj) {\n    var value = obj[key];\n    var name = join(parent, key);\n\n    if (value && typeof value === 'object') {\n      next[key] = toCustomProperties(value, name, key);\n      continue;\n    }\n\n    if (reservedKeys[key]) {\n      next[key] = value;\n      continue;\n    }\n\n    var val = toPixel(themeKey || key, value);\n    next[key] = toVarValue(name, val);\n  }\n\n  return next;\n};\n\nvar objectToVars = function objectToVars(parent, obj) {\n  var vars = {};\n\n  for (var key in obj) {\n    if (key === 'modes') {\n      continue;\n    }\n\n    var name = join(parent, key);\n    var value = obj[key];\n\n    if (value && typeof value === 'object') {\n      vars = Object.assign({}, vars, objectToVars(name, value));\n    } else {\n      vars[toVarName(name)] = value;\n    }\n  }\n\n  return vars;\n}; // create body styles for color modes\n\n\nvar createColorStyles = function createColorStyles(theme) {\n  if (theme === void 0) theme = {};\n\n  if (!theme.colors || theme.useBodyStyles === false) {\n    return {};\n  }\n\n  if (theme.useCustomProperties === false || !theme.colors.modes) {\n    return css({\n      body: {\n        color: 'text',\n        bg: 'background'\n      }\n    })(theme);\n  }\n\n  var colors = theme.rawColors || theme.colors;\n  var modes = colors.modes;\n  var styles = objectToVars('colors', colors);\n  Object.keys(modes).forEach(function (mode) {\n    var key = \"&.theme-ui-\" + mode;\n    styles[key] = objectToVars('colors', modes[mode]);\n  });\n  return css({\n    body: Object.assign({}, styles, {\n      color: 'text',\n      bg: 'background'\n    })\n  })(theme);\n};\n\nvar STORAGE_KEY = 'theme-ui-color-mode';\nvar storage = {\n  get: function get(init) {\n    try {\n      return window.localStorage.getItem(STORAGE_KEY) || init;\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  },\n  set: function set(value) {\n    try {\n      window.localStorage.setItem(STORAGE_KEY, value);\n    } catch (e) {\n      console.warn('localStorage is disabled and color mode might not work as expected.', 'Please check your Site Settings.', e);\n    }\n  }\n};\n\nvar getMediaQuery = function getMediaQuery() {\n  var darkQuery = '(prefers-color-scheme: dark)';\n  var lightQuery = '(prefers-color-scheme: light)';\n  var darkMQL = window.matchMedia ? window.matchMedia(darkQuery) : {};\n  var lightMQL = window.matchMedia ? window.matchMedia(lightQuery) : {};\n  var dark = darkMQL.media === darkQuery && darkMQL.matches;\n\n  if (dark) {\n    return 'dark';\n  }\n\n  var light = lightMQL.media === lightQuery && lightMQL.matches;\n\n  if (light) {\n    return 'light';\n  }\n\n  return 'default';\n};\n\nvar useColorModeState = function useColorModeState(theme) {\n  if (theme === void 0) theme = {};\n  var ref = React.useState(theme.initialColorModeName || 'default');\n  var mode = ref[0];\n  var setMode = ref[1]; // initialize state\n\n  React.useEffect(function () {\n    var stored = storage.get();\n    document.body.classList.remove('theme-ui-' + stored);\n\n    if (!stored && theme.useColorSchemeMediaQuery) {\n      var query = getMediaQuery();\n      setMode(query);\n      return;\n    }\n\n    if (!stored || stored === mode) {\n      return;\n    }\n\n    setMode(stored);\n  }, []);\n  React.useEffect(function () {\n    if (!mode) {\n      return;\n    }\n\n    storage.set(mode);\n  }, [mode]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (theme.colors && theme.colors.modes && Object.keys(theme.colors.modes).indexOf(theme.initialColorModeName) > -1) {\n      console.warn('The `initialColorModeName` value should be a unique name' + ' and cannot reference a key in `theme.colors.modes`.');\n    }\n  }\n\n  return [mode, setMode];\n};\n\nvar useColorMode = function useColorMode() {\n  var ref = useThemeUI();\n  var colorMode = ref.colorMode;\n  var setColorMode = ref.setColorMode;\n\n  if (typeof setColorMode !== 'function') {\n    throw new Error(\"[useColorMode] requires the ColorModeProvider component\");\n  }\n\n  return [colorMode, setColorMode];\n};\n\nvar applyColorMode = function applyColorMode(theme, mode) {\n  if (!mode) {\n    return theme;\n  }\n\n  var modes = get(theme, 'colors.modes', {});\n  return merge.all({}, theme, {\n    colors: get(modes, mode, {})\n  });\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      return createColorStyles(theme);\n    }\n  });\n};\n\nvar ColorModeProvider = function ColorModeProvider(ref) {\n  var children = ref.children;\n  var outer = useThemeUI();\n  var ref$1 = useColorModeState(outer.theme);\n  var colorMode = ref$1[0];\n  var setColorMode = ref$1[1];\n  var theme = applyColorMode(outer.theme || {}, colorMode);\n  var emotionTheme = Object.assign({}, theme);\n\n  if (theme.useCustomProperties !== false) {\n    emotionTheme.colors = toCustomProperties(emotionTheme.colors, 'colors');\n  }\n\n  var context = Object.assign({}, outer, {\n    theme: theme,\n    colorMode: colorMode,\n    setColorMode: setColorMode\n  });\n  return jsx(ThemeContext.Provider, {\n    value: emotionTheme\n  }, jsx(Context.Provider, {\n    value: context\n  }, jsx(BodyStyles, {\n    key: 'color-mode'\n  }), children));\n};\n\nvar noflash = \"(function() { try {\\n  var mode = localStorage.getItem('theme-ui-color-mode');\\n  if (!mode) return\\n  document.body.classList.add('theme-ui-' + mode);\\n} catch (e) {} })();\";\n\nvar InitializeColorMode = function InitializeColorMode() {\n  return jsx('script', {\n    key: 'theme-ui-no-flash',\n    dangerouslySetInnerHTML: {\n      __html: noflash\n    }\n  });\n};\n\nexport { useColorMode, ColorModeProvider, InitializeColorMode };","import { jsx, useThemeUI, ThemeProvider } from '@theme-ui/core';\nimport { ColorModeProvider } from '@theme-ui/color-modes';\nimport { MDXProvider } from '@theme-ui/mdx';\nimport { Global } from '@emotion/core';\n\nvar get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) {\n      props = {};\n    }\n\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nvar BodyStyles = function BodyStyles() {\n  return jsx(Global, {\n    styles: function styles(theme) {\n      if (theme.useBodyStyles === false || theme.styles && !theme.styles.root) {\n        return false;\n      }\n\n      var boxSizing = theme.useBorderBox === false ? null : 'border-box';\n      return css({\n        '*': {\n          boxSizing: boxSizing\n        },\n        body: {\n          margin: 0,\n          variant: 'styles.root'\n        }\n      })(theme);\n    }\n  });\n};\n\nvar ThemeProvider$1 = function ThemeProvider$1(ref) {\n  var theme = ref.theme;\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useThemeUI();\n\n  if (typeof outer.setColorMode === 'function') {\n    return jsx(ThemeProvider, {\n      theme: theme\n    }, jsx(MDXProvider, {\n      components: components,\n      children: children\n    }));\n  }\n\n  return jsx(ThemeProvider, {\n    theme: theme\n  }, jsx(ColorModeProvider, null, jsx(BodyStyles), jsx(MDXProvider, {\n    components: components,\n    children: children\n  })));\n};\n\nexport { ThemeProvider$1 as ThemeProvider };","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nexport default {\n  fonts: {\n    heading: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\",\n    body: \"'Helvetica Neue', Helvetica, Arial, 'Lucida Grande'\"\n  },\n  colors: {\n    darkText: \"#4d4f50\",\n    lightText: \"#d8d8d8\",\n    links: \"#5DA7A3\",\n    primary: \"#434343\",\n    secondary: \"#5DA7A3\",\n    secondaryDark:\"#5d9da3\",\n    accent: \"#F8D000\",\n    background: \"#FFFFFF\",\n    lightGrey: \"#F1F1F1\"\n  },\n  radii: {\n    button: \"2.5rem\",\n    card: \"0.5rem\"\n  },\n  // [mobile, ipad, ipad pro, desktop]\n  breakpoints: [\"35rem\", \"62.5rem\", \"85rem\", \"120rem\"],\n  fontSizes: [16, 18, 20, 24, 28, 36],\n  space: [0, 8, 16, 24, 32, 40],\n  fontWeights: {\n    body: 400,\n    heading: 700\n  },\n  lineHeights: {\n    body: 1.5,\n    heading: 1.125\n  },\n  buttons: {\n    primary: {\n      backgroundColor: \"secondary\",\n      color: \"white\",\n      borderRadius: \"button\",\n      height: \"2rem\",\n      width: \"10rem\",\n      border: \"none\",\n      fontFamily: \"body\",\n      fontSize: 0,\n      \"&:hover\": {\n        cursor: \"pointer\",\n        backgroundColor: \"secondaryDark\",\n        borderColor: \"secondaryDark\",\n        textDecoration:\"none\",\n        color:\"white\"\n      }\n    },\n    secondary: { variant: \"buttons.primary\", width: \"12rem\" }\n  },\n  text: {\n    heading: {\n      fontFamily: \"heading\",\n      lineHeight: \"heading\",\n      fontWeight: \"heading\",\n      marginY: 2\n    }\n  },\n  styles: {\n    root: {\n      fontFamily: \"body\",\n      lineHeight: \"body\",\n      fontWeight: \"body\"\n    },\n    h1: {\n      variant: \"text.heading\",\n      fontSize: 5\n    },\n    h2: {\n      variant: \"text.heading\",\n      fontSize: 4\n    },\n    h3: {\n      variant: \"text.heading\",\n      fontSize: 3\n    },\n    h4: {\n      variant: \"text.heading\",\n      fontSize: 2,\n\n    },\n    h5: {\n      variant: \"text.heading\",\n      fontSize: 1\n    },\n    h6: {\n      variant: \"text.heading\",\n      fontSize: 0\n    },\n    p: {\n      marginBottom: 5,\n      fontSize: 1\n    }\n  },\n  lists: {\n    navRow: {\n      display: \"flex\",\n      listStyle: \"none\",\n      justifyContent: \"flex-end\",\n      li: {\n        padding: 1,\n        marginX: 1,\n        a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n      },\n      \"li:first-of-type\": {\n        marginLeft: 0\n      },\n      \"li:last-child\": {\n        marginRight: 0,\n        paddingRight: 0\n      }\n    },\n    navCol: {\n      variant: \"lists.navRow\",\n      flexDirection: \"column\",\n      li: {\n        padding: 1,\n        paddingLeft: 0\n      }\n    }\n  },\n  borders: {\n    cardBorder: \"#5DA7A3 0.625rem solid\"\n  },\n  shadows: {\n    cardShadow: \"#DADADA 0 0 1.25rem\"\n  },\n};\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\";\n\nimport openJ9Logo from \"../images/openJ9-header-logo.svg\";\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\n\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nexport default ({ isHome }) => (\n  <header\n    sx={{\n      display: [\"none\", \"none\", \"flex\", \"flex\"],\n      backgroundColor: isHome ? \"#00000000\" : \"primary\",\n      position: isHome ? \"absolute\" : null,\n      width: \"100%\",\n      color: \"lightText\",\n      paddingX: 5,\n      paddingY: 4,\n      alignItems: \"center\"\n    }}\n  >\n    <div\n      sx={{\n        flex: 1,\n        opacity: isHome ? 0 : 1,\n        pointerEvents: isHome ? \"none\" : \"all\"\n      }}\n    >\n      <Link to=\"/\">\n        <img src={openJ9Logo} alt=\"OpenJ9 Logo\"></img>\n      </Link>\n    </div>\n    <nav sx={{ flex: 2 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li>\n          <Link to=\"/\">Home</Link>\n        </li>\n        <li>\n          <Link to=\"/about\">About</Link>\n        </li>\n        <li>\n          <a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a>\n        </li>\n        <li>\n          <Link to=\"/performance\">Performance</Link>\n        </li>\n        <li>\n          <Link to=\"/news\">News</Link>\n        </li>\n      </ul>\n    </nav>\n    <nav sx={{ flex: 1 }}>\n      <ul sx={{ variant: \"lists.navRow\" }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </header>\n);\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport slackIcon from \"../images/slack-icon.svg\";\nimport githubLogo from \"../images/github-logo.svg\";\nimport twitterLogo from \"../images/twitter-logo.svg\";\nimport incubatorLogo from \"../images/incubator-logo.svg\";\nimport stackoverflowLogo from \"../images/stackoverflow-logo.svg\";\nimport { Link } from \"gatsby\";\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\n\nexport default () => (\n  <footer\n    sx={{\n      display: \"flex\",\n      backgroundColor: \"primary\",\n      color: \"white\",\n      flexWrap: \"wrap\",\n      padding: \"1rem\",\n      paddingBottom: [\"3rem\", \"3rem\", \"0\", \"0\"],\n      flexDirection: \"reverse-column\"\n    }}\n  >\n      <section\n      sx={{\n        flex: \"50%\",\n        display: [\"flex\", \"none\", \"none\", \"none\"],\n        alignItems: [\"center\", \"center\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n      <Styled.h6 sx={{fontSize:\"0.9rem\"}} >OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n    </section>\n\n\n    <nav sx={{ display: [\"flex\", \"flex\", \"flex\", \"flex\"],\n          flex: [\"100%\", \"50%\", \"50%\",\"50%\"], \n          flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n          justifyContent:\"center\",\n          a: {\n            color: \"white\",\n            textDecoration: \"none\",\n            \"&:hover\": {\n              color: \"links\",\n            }\n    }}}>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", \"0.8rem\", \"0.8rem\"],  marginRight:\"1.1rem\", padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"]}}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Docs</Styled.h4>\n        <ul sx={{ \n          variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n           }}>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/openj9_newuser/\" rel=\"noopener noreferrer\" target=\"_blank\">New to OpenJ9?</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/introduction/\" rel=\"noopener noreferrer\" target=\"_blank\">Getting started</a></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/openj9/docs/cmdline_specifying/\" rel=\"noopener noreferrer\" target=\"_blank\">Command-line options</a></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", \"0.8rem\", 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Resources</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n          }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/about\">About</Link></li>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/performance\">Performance</Link></li>\n        </ul>\n      </section>\n      <section sx={{ flex: 1, paddingLeft:[\"2rem\", 0, 0, 0], padding:[\"1rem\", 0], fontSize:[\"1rem\", \"0.9rem\", \"1rem\", \"1rem\"], marginLeft:[0,\"1rem\"] }}>\n        <Styled.h4 sx={{marginBottom:\"0.2rem\"}}>Community</Styled.h4>\n        <ul sx={{ variant: \"lists.navCol\",\n          li: { \n            padding: 0,\n          }\n       }}>\n          <li><Link sx={{textDecoration:\"none\", color:\"white\"}} to=\"/news\">News</Link></li>\n          <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://blog.openj9.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Blogs</a></li>\n        </ul>\n      </section>\n    </nav>\n    <section\n      sx={{\n        flex: \"25%\",\n        display: [\"none\",\"flex\", \"flex\", \"flex\"],\n        alignItems: [\"center\", \"flex-end\", \"flex-end\", \"flex-end\"],\n        flexDirection: \"column\"\n      }}\n    >\n      <Styled.h6 sx={{fontSize:\"0.9rem\", marginTop:\"1.3rem\", marginLeft:\"0.6rem\"}}>OpenJ9 is an Eclipse Incubator Project</Styled.h6>\n      <a href=\"https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={incubatorLogo} alt=\"Eclipse Incubator Logo\"></img></a>\n    </section>\n    <div\n      sx={{\n        height: \"0.15rem\",\n        backgroundColor: \"secondary\",\n        width: \"100%\",\n        marginY: 2\n      }}\n    ></div>\n    <nav sx={{width:\"70%\"}}>\n      <ul sx={{ \n        display: \"flex\", flexDirection:[\"column\", \"row\", \"row\", \"row\"],\n        li: { \n          padding: \"0.4rem\",\n          fontSize: [\"0.9rem\", \"0.7rem\", \"1rem\", \"1rem\"],\n          listStyleType: \"none\",\n          paddingLeft:\"1rem\",\n          color:\"white\",\n        },\n         a: {\n          color: \"white\",\n          textDecoration: \"none\",\n          \"&:hover\": {\n            color: \"links\",\n          }\n        }\n        }}>\n          \n        <li sx={{ paddingLeft:[\"1rem\", \"0rem !important\", \"0.5rem !important\", \"0.5 !important\"]}}><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Eclipse Foundation Website </a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/privacy.php\" rel=\"noopener noreferrer\" target=\"_blank\">Privacy Policy</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/termsofuse.php\" rel=\"noopener noreferrer\" target=\"_blank\">Terms of Use</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/copyright.php\" rel=\"noopener noreferrer\" target=\"_blank\">Copyright Agent</a></li>\n        <li><a sx={{textDecoration:\"none\", color:\"white\"}}href=\"https://www.eclipse.org/legal/\" rel=\"noopener noreferrer\" target=\"_blank\">Legal</a></li>\n      </ul>\n    </nav>\n    <nav sx={{ display: [\"inline\", \"inline\", \"block\", \"block\"], flex: \"30%\" }}>\n      <ul sx={{ variant: \"lists.navRow\", justifyContent: [\"center\", \"flex-end\",\"flex-end\", \"flex-end\"] }}>\n        <li> \n          <a href=\"https://twitter.com/openj9/\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={twitterLogo} alt=\"Twitter Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://github.com/eclipse/openj9\" rel=\"noopener noreferrer\" target=\"_blank\"> <img src={githubLogo} alt=\"GitHub Logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://openj9.slack.com/\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={slackIcon} alt=\"Slack logo\"></img></a>\n        </li>\n        <li>\n          <a href=\"https://stackoverflow.com/search?q=%23OpenJ9\" rel=\"noopener noreferrer\" target=\"_blank\"><img src={stackoverflowLogo} alt=\"Stack Overflow logo\"></img></a>\n        </li>\n      </ul>\n    </nav>\n  </footer>\n);\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Helmet } from \"react-helmet\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nconst SEO = ({ title, description }) => {\n  const { site } = useStaticQuery(query);\n\n  const {\n    defaultTitle,\n    titleTemplate,\n    defaultDescription,\n    siteUrl,\n    twitterUsername,\n    defaultImage,\n  } = site.siteMetadata;\n\n  const seo = {\n    title: title || defaultTitle,\n    description: description || defaultDescription,\n    image: defaultImage,\n    url: `${siteUrl}`,\n  };\n  return (\n    <Helmet title={seo.title} titleTemplate={titleTemplate}>\n      <meta name=\"description\" content={seo.description} />\n      <meta name=\"image\" content={seo.image} />\n\n      {seo.url && <meta property=\"og:url\" content={seo.url} />}\n\n      {seo.title && <meta property=\"og:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta property=\"og:description\" content={seo.description} />\n      )}\n\n      {seo.image && <meta property=\"og:image\" content={seo.image} />}\n\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n\n      {twitterUsername && (\n        <meta name=\"twitter:creator\" content={twitterUsername} />\n      )}\n\n      {seo.title && <meta name=\"twitter:title\" content={seo.title} />}\n\n      {seo.description && (\n        <meta name=\"twitter:description\" content={seo.description} />\n      )}\n      <link href=\"https://fonts.googleapis.com/css2?family=Gelasio:ital,wght@0,400;0,700;1,400;1,700&display=swap\" rel=\"stylesheet\"/>\n      <link rel=\"stylesheet\" type=\"text/css\" href=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css\" />\n      <script src=\"//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js\"></script>\n    </Helmet>\n  )\n};\n\nexport default SEO\n\nSEO.propTypes = {\n  title: PropTypes.string,\n  description: PropTypes.string,\n}\n\nSEO.defaultProps = {\n  title: null,\n  description: null,\n}\n\nconst query = graphql`\n  query SEO {\n    site {\n      siteMetadata {\n        defaultTitle: title\n        defaultDescription: description\n        siteUrl: url\n        twitterUsername\n        defaultImage: image\n      }\n    }\n  }\n`","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\n\nimport SEO from \"../components/seo\";\n\nexport default (props) => {\n    return (\n        <SEO title={props.title} description={props.description}></SEO>\n    );\n}\n\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport { Link } from \"gatsby\"\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\";\n\nconst MobileNav = () => (\n    <nav sx={{\n        display: [\"flex\", \"flex\", \"none\", \"none\"], \n        justifyContent: \"center\", \n        alignItems: \"center\", \n        position:\"fixed\", \n        width: \"100%\",\n        bottom: \"0\",\n        backgroundColor: \"white\",\n        height: \"3rem\",\n        boxShadow: \"0 0.5rem 2rem grey\",\n        zIndex: \"9999\"\n        }}> \n        <ul sx={{ \n            variant: \"lists.navRow\", \n            li: { \n                a: {\n                    color: \"black\", \n                    textDecoration: \"none\"\n                }\n            },\n            justifyContent: \"space-evenly\",\n            width: \"100%\"\n        }}>\n            <li><Link to=\"/\">Home</Link></li>\n            <li><Link to=\"/about\">About</Link> </li>\n            <li><a href=\"https://www.eclipse.org/openj9/docs/\" rel=\"noopener noreferrer\" target=\"_blank\">Docs</a> </li>\n            <li><Link to=\"/performance\">Performance</Link> </li>\n            <li><Link to=\"/news\">News</Link> </li>\n        </ul>\n    </nav>\n)\n\nexport default MobileNav","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport React from \"react\";\nimport { ThemeProvider } from \"theme-ui\";\nimport theme from \"../theme\";\nimport Header from \"./header\";\nimport Footer from \"./footer\";\nimport Head from \"./head\";\nimport MobileNav from \"./mobileNav\";\nimport { Global } from \"@emotion/core\";\n\nexport default ({ children, isHome, title, description }) => (\n  <ThemeProvider theme={theme}>\n    <Global\n      styles={theme => ({\n        \"*\": { padding: 0, margin: 0 },                          \n      })}\n    />\n    <Head title={title} description={description}/>\n    <Header isHome={isHome} />\n    <MobileNav />\n    {children}\n   \n    <Footer />\n    \n  </ThemeProvider>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=\"","//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || ret === void 0 && valueA !== valueB) {\n      return false;\n    }\n  }\n\n  return true;\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport { createElement } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/core';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme' && key !== 'innerRef';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(source, true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar createStyled = function createStyled(tag, options) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (tag === undefined) {\n      throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n    }\n  }\n\n  var identifierName;\n  var shouldForwardProp;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n    shouldForwardProp = tag.__emotion_forwardProp && options.shouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && // $FlowFixMe\n      options.shouldForwardProp(propName);\n    } : options.shouldForwardProp;\n  }\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n      if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n        if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n        }\n\n        styles.push(args[i], args[0][i]);\n      }\n    } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n    var Styled = withEmotionCache(function (props, context, ref) {\n      return createElement(ThemeContext.Consumer, null, function (theme) {\n        var finalTag = shouldUseAs && props.as || baseTag;\n        var className = '';\n        var classInterpolations = [];\n        var mergedProps = props;\n\n        if (props.theme == null) {\n          mergedProps = {};\n\n          for (var key in props) {\n            mergedProps[key] = props[key];\n          }\n\n          mergedProps.theme = theme;\n        }\n\n        if (typeof props.className === 'string') {\n          className = getRegisteredStyles(context.registered, classInterpolations, props.className);\n        } else if (props.className != null) {\n          className = props.className + \" \";\n        }\n\n        var serialized = serializeStyles(styles.concat(classInterpolations), context.registered, mergedProps);\n        var rules = insertStyles(context, serialized, typeof finalTag === 'string');\n        className += context.key + \"-\" + serialized.name;\n\n        if (targetClassName !== undefined) {\n          className += \" \" + targetClassName;\n        }\n\n        var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(finalTag) : defaultShouldForwardProp;\n        var newProps = {};\n\n        for (var _key in props) {\n          if (shouldUseAs && _key === 'as') continue;\n\n          if ( // $FlowFixMe\n          finalShouldForwardProp(_key)) {\n            newProps[_key] = props[_key];\n          }\n        }\n\n        newProps.className = className;\n        newProps.ref = ref || props.innerRef;\n\n        if (process.env.NODE_ENV !== 'production' && props.innerRef) {\n          console.error('`innerRef` is deprecated and will be removed in a future major version of Emotion, please use the `ref` prop instead' + (identifierName === undefined ? '' : \" in the usage of `\" + identifierName + \"`\"));\n        }\n\n        var ele = createElement(finalTag, newProps);\n        return ele;\n      });\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n          return 'NO_COMPONENT_SELECTOR';\n        } // $FlowFixMe: coerce undefined to string\n\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      return createStyled(nextTag, nextOptions !== undefined ? _objectSpread({}, options || {}, {}, nextOptions) : options).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport default createStyled;","import styled from '@emotion/styled-base';\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\nvar newStyled = styled.bind();\ntags.forEach(function (tagName) {\n  newStyled[tagName] = newStyled(tagName);\n});\nexport default newStyled;","import React from 'react';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nvar isFunction = function isFunction(obj) {\n  return typeof obj === 'function';\n};\n\nvar MDXContext = /*#__PURE__*/React.createContext({});\n\nvar withMDXComponents = function withMDXComponents(Component) {\n  return function (props) {\n    var allComponents = useMDXComponents(props.components);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n      components: allComponents\n    }));\n  };\n};\n\nvar useMDXComponents = function useMDXComponents(components) {\n  var contextComponents = React.useContext(MDXContext);\n  var allComponents = contextComponents;\n\n  if (components) {\n    allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n  }\n\n  return allComponents;\n};\n\nvar MDXProvider = function MDXProvider(props) {\n  var allComponents = useMDXComponents(props.components);\n  return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n    value: allComponents\n  }, props.children);\n};\n\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n  inlineCode: 'code',\n  wrapper: function wrapper(_ref) {\n    var children = _ref.children;\n    return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n  }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var propComponents = props.components,\n      mdxType = props.mdxType,\n      originalType = props.originalType,\n      parentName = props.parentName,\n      etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n\n  var components = useMDXComponents(propComponents);\n  var type = mdxType;\n  var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n  if (propComponents) {\n    return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n      ref: ref\n    }, etc), {}, {\n      components: propComponents\n    }));\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n    ref: ref\n  }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\n\nfunction createElement(type, props) {\n  var args = arguments;\n  var mdxType = props && props.mdxType;\n\n  if (typeof type === 'string' || mdxType) {\n    var argsLength = args.length;\n    var createElementArgArray = new Array(argsLength);\n    createElementArgArray[0] = MDXCreateElement;\n    var newProps = {};\n\n    for (var key in props) {\n      if (hasOwnProperty.call(props, key)) {\n        newProps[key] = props[key];\n      }\n    }\n\n    newProps.originalType = type;\n    newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n    createElementArgArray[1] = newProps;\n\n    for (var i = 2; i < argsLength; i++) {\n      createElementArgArray[i] = args[i];\n    }\n\n    return React.createElement.apply(null, createElementArgArray);\n  }\n\n  return React.createElement.apply(null, args);\n}\n\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","import { jsx } from '@theme-ui/core';\nimport { css, get } from '@theme-ui/css';\nimport 'react';\nimport '@emotion/core';\nimport styled from '@emotion/styled';\nimport { MDXProvider, useMDXComponents } from '@mdx-js/react';\nvar tags = ['p', 'b', 'i', 'a', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'pre', 'code', 'ol', 'ul', 'li', 'blockquote', 'hr', 'em', 'table', 'tr', 'th', 'td', 'em', 'strong', 'del', // mdx\n'inlineCode', 'thematicBreak', // other\n'div', // theme-ui\n'root'];\nvar aliases = {\n  inlineCode: 'code',\n  thematicBreak: 'hr',\n  root: 'div'\n};\n\nvar alias = function alias(n) {\n  return aliases[n] || n;\n};\n\nvar themed = function themed(key) {\n  return function (props) {\n    return css(get(props.theme, \"styles.\" + key))(props.theme);\n  };\n};\n\nvar Styled = styled('div')(themed('div'));\nvar components = {};\ntags.forEach(function (tag) {\n  components[tag] = styled(alias(tag))(themed(tag));\n  Styled[tag] = components[tag];\n});\n\nvar createComponents = function createComponents(comps) {\n  var next = Object.assign({}, components);\n  Object.keys(comps).forEach(function (key) {\n    next[key] = styled(comps[key])(themed(key));\n  });\n  return next;\n};\n\nvar MDXProvider$1 = function MDXProvider$1(ref) {\n  var components = ref.components;\n  var children = ref.children;\n  var outer = useMDXComponents();\n  return jsx(MDXProvider, {\n    components: createComponents(Object.assign({}, outer, components)),\n    children: children\n  });\n};\n\nexport { themed, Styled, components, MDXProvider$1 as MDXProvider };","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Helmet = function Helmet(Component) {\n  var _class, _temp;\n\n  return _temp = _class = function (_React$Component) {\n    _inherits(HelmetWrapper, _React$Component);\n\n    function HelmetWrapper() {\n      _classCallCheck(this, HelmetWrapper);\n\n      return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n    }\n\n    HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n      return !(0, _reactFastCompare2.default)(this.props, nextProps);\n    };\n\n    HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n      if (!nestedChildren) {\n        return null;\n      }\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.SCRIPT:\n        case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          return {\n            innerHTML: nestedChildren\n          };\n\n        case _HelmetConstants.TAG_NAMES.STYLE:\n          return {\n            cssText: nestedChildren\n          };\n      }\n\n      throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n    };\n\n    HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n      var _extends2;\n\n      var child = _ref.child,\n          arrayTypeChildren = _ref.arrayTypeChildren,\n          newChildProps = _ref.newChildProps,\n          nestedChildren = _ref.nestedChildren;\n      return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n    };\n\n    HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n      var _extends3, _extends4;\n\n      var child = _ref2.child,\n          newProps = _ref2.newProps,\n          newChildProps = _ref2.newChildProps,\n          nestedChildren = _ref2.nestedChildren;\n\n      switch (child.type) {\n        case _HelmetConstants.TAG_NAMES.TITLE:\n          return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n        case _HelmetConstants.TAG_NAMES.BODY:\n          return _extends({}, newProps, {\n            bodyAttributes: _extends({}, newChildProps)\n          });\n\n        case _HelmetConstants.TAG_NAMES.HTML:\n          return _extends({}, newProps, {\n            htmlAttributes: _extends({}, newChildProps)\n          });\n      }\n\n      return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n    };\n\n    HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n      var newFlattenedProps = _extends({}, newProps);\n\n      Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n        var _extends5;\n\n        newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n      });\n      return newFlattenedProps;\n    };\n\n    HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n          return child.type === name;\n        })) {\n          if (typeof child.type === \"function\") {\n            return (0, _HelmetUtils.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n          }\n\n          return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n        }\n\n        if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n          return typeof nestedChild !== \"string\";\n        }))) {\n          throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n        }\n      }\n\n      return true;\n    };\n\n    HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n      var _this2 = this;\n\n      var arrayTypeChildren = {};\n\n      _react2.default.Children.forEach(children, function (child) {\n        if (!child || !child.props) {\n          return;\n        }\n\n        var _child$props = child.props,\n            nestedChildren = _child$props.children,\n            childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n        var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n        _this2.warnOnInvalidChildren(child, nestedChildren);\n\n        switch (child.type) {\n          case _HelmetConstants.TAG_NAMES.LINK:\n          case _HelmetConstants.TAG_NAMES.META:\n          case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n          case _HelmetConstants.TAG_NAMES.SCRIPT:\n          case _HelmetConstants.TAG_NAMES.STYLE:\n            arrayTypeChildren = _this2.flattenArrayTypeChildren({\n              child: child,\n              arrayTypeChildren: arrayTypeChildren,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n\n          default:\n            newProps = _this2.mapObjectTypeChildren({\n              child: child,\n              newProps: newProps,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n        }\n      });\n\n      newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n      return newProps;\n    };\n\n    HelmetWrapper.prototype.render = function render() {\n      var _props = this.props,\n          children = _props.children,\n          props = _objectWithoutProperties(_props, [\"children\"]);\n\n      var newProps = _extends({}, props);\n\n      if (children) {\n        newProps = this.mapChildrenToProps(children, newProps);\n      }\n\n      return _react2.default.createElement(Component, newProps);\n    };\n\n    _createClass(HelmetWrapper, null, [{\n      key: \"canUseDOM\",\n      // Component.peek comes from react-side-effect:\n      // For testing, you may use a static peek() method available on the returned component.\n      // It lets you get the current state without resetting the mounted instance stack.\n      // Don’t use it for anything other than testing.\n\n      /**\n       * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n       * @param {Object} bodyAttributes: {\"className\": \"root\"}\n       * @param {String} defaultTitle: \"Default Title\"\n       * @param {Boolean} defer: true\n       * @param {Boolean} encodeSpecialCharacters: true\n       * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n       * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n       * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n       * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n       * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n       * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n       * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n       * @param {String} title: \"Title\"\n       * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n       * @param {String} titleTemplate: \"MySite.com - %s\"\n       */\n      set: function set(canUseDOM) {\n        Component.canUseDOM = canUseDOM;\n      }\n    }]);\n\n    return HelmetWrapper;\n  }(_react2.default.Component), _class.propTypes = {\n    base: _propTypes2.default.object,\n    bodyAttributes: _propTypes2.default.object,\n    children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n    defaultTitle: _propTypes2.default.string,\n    defer: _propTypes2.default.bool,\n    encodeSpecialCharacters: _propTypes2.default.bool,\n    htmlAttributes: _propTypes2.default.object,\n    link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    onChangeClientState: _propTypes2.default.func,\n    script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n    title: _propTypes2.default.string,\n    titleAttributes: _propTypes2.default.object,\n    titleTemplate: _propTypes2.default.string\n  }, _class.defaultProps = {\n    defer: true,\n    encodeSpecialCharacters: true\n  }, _class.peek = Component.peek, _class.rewind = function () {\n    var mappedState = Component.rewind();\n\n    if (!mappedState) {\n      // provide fallback if mappedState is undefined\n      mappedState = (0, _HelmetUtils.mapStateOnServer)({\n        baseTag: [],\n        bodyAttributes: {},\n        encodeSpecialCharacters: true,\n        htmlAttributes: {},\n        linkTags: [],\n        metaTags: [],\n        noscriptTags: [],\n        scriptTags: [],\n        styleTags: [],\n        title: \"\",\n        titleAttributes: {}\n      });\n    }\n\n    return mappedState;\n  }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n  return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","var get = function get(obj, key, def, p, undef) {\n  key = key && key.split ? key.split('.') : [key];\n\n  for (p = 0; p < key.length; p++) {\n    obj = obj ? obj[key[p]] : undef;\n  }\n\n  return obj === undef ? def : obj;\n};\n\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n  return n + 'em';\n});\nvar defaultTheme = {\n  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n  bg: 'backgroundColor',\n  m: 'margin',\n  mt: 'marginTop',\n  mr: 'marginRight',\n  mb: 'marginBottom',\n  ml: 'marginLeft',\n  mx: 'marginX',\n  my: 'marginY',\n  p: 'padding',\n  pt: 'paddingTop',\n  pr: 'paddingRight',\n  pb: 'paddingBottom',\n  pl: 'paddingLeft',\n  px: 'paddingX',\n  py: 'paddingY'\n};\nvar multiples = {\n  marginX: ['marginLeft', 'marginRight'],\n  marginY: ['marginTop', 'marginBottom'],\n  paddingX: ['paddingLeft', 'paddingRight'],\n  paddingY: ['paddingTop', 'paddingBottom'],\n  size: ['width', 'height']\n};\nvar scales = {\n  color: 'colors',\n  backgroundColor: 'colors',\n  borderColor: 'colors',\n  margin: 'space',\n  marginTop: 'space',\n  marginRight: 'space',\n  marginBottom: 'space',\n  marginLeft: 'space',\n  marginX: 'space',\n  marginY: 'space',\n  padding: 'space',\n  paddingTop: 'space',\n  paddingRight: 'space',\n  paddingBottom: 'space',\n  paddingLeft: 'space',\n  paddingX: 'space',\n  paddingY: 'space',\n  top: 'space',\n  right: 'space',\n  bottom: 'space',\n  left: 'space',\n  gridGap: 'space',\n  gridColumnGap: 'space',\n  gridRowGap: 'space',\n  gap: 'space',\n  columnGap: 'space',\n  rowGap: 'space',\n  fontFamily: 'fonts',\n  fontSize: 'fontSizes',\n  fontWeight: 'fontWeights',\n  lineHeight: 'lineHeights',\n  letterSpacing: 'letterSpacings',\n  border: 'borders',\n  borderTop: 'borders',\n  borderRight: 'borders',\n  borderBottom: 'borders',\n  borderLeft: 'borders',\n  borderWidth: 'borderWidths',\n  borderStyle: 'borderStyles',\n  borderRadius: 'radii',\n  borderTopRightRadius: 'radii',\n  borderTopLeftRadius: 'radii',\n  borderBottomRightRadius: 'radii',\n  borderBottomLeftRadius: 'radii',\n  borderTopWidth: 'borderWidths',\n  borderTopColor: 'colors',\n  borderTopStyle: 'borderStyles',\n  borderBottomWidth: 'borderWidths',\n  borderBottomColor: 'colors',\n  borderBottomStyle: 'borderStyles',\n  borderLeftWidth: 'borderWidths',\n  borderLeftColor: 'colors',\n  borderLeftStyle: 'borderStyles',\n  borderRightWidth: 'borderWidths',\n  borderRightColor: 'colors',\n  borderRightStyle: 'borderStyles',\n  outlineColor: 'colors',\n  boxShadow: 'shadows',\n  textShadow: 'shadows',\n  zIndex: 'zIndices',\n  width: 'sizes',\n  minWidth: 'sizes',\n  maxWidth: 'sizes',\n  height: 'sizes',\n  minHeight: 'sizes',\n  maxHeight: 'sizes',\n  flexBasis: 'sizes',\n  size: 'sizes',\n  // svg\n  fill: 'colors',\n  stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n  if (typeof value !== 'number' || value >= 0) {\n    return get(scale, value, value);\n  }\n\n  var absolute = Math.abs(value);\n  var n = get(scale, absolute, absolute);\n\n  if (typeof n === 'string') {\n    return '-' + n;\n  }\n\n  return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n  var obj;\n  return Object.assign({}, acc, (obj = {}, obj[curr] = positiveOrNegative, obj));\n}, {});\n\nvar responsive = function responsive(styles) {\n  return function (theme) {\n    var next = {};\n    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n    var mediaQueries = [null].concat(breakpoints.map(function (n) {\n      return \"@media screen and (min-width: \" + n + \")\";\n    }));\n\n    for (var key in styles) {\n      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n\n      if (value == null) {\n        continue;\n      }\n\n      if (!Array.isArray(value)) {\n        next[key] = value;\n        continue;\n      }\n\n      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n        var media = mediaQueries[i];\n\n        if (!media) {\n          next[key] = value[i];\n          continue;\n        }\n\n        next[media] = next[media] || {};\n\n        if (value[i] == null) {\n          continue;\n        }\n\n        next[media][key] = value[i];\n      }\n    }\n\n    return next;\n  };\n};\n\nvar css = function css(args) {\n  return function (props) {\n    if (props === void 0) props = {};\n    var theme = Object.assign({}, defaultTheme, props.theme || props);\n    var result = {};\n    var obj = typeof args === 'function' ? args(theme) : args;\n    var styles = responsive(obj)(theme);\n\n    for (var key in styles) {\n      var x = styles[key];\n      var val = typeof x === 'function' ? x(theme) : x;\n\n      if (key === 'variant') {\n        var variant = css(get(theme, val))(theme);\n        result = Object.assign({}, result, variant);\n        continue;\n      }\n\n      if (val && typeof val === 'object') {\n        result[key] = css(val)(theme);\n        continue;\n      }\n\n      var prop = get(aliases, key, key);\n      var scaleName = get(scales, prop);\n      var scale = get(theme, scaleName, get(theme, prop, {}));\n      var transform = get(transforms, prop, get);\n      var value = transform(scale, val, val);\n\n      if (multiples[prop]) {\n        var dirs = multiples[prop];\n\n        for (var i = 0; i < dirs.length; i++) {\n          result[dirs[i]] = value;\n        }\n      } else {\n        result[prop] = value;\n      }\n    }\n\n    return result;\n  };\n};\n\nexport { get, css };","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n    if (length !== keyList(b).length) return false;\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // start react-fast-compare\n    // custom handling for DOM elements\n\n\n    if (hasElementType && a instanceof Element && b instanceof Element) return a === b; // custom handling for React\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // end react-fast-compare\n    // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n};","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n  BODY: \"bodyAttributes\",\n  HTML: \"htmlAttributes\",\n  TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = exports.TAG_NAMES = {\n  BASE: \"base\",\n  BODY: \"body\",\n  HEAD: \"head\",\n  HTML: \"html\",\n  LINK: \"link\",\n  META: \"meta\",\n  NOSCRIPT: \"noscript\",\n  SCRIPT: \"script\",\n  STYLE: \"style\",\n  TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n  return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n  CHARSET: \"charset\",\n  CSS_TEXT: \"cssText\",\n  HREF: \"href\",\n  HTTPEQUIV: \"http-equiv\",\n  INNER_HTML: \"innerHTML\",\n  ITEM_PROP: \"itemprop\",\n  NAME: \"name\",\n  PROPERTY: \"property\",\n  REL: \"rel\",\n  SRC: \"src\"\n};\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n  accesskey: \"accessKey\",\n  charset: \"charSet\",\n  class: \"className\",\n  contenteditable: \"contentEditable\",\n  contextmenu: \"contextMenu\",\n  \"http-equiv\": \"httpEquiv\",\n  itemprop: \"itemProp\",\n  tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n  DEFAULT_TITLE: \"defaultTitle\",\n  DEFER: \"defer\",\n  ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n  ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n  TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n  obj[REACT_TAG_MAP[key]] = key;\n  return obj;\n}, {});\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n  return isNonNullObject(value) && !isSpecial(value);\n};\n\nfunction isNonNullObject(value) {\n  return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value) {\n  var stringValue = Object.prototype.toString.call(value);\n  return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n} // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n  return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nfunction emptyTarget(val) {\n  return Array.isArray(val) ? [] : {};\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n  return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\n\nfunction defaultArrayMerge(target, source, options) {\n  return target.concat(source).map(function (element) {\n    return cloneUnlessOtherwiseSpecified(element, options);\n  });\n}\n\nfunction getMergeFunction(key, options) {\n  if (!options.customMerge) {\n    return deepmerge;\n  }\n\n  var customMerge = options.customMerge(key);\n  return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n  return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n    return target.propertyIsEnumerable(symbol);\n  }) : [];\n}\n\nfunction getKeys(target) {\n  return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\n\nfunction propertyIsOnObject(object, property) {\n  try {\n    return property in object;\n  } catch (_) {\n    return false;\n  }\n} // Protects from prototype poisoning and unexpected merging up the prototype chain.\n\n\nfunction propertyIsUnsafe(target, key) {\n  return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n  && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n  && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n  var destination = {};\n\n  if (options.isMergeableObject(target)) {\n    getKeys(target).forEach(function (key) {\n      destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n    });\n  }\n\n  getKeys(source).forEach(function (key) {\n    if (propertyIsUnsafe(target, key)) {\n      return;\n    }\n\n    if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n      destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n    } else {\n      destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n    }\n  });\n  return destination;\n}\n\nfunction deepmerge(target, source, options) {\n  options = options || {};\n  options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n  options.isMergeableObject = options.isMergeableObject || isMergeableObject; // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n  // implementations can use it. The caller may not replace it.\n\n  options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n  var sourceIsArray = Array.isArray(source);\n  var targetIsArray = Array.isArray(target);\n  var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n  if (!sourceAndTargetTypesMatch) {\n    return cloneUnlessOtherwiseSpecified(source, options);\n  } else if (sourceIsArray) {\n    return options.arrayMerge(target, source, options);\n  } else {\n    return mergeObject(target, source, options);\n  }\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n  if (!Array.isArray(array)) {\n    throw new Error('first argument should be an array');\n  }\n\n  return array.reduce(function (prev, next) {\n    return deepmerge(prev, next, options);\n  }, {});\n};\n\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+\"","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n  var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (encode === false) {\n    return String(str);\n  }\n\n  return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n  var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n  var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n  if (innermostTemplate && innermostTitle) {\n    // use function arg to avoid need to escape $ characters\n    return innermostTemplate.replace(/%s/g, function () {\n      return innermostTitle;\n    });\n  }\n\n  var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n  return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n  return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[tagType] !== \"undefined\";\n  }).map(function (props) {\n    return props[tagType];\n  }).reduce(function (tagAttrs, current) {\n    return _extends({}, tagAttrs, current);\n  }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n  }).map(function (props) {\n    return props[_HelmetConstants.TAG_NAMES.BASE];\n  }).reverse().reduce(function (innermostBaseTag, tag) {\n    if (!innermostBaseTag.length) {\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n          return innermostBaseTag.concat(tag);\n        }\n      }\n    }\n\n    return innermostBaseTag;\n  }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n  // Calculate list of tags, giving priority innermost component (end of the propslist)\n  var approvedSeenTags = {};\n  return propsList.filter(function (props) {\n    if (Array.isArray(props[tagName])) {\n      return true;\n    }\n\n    if (typeof props[tagName] !== \"undefined\") {\n      warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n    }\n\n    return false;\n  }).map(function (props) {\n    return props[tagName];\n  }).reverse().reduce(function (approvedTags, instanceTags) {\n    var instanceSeenTags = {};\n    instanceTags.filter(function (tag) {\n      var primaryAttributeKey = void 0;\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n          primaryAttributeKey = lowerCaseAttributeKey;\n        } // Special case for innerHTML which doesn't work lowercased\n\n\n        if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n          primaryAttributeKey = attributeKey;\n        }\n      }\n\n      if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n        return false;\n      }\n\n      var value = tag[primaryAttributeKey].toLowerCase();\n\n      if (!approvedSeenTags[primaryAttributeKey]) {\n        approvedSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!instanceSeenTags[primaryAttributeKey]) {\n        instanceSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!approvedSeenTags[primaryAttributeKey][value]) {\n        instanceSeenTags[primaryAttributeKey][value] = true;\n        return true;\n      }\n\n      return false;\n    }).reverse().forEach(function (tag) {\n      return approvedTags.push(tag);\n    }); // Update seen tags with tags from this instance\n\n    var keys = Object.keys(instanceSeenTags);\n\n    for (var i = 0; i < keys.length; i++) {\n      var attributeKey = keys[i];\n      var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n      approvedSeenTags[attributeKey] = tagUnion;\n    }\n\n    return approvedTags;\n  }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n  for (var i = propsList.length - 1; i >= 0; i--) {\n    var props = propsList[i];\n\n    if (props.hasOwnProperty(property)) {\n      return props[property];\n    }\n  }\n\n  return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n  return {\n    baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n    defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n    encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n    htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n    linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n    metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n    noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    onChangeClientState: getOnChangeClientState(propsList),\n    scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n    styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n    title: getTitleFromPropsList(propsList),\n    titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n  };\n};\n\nvar rafPolyfill = function () {\n  var clock = Date.now();\n  return function (callback) {\n    var currentTime = Date.now();\n\n    if (currentTime - clock > 16) {\n      clock = currentTime;\n      callback(currentTime);\n    } else {\n      setTimeout(function () {\n        rafPolyfill(callback);\n      }, 0);\n    }\n  };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n  return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n  return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n  if (_helmetCallback) {\n    cancelAnimationFrame(_helmetCallback);\n  }\n\n  if (newState.defer) {\n    _helmetCallback = requestAnimationFrame(function () {\n      commitTagChanges(newState, function () {\n        _helmetCallback = null;\n      });\n    });\n  } else {\n    commitTagChanges(newState);\n    _helmetCallback = null;\n  }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n  var baseTag = newState.baseTag,\n      bodyAttributes = newState.bodyAttributes,\n      htmlAttributes = newState.htmlAttributes,\n      linkTags = newState.linkTags,\n      metaTags = newState.metaTags,\n      noscriptTags = newState.noscriptTags,\n      onChangeClientState = newState.onChangeClientState,\n      scriptTags = newState.scriptTags,\n      styleTags = newState.styleTags,\n      title = newState.title,\n      titleAttributes = newState.titleAttributes;\n  updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n  updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n  updateTitle(title, titleAttributes);\n  var tagUpdates = {\n    baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n    linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n    metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n    noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n    scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n    styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n  };\n  var addedTags = {};\n  var removedTags = {};\n  Object.keys(tagUpdates).forEach(function (tagType) {\n    var _tagUpdates$tagType = tagUpdates[tagType],\n        newTags = _tagUpdates$tagType.newTags,\n        oldTags = _tagUpdates$tagType.oldTags;\n\n    if (newTags.length) {\n      addedTags[tagType] = newTags;\n    }\n\n    if (oldTags.length) {\n      removedTags[tagType] = tagUpdates[tagType].oldTags;\n    }\n  });\n  cb && cb();\n  onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n  return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n  if (typeof title !== \"undefined\" && document.title !== title) {\n    document.title = flattenArray(title);\n  }\n\n  updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n  var elementTag = document.getElementsByTagName(tagName)[0];\n\n  if (!elementTag) {\n    return;\n  }\n\n  var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n  var attributesToRemove = [].concat(helmetAttributes);\n  var attributeKeys = Object.keys(attributes);\n\n  for (var i = 0; i < attributeKeys.length; i++) {\n    var attribute = attributeKeys[i];\n    var value = attributes[attribute] || \"\";\n\n    if (elementTag.getAttribute(attribute) !== value) {\n      elementTag.setAttribute(attribute, value);\n    }\n\n    if (helmetAttributes.indexOf(attribute) === -1) {\n      helmetAttributes.push(attribute);\n    }\n\n    var indexToSave = attributesToRemove.indexOf(attribute);\n\n    if (indexToSave !== -1) {\n      attributesToRemove.splice(indexToSave, 1);\n    }\n  }\n\n  for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n    elementTag.removeAttribute(attributesToRemove[_i]);\n  }\n\n  if (helmetAttributes.length === attributesToRemove.length) {\n    elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n  } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n    elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n  }\n};\n\nvar updateTags = function updateTags(type, tags) {\n  var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n  var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n  var oldTags = Array.prototype.slice.call(tagNodes);\n  var newTags = [];\n  var indexToDelete = void 0;\n\n  if (tags && tags.length) {\n    tags.forEach(function (tag) {\n      var newElement = document.createElement(type);\n\n      for (var attribute in tag) {\n        if (tag.hasOwnProperty(attribute)) {\n          if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n            newElement.innerHTML = tag.innerHTML;\n          } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n            if (newElement.styleSheet) {\n              newElement.styleSheet.cssText = tag.cssText;\n            } else {\n              newElement.appendChild(document.createTextNode(tag.cssText));\n            }\n          } else {\n            var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n            newElement.setAttribute(attribute, value);\n          }\n        }\n      }\n\n      newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n      if (oldTags.some(function (existingTag, index) {\n        indexToDelete = index;\n        return newElement.isEqualNode(existingTag);\n      })) {\n        oldTags.splice(indexToDelete, 1);\n      } else {\n        newTags.push(newElement);\n      }\n    });\n  }\n\n  oldTags.forEach(function (tag) {\n    return tag.parentNode.removeChild(tag);\n  });\n  newTags.forEach(function (tag) {\n    return headElement.appendChild(tag);\n  });\n  return {\n    oldTags: oldTags,\n    newTags: newTags\n  };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n  return Object.keys(attributes).reduce(function (str, key) {\n    var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n    return str ? str + \" \" + attr : attr;\n  }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n  var attributeString = generateElementAttributesAsString(attributes);\n  var flattenedTitle = flattenArray(title);\n  return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n  return tags.reduce(function (str, tag) {\n    var attributeHtml = Object.keys(tag).filter(function (attribute) {\n      return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n    }).reduce(function (string, attribute) {\n      var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n      return string ? string + \" \" + attr : attr;\n    }, \"\");\n    var tagContent = tag.innerHTML || tag.cssText || \"\";\n    var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n    return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n  }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n  var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(attributes).reduce(function (obj, key) {\n    obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n    return obj;\n  }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n  var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(props).reduce(function (obj, key) {\n    obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n    return obj;\n  }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n  var _initProps; // assigning into an array to define toString function on it\n\n\n  var initProps = (_initProps = {\n    key: title\n  }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n  var props = convertElementAttributestoReactProps(attributes, initProps);\n  return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n  return tags.map(function (tag, i) {\n    var _mappedTag;\n\n    var mappedTag = (_mappedTag = {\n      key: i\n    }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n    Object.keys(tag).forEach(function (attribute) {\n      var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n      if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n        var content = tag.innerHTML || tag.cssText;\n        mappedTag.dangerouslySetInnerHTML = {\n          __html: content\n        };\n      } else {\n        mappedTag[mappedAttribute] = tag[attribute];\n      }\n    });\n    return _react2.default.createElement(type, mappedTag);\n  });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n  switch (type) {\n    case _HelmetConstants.TAG_NAMES.TITLE:\n      return {\n        toComponent: function toComponent() {\n          return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n        },\n        toString: function toString() {\n          return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n        }\n      };\n\n    case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n    case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n      return {\n        toComponent: function toComponent() {\n          return convertElementAttributestoReactProps(tags);\n        },\n        toString: function toString() {\n          return generateElementAttributesAsString(tags);\n        }\n      };\n\n    default:\n      return {\n        toComponent: function toComponent() {\n          return generateTagsAsReactComponent(type, tags);\n        },\n        toString: function toString() {\n          return generateTagsAsString(type, tags, encode);\n        }\n      };\n  }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n  var baseTag = _ref.baseTag,\n      bodyAttributes = _ref.bodyAttributes,\n      encode = _ref.encode,\n      htmlAttributes = _ref.htmlAttributes,\n      linkTags = _ref.linkTags,\n      metaTags = _ref.metaTags,\n      noscriptTags = _ref.noscriptTags,\n      scriptTags = _ref.scriptTags,\n      styleTags = _ref.styleTags,\n      _ref$title = _ref.title,\n      title = _ref$title === undefined ? \"\" : _ref$title,\n      titleAttributes = _ref.titleAttributes;\n  return {\n    base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n    bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n    htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n    link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n    meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n    noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n    script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n    style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n    title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, {\n      title: title,\n      titleAttributes: titleAttributes\n    }, encode)\n  };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-index-js-742d9c9328e3978208ef.js b/component---src-pages-index-js-742d9c9328e3978208ef.js
deleted file mode 100644
index 909117d..0000000
--- a/component---src-pages-index-js-742d9c9328e3978208ef.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{FYNb:function(I,M,g){I.exports=g.p+"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg"},JMMV:function(I,M,g){"use strict";var N=g("2A+t");g("qKvR");M.a=function(I){var M=I.children,g=I.primary,A=I.width;return Object(N.c)("article",{sx:{minHeight:"12.5rem",boxShadow:g?"cardShadow":null,borderRadius:"card",backgroundColor:"white",color:"darkText",marginY:5,marginX:2,width:A,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},M)}},KqNj:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},RXBc:function(I,M,g){"use strict";g.r(M);var N=g("Bl7J"),A=g("ZXdF"),D=g("JMMV"),j=g("wRmc"),C=g.n(j),T=g("UbSL"),i=g.n(T),z=g("FYNb"),c=g.n(z),w=g("KqNj"),y=g.n(w),e=g("Q4rR"),O=g.n(e),L=g("Wbzz"),x=g("2A+t"),u=g("MXbp");g("qKvR");M.default=function(){return Object(x.c)(N.a,{isHome:!0},Object(x.c)("section",{sx:{backgroundColor:"primary",color:"lightText",display:"flex",minHeight:"32rem",flexDirection:["column","column","row","row"],paddingBottom:["4rem","4rem",0,0]}},Object(x.c)("div",{sx:{backgroundImage:"url("+C.a+")",width:["100%","100%","30%","30%"],minHeight:"12.5rem"}}),Object(x.c)("div",{sx:{height:"15rem",width:"15rem",borderRadius:"50%",backgroundColor:"#434343",position:"absolute",left:["calc(50% - 8rem)","calc(50% - 8rem)","calc(30% - 8rem)","calc(30% - 8rem)"],top:["4.5rem","4.5rem","8rem","8rem"],border:"white solid 0.15rem",display:"flex",alignItems:"center",justifyContent:"center"}},Object(x.c)("img",{src:i.a,alt:"OpenJ9 Logo"})),Object(x.c)("div",{sx:{width:["90%","90%","40%","33%"],display:"flex",flexDirection:"column",justifyContent:"center",alignItems:["center",null,"start","start"],textAlign:["center",null,"left","left"],marginTop:["8rem","8rem","3rem","3rem"],marginLeft:["5%","5%","20%","15%"]}},Object(x.c)(u.b.h1,null,"Unleash the power of Java"),Object(x.c)(u.b.p,null,"Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most."))),Object(x.c)("section",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:"repeat(1, 1fr)"}},Object(x.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-around",padding:"4rem 5% 0 5%"}},Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-rocket fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"Optimized for the Cloud"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"for microservices and monoliths too!")),Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-tachometer-alt fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"42% Faster Startup"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"over HotSpot")),Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-chart-line fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"28% Faster Ramp-up"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"when deployed to cloud vs HotSpot")),Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-archive fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"66% Smaller"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"when compared to HotSpot"))),Object(x.c)("div",{sx:{display:"flex",justifyContent:"center",paddingBottom:"4rem"}},Object(x.c)(L.Link,{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"15rem"},to:"/performance"},"Read performance details"))),Object(x.c)("section",{sx:{padding:"calc(5% + 2.5rem)",backgroundColor:"#F5F9FC",minHeight:"50vh"}},Object(x.c)(u.b.h3,null,"Join the conversation"),Object(x.c)("div",{sx:{display:"grid",gridGap:"6rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],backgroundColor:"white",borderRadius:"card",paddingX:"5%",paddingY:"4rem"}},Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.p,null,"Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we'd love to hear from you."),Object(x.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA"},"Join OpenJ9 slack",Object(x.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:y.a,alt:"slack Logo"}))),Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.p,null,"Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having."),Object(x.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://github.com/eclipse/openj9/issues"},"See OpenJ9 issues",Object(x.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:O.a,alt:"GitHub Logo"}))))),Object(x.c)("section",{sx:{backgroundImage:"url("+c.a+")",height:"50vh",backgroundRepeat:"no-repeat",backgroundSize:"cover",display:"flex",alignItems:"center",color:"white",paddingLeft:"15%"}},Object(x.c)(u.b.h2,null,"Participate in the ",Object(x.c)("br",null)," Eclipse OpenJ9 project")),Object(x.c)("section",{sx:{display:"grid",gridGap:"6rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],padding:"calc(5% + 2.5rem)",paddingY:"4rem"}},Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.h3,null,"Become a contributor"),Object(x.c)(u.b.p,null,"We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!"),Object(x.c)(A.a,{primary:!0,target:!0,link:"https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md"},"Contributor Guide")),Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.h3,null,"Join community calls"),Object(x.c)(u.b.p,null,"Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel."),Object(x.c)(A.a,{primary:!0,target:!0,link:"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ"},"Add to Calendar"))))}},UbSL:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},ZXdF:function(I,M,g){"use strict";var N=g("2A+t");g("qKvR");M.a=function(I){var M=I.children,g=I.primary,A=I.link,D=I.target,j=I.widthChanged,C=g?"buttons.primary":"buttons.secondary";return D?Object(N.c)("a",{href:A,rel:"noopener noreferrer",target:"_blank",sx:{variant:C,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:j?"15rem":"12rem"}},M):Object(N.c)("a",{href:A,sx:{variant:C,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:j?"15rem":"12rem"}},M)}},wRmc:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="}}]);
-//# sourceMappingURL=component---src-pages-index-js-742d9c9328e3978208ef.js.map
\ No newline at end of file
diff --git a/component---src-pages-index-js-742d9c9328e3978208ef.js.map b/component---src-pages-index-js-742d9c9328e3978208ef.js.map
deleted file mode 100644
index b71d992..0000000
--- a/component---src-pages-index-js-742d9c9328e3978208ef.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./src/images/circle-pattern-big.svg","webpack:///./src/components/card.js","webpack:///./src/images/white-slack-logo.svg","webpack:///./src/pages/index.js","webpack:///./src/images/openj9-logo.svg","webpack:///./src/components/button.js","webpack:///./src/images/openj9-circle.svg"],"names":["module","exports","Card","children","primary","width","sx","minHeight","boxShadow","borderRadius","backgroundColor","color","marginY","marginX","display","flexDirection","justifyContent","alignItems","isHome","paddingBottom","backgroundImage","openj9Circle","height","position","left","top","border","src","openj9Logo","alt","textAlign","marginTop","marginLeft","h1","p","gridGap","gridTemplateColumns","flexWrap","padding","className","h4","marginBottom","variant","textDecoration","to","h3","paddingX","paddingY","target","widthChanged","link","whiteSlackIcon","githubIcon","circlePatternBig","backgroundRepeat","backgroundSize","paddingLeft","h2","Button","href","rel"],"mappings":"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","file":"component---src-pages-index-js-742d9c9328e3978208ef.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg\";","\n// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\n\nconst Card = ({ children, primary, width }) => {\n  return (\n    <article\n      sx={{\n        minHeight: \"12.5rem\",\n        boxShadow: primary ? \"cardShadow\" : null,\n        borderRadius: \"card\",\n        backgroundColor: \"white\",\n        color: \"darkText\",\n        marginY: 5,\n        marginX: 2,\n        width: width,\n        display: \"flex\",\n        flexDirection: \"column\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n      }}\n    >\n      {children}\n    </article>\n  );\n};\n\nexport default Card;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\nimport Button from \"../components/button\";\nimport Card from \"../components/card\";\n\nimport openj9Circle from \"../images/openj9-circle.svg\";\nimport openj9Logo from \"../images/openj9-logo.svg\";\nimport circlePatternBig from \"../images/circle-pattern-big.svg\";\nimport whiteSlackIcon from \"../images/white-slack-logo.svg\"\nimport githubIcon from \"../images/github-logo.svg\";\nimport {Link} from \"gatsby\"\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nexport default () => (\n  <Layout isHome={true}>\n    <section\n      sx={{\n        backgroundColor: \"primary\",\n        color: \"lightText\",\n        display: \"flex\",\n        minHeight: \"32rem\",\n        flexDirection: [\"column\", \"column\", \"row\", \"row\"],\n        paddingBottom: [\"4rem\", \"4rem\", 0, 0]\n      }}\n    >\n      <div\n        sx={{\n          backgroundImage: `url(${openj9Circle})`,\n          width: [\"100%\", \"100%\", \"30%\", \"30%\"],\n          minHeight: \"12.5rem\"\n        }}\n      ></div>\n      <div\n        sx={{\n          height: \"15rem\",\n          width: \"15rem\",\n          borderRadius: \"50%\",\n          backgroundColor: \"#434343\",\n          position: \"absolute\",\n          left: [\n            \"calc(50% - 8rem)\",\n            \"calc(50% - 8rem)\",\n            \"calc(30% - 8rem)\",\n            \"calc(30% - 8rem)\"\n          ],\n          top: [\"4.5rem\", \"4.5rem\", \"8rem\", \"8rem\"],\n          border: \"white solid 0.15rem\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\"\n        }}\n      >\n        <img src={openj9Logo} alt=\"OpenJ9 Logo\"></img>\n      </div>\n      <div\n        sx={{\n          width: [\"90%\", \"90%\", \"40%\", \"33%\"],\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent: \"center\",\n          alignItems: [\"center\", null, \"start\", \"start\"],\n          textAlign: [\"center\", null, \"left\", \"left\"],\n          marginTop: [\"8rem\", \"8rem\", \"3rem\", \"3rem\"],\n          marginLeft: [\"5%\", \"5%\", \"20%\", \"15%\"]\n        }}\n      >\n        <Styled.h1>Unleash the power of Java</Styled.h1>\n        <Styled.p>\n          Optimized to run Java&trade; applications cost-effectively in the cloud, \n          Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.\n        </Styled.p>\n      </div>\n    </section>\n    <section sx={{\n      display: \"grid\",\n      gridGap:'3rem',\n      gridTemplateColumns:'repeat(1, 1fr)'\n    }}>\n      <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-around\",\n          padding: \"4rem 5% 0 5%\",\n        }}\n      >\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-rocket fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>Optimized for the Cloud</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>for microservices and monoliths too!</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-tachometer-alt fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>42% Faster Startup</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>over HotSpot</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-chart-line fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>28% Faster Ramp-up</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>when deployed to cloud vs HotSpot</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\"primary={false}>\n        <i className=\"fas fa-archive fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>66% Smaller</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>when compared to HotSpot</Styled.p>\n        </Card>\n      </div>\n\n      <div\n        sx={{\n          display: \"flex\",\n          justifyContent: \"center\",\n          paddingBottom: \"4rem\"\n        }}\n      >\n      <Link sx={{\n          variant: \"buttons.secondary\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width:\"15rem\",\n          }} \n        to=\"/performance\">Read performance details</Link>\n\n      </div>\n    </section>\n    \n    <section\n      sx={{\n        padding: `calc(5% + 2.5rem)`,\n        backgroundColor: \"#F5F9FC\",\n        minHeight: \"50vh\"\n      }}\n    >\n      <Styled.h3>Join the conversation</Styled.h3>\n      <div\n        sx={{\n          display: \"grid\",\n          gridGap:'6rem',\n          gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n          backgroundColor:'white',\n          borderRadius:'card',\n          paddingX:'5%',\n          paddingY: \"4rem\"\n        }}\n      >\n        <div\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.p>\n            Join us on Slack where you can ask questions and chat directly with our developers.\n            Whether you simply have a question about using OpenJ9, an idea for improvement,\n            or a problem you want to discuss, we'd love to hear from you.\n          </Styled.p>\n          <Button primary={false} target={true} widthChanged={false} link=\"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA\">\n            Join OpenJ9 slack\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\",\n          }}src={whiteSlackIcon} alt=\"slack Logo\"></img>\n          </Button>\n        </div>\n        <div\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.p>\n            Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas,\n            request new features, or report any difficulties you are having. \n          </Styled.p>\n          \n          <Button primary={false} target={true} widthChanged={false} link=\"https://github.com/eclipse/openj9/issues\">\n            See OpenJ9 issues\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\"\n          }}src={githubIcon} alt=\"GitHub Logo\"></img>\n          </Button>\n        </div>\n      </div>\n    </section>\n    \n    <section\n      sx={{\n        backgroundImage: `url(${circlePatternBig})`,\n        height: \"50vh\",\n        backgroundRepeat: \"no-repeat\",\n        backgroundSize: \"cover\",\n        display: \"flex\",\n        alignItems: \"center\",\n        color: \"white\",\n        paddingLeft: \"15%\"\n      }}\n    >\n      <Styled.h2>\n        Participate in the <br></br> Eclipse OpenJ9 project\n      </Styled.h2>\n    </section>\n    <section\n      sx={{\n        display: \"grid\",\n        gridGap:'6rem',\n        gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n        padding: \"calc(5% + 2.5rem)\",\n        paddingY:\"4rem\"\n      }}\n    >\n      <div\n        sx={{\n          display:'flex',\n          flexDirection:'column',\n          justifyContent:'space-between'\n        }}\n      >\n        <Styled.h3>Become a contributor</Styled.h3>\n        <Styled.p>\n          We welcome contributions to the project in all shapes and forms.\n          If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base.\n          There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success! \n        </Styled.p >\n        <Button primary={true} target={true} link=\"https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md\">\n          Contributor Guide\n        </Button>\n      </div>\n      <div\n        sx={{\n          display:'flex',\n          flexDirection:'column',\n          justifyContent:'space-between'\n        }}\n      >\n        <Styled.h3>Join community calls</Styled.h3>\n        <Styled.p>\n          Our regular calls are a great place to find out what is going on in the project.\n          As well as discussing our release plans and development status, we often feature lightning talks by members of the community.\n          For example, technical deep dives or overviews about new features. To see agendas and recordings,\n          look in the Slack #planning channel.\n        </Styled.p>\n        <Button primary={true} target={true} link=\"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ\">\n          Add to Calendar\n        </Button>\n      </div>\n    </section>\n  </Layout>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\n\nimport { jsx } from \"theme-ui\"\n\nconst Button = ({children, primary, link, target, widthChanged }) => {\n  const variant = primary ? \"buttons.primary\" : \"buttons.secondary\"\n  if (target) {\n    return (\n      <a href= {link} rel=\"noopener noreferrer\" target=\"_blank\"\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"15rem\" : \"12rem\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  } else {\n    return (\n      <a href= {link}\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"15rem\" : \"12rem\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  }\n}\n\nexport default Button\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-index-js-95eb74b93a53ac66e3a0.js b/component---src-pages-index-js-95eb74b93a53ac66e3a0.js
new file mode 100644
index 0000000..0b37508
--- /dev/null
+++ b/component---src-pages-index-js-95eb74b93a53ac66e3a0.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{FYNb:function(I,M,g){I.exports=g.p+"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg"},JMMV:function(I,M,g){"use strict";var N=g("2A+t");g("qKvR");M.a=function(I){var M=I.children,g=I.primary,A=I.width;return Object(N.c)("article",{sx:{minHeight:"12.5rem",boxShadow:g?"cardShadow":null,borderRadius:"card",backgroundColor:"white",color:"darkText",marginY:5,marginX:2,width:A,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},M)}},KqNj:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"},RXBc:function(I,M,g){"use strict";g.r(M);var N=g("Bl7J"),A=g("ZXdF"),D=g("JMMV"),j=g("wRmc"),C=g.n(j),T=g("UbSL"),i=g.n(T),z=g("FYNb"),c=g.n(z),w=g("KqNj"),y=g.n(w),e=g("Q4rR"),O=g.n(e),L=g("Wbzz"),x=g("2A+t"),u=g("MXbp");g("qKvR");M.default=function(){return Object(x.c)(N.a,{isHome:!0},Object(x.c)("section",{sx:{backgroundColor:"primary",color:"lightText",display:"flex",minHeight:"32rem",flexDirection:["column","column","row","row"],paddingBottom:["4rem","4rem",0,0]}},Object(x.c)("div",{sx:{backgroundImage:"url("+C.a+")",width:["100%","100%","30%","30%"],minHeight:"12.5rem"}}),Object(x.c)("div",{sx:{height:"15rem",width:"15rem",borderRadius:"50%",backgroundColor:"#434343",position:"absolute",left:["calc(50% - 8rem)","calc(50% - 8rem)","calc(30% - 8rem)","calc(30% - 8rem)"],top:["4.5rem","4.5rem","8rem","8rem"],border:"white solid 0.15rem",display:"flex",alignItems:"center",justifyContent:"center"}},Object(x.c)("img",{src:i.a,alt:"OpenJ9 Logo"})),Object(x.c)("div",{sx:{width:["90%","90%","40%","33%"],display:"flex",flexDirection:"column",justifyContent:"center",alignItems:["center",null,"start","start"],textAlign:["center",null,"left","left"],marginTop:["8rem","8rem","3rem","3rem"],marginLeft:["5%","5%","20%","15%"]}},Object(x.c)(u.b.h1,null,"Unleash the power of Java"),Object(x.c)(u.b.p,null,"Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most."))),Object(x.c)("section",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:"repeat(1, 1fr)"}},Object(x.c)("div",{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-around",padding:"4rem 5% 0 5%"}},Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-rocket fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"Optimized for the Cloud"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"for microservices and monoliths too!")),Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-tachometer-alt fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"42% Faster Startup"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"over HotSpot")),Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-chart-line fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"28% Faster Ramp-up"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"when deployed to cloud vs HotSpot")),Object(x.c)(D.a,{width:"18rem",primary:!1},Object(x.c)("i",{className:"fas fa-archive fa-5x"}),Object(x.c)(u.b.h4,{sx:{textAlign:"center",marginBottom:"0.25rem"}},"66% Smaller"),Object(x.c)(u.b.p,{sx:{textAlign:"center"}},"when compared to HotSpot"))),Object(x.c)("div",{sx:{display:"flex",justifyContent:"center",paddingBottom:"4rem"}},Object(x.c)(L.Link,{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"15rem"},to:"/performance"},"Read performance details"))),Object(x.c)("section",{sx:{padding:"calc(5% + 2.5rem)",backgroundColor:"#F5F9FC",minHeight:"50vh"}},Object(x.c)(u.b.h3,null,"Join the conversation"),Object(x.c)("div",{sx:{display:"grid",gridGap:"6rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],backgroundColor:"white",borderRadius:"card",paddingX:"5%",paddingY:"4rem"}},Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.p,null,"Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we'd love to hear from you."),Object(x.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA"},"Join OpenJ9 slack",Object(x.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:y.a,alt:"slack Logo"}))),Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.p,null,"Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having."),Object(x.c)(A.a,{primary:!1,target:!0,widthChanged:!1,link:"https://github.com/eclipse-openj9/openj9/issues"},"See OpenJ9 issues",Object(x.c)("img",{sx:{width:"10%",marginLeft:"0.8rem"},src:O.a,alt:"GitHub Logo"}))))),Object(x.c)("section",{sx:{backgroundImage:"url("+c.a+")",height:"50vh",backgroundRepeat:"no-repeat",backgroundSize:"cover",display:"flex",alignItems:"center",color:"white",paddingLeft:"15%"}},Object(x.c)(u.b.h2,null,"Participate in the ",Object(x.c)("br",null)," Eclipse OpenJ9 project")),Object(x.c)("section",{sx:{display:"grid",gridGap:"6rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],padding:"calc(5% + 2.5rem)",paddingY:"4rem"}},Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.h3,null,"Become a contributor"),Object(x.c)(u.b.p,null,"We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!"),Object(x.c)(A.a,{primary:!0,target:!0,link:"https://github.com/eclipse-openj9/openj9/blob/master/CONTRIBUTING.md"},"Contributor Guide")),Object(x.c)("div",{sx:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},Object(x.c)(u.b.h3,null,"Join community calls"),Object(x.c)(u.b.p,null,"Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel."),Object(x.c)(A.a,{primary:!0,target:!0,link:"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ"},"Add to Calendar"))))}},UbSL:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="},ZXdF:function(I,M,g){"use strict";var N=g("2A+t");g("qKvR");M.a=function(I){var M=I.children,g=I.primary,A=I.link,D=I.target,j=I.widthChanged,C=g?"buttons.primary":"buttons.secondary";return D?Object(N.c)("a",{href:A,rel:"noopener noreferrer",target:"_blank",sx:{variant:C,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:j?"15rem":"12rem"}},M):Object(N.c)("a",{href:A,sx:{variant:C,display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:j?"15rem":"12rem"}},M)}},wRmc:function(I,M){I.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg=="}}]);
+//# sourceMappingURL=component---src-pages-index-js-95eb74b93a53ac66e3a0.js.map
\ No newline at end of file
diff --git a/component---src-pages-index-js-95eb74b93a53ac66e3a0.js.map b/component---src-pages-index-js-95eb74b93a53ac66e3a0.js.map
new file mode 100644
index 0000000..586695f
--- /dev/null
+++ b/component---src-pages-index-js-95eb74b93a53ac66e3a0.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./src/images/circle-pattern-big.svg","webpack:///./src/components/card.js","webpack:///./src/images/white-slack-logo.svg","webpack:///./src/pages/index.js","webpack:///./src/images/openj9-logo.svg","webpack:///./src/components/button.js","webpack:///./src/images/openj9-circle.svg"],"names":["module","exports","Card","children","primary","width","sx","minHeight","boxShadow","borderRadius","backgroundColor","color","marginY","marginX","display","flexDirection","justifyContent","alignItems","isHome","paddingBottom","backgroundImage","openj9Circle","height","position","left","top","border","src","openj9Logo","alt","textAlign","marginTop","marginLeft","h1","p","gridGap","gridTemplateColumns","flexWrap","padding","className","h4","marginBottom","variant","textDecoration","to","h3","paddingX","paddingY","target","widthChanged","link","whiteSlackIcon","githubIcon","circlePatternBig","backgroundRepeat","backgroundSize","paddingLeft","h2","Button","href","rel"],"mappings":"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","file":"component---src-pages-index-js-95eb74b93a53ac66e3a0.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg\";","\n// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\n\nconst Card = ({ children, primary, width }) => {\n  return (\n    <article\n      sx={{\n        minHeight: \"12.5rem\",\n        boxShadow: primary ? \"cardShadow\" : null,\n        borderRadius: \"card\",\n        backgroundColor: \"white\",\n        color: \"darkText\",\n        marginY: 5,\n        marginX: 2,\n        width: width,\n        display: \"flex\",\n        flexDirection: \"column\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n      }}\n    >\n      {children}\n    </article>\n  );\n};\n\nexport default Card;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\nimport Button from \"../components/button\";\nimport Card from \"../components/card\";\n\nimport openj9Circle from \"../images/openj9-circle.svg\";\nimport openj9Logo from \"../images/openj9-logo.svg\";\nimport circlePatternBig from \"../images/circle-pattern-big.svg\";\nimport whiteSlackIcon from \"../images/white-slack-logo.svg\"\nimport githubIcon from \"../images/github-logo.svg\";\nimport {Link} from \"gatsby\"\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nexport default () => (\n  <Layout isHome={true}>\n    <section\n      sx={{\n        backgroundColor: \"primary\",\n        color: \"lightText\",\n        display: \"flex\",\n        minHeight: \"32rem\",\n        flexDirection: [\"column\", \"column\", \"row\", \"row\"],\n        paddingBottom: [\"4rem\", \"4rem\", 0, 0]\n      }}\n    >\n      <div\n        sx={{\n          backgroundImage: `url(${openj9Circle})`,\n          width: [\"100%\", \"100%\", \"30%\", \"30%\"],\n          minHeight: \"12.5rem\"\n        }}\n      ></div>\n      <div\n        sx={{\n          height: \"15rem\",\n          width: \"15rem\",\n          borderRadius: \"50%\",\n          backgroundColor: \"#434343\",\n          position: \"absolute\",\n          left: [\n            \"calc(50% - 8rem)\",\n            \"calc(50% - 8rem)\",\n            \"calc(30% - 8rem)\",\n            \"calc(30% - 8rem)\"\n          ],\n          top: [\"4.5rem\", \"4.5rem\", \"8rem\", \"8rem\"],\n          border: \"white solid 0.15rem\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\"\n        }}\n      >\n        <img src={openj9Logo} alt=\"OpenJ9 Logo\"></img>\n      </div>\n      <div\n        sx={{\n          width: [\"90%\", \"90%\", \"40%\", \"33%\"],\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent: \"center\",\n          alignItems: [\"center\", null, \"start\", \"start\"],\n          textAlign: [\"center\", null, \"left\", \"left\"],\n          marginTop: [\"8rem\", \"8rem\", \"3rem\", \"3rem\"],\n          marginLeft: [\"5%\", \"5%\", \"20%\", \"15%\"]\n        }}\n      >\n        <Styled.h1>Unleash the power of Java</Styled.h1>\n        <Styled.p>\n          Optimized to run Java&trade; applications cost-effectively in the cloud, \n          Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.\n        </Styled.p>\n      </div>\n    </section>\n    <section sx={{\n      display: \"grid\",\n      gridGap:'3rem',\n      gridTemplateColumns:'repeat(1, 1fr)'\n    }}>\n      <div\n        sx={{\n          display: \"flex\",\n          flexWrap: \"wrap\",\n          justifyContent: \"space-around\",\n          padding: \"4rem 5% 0 5%\",\n        }}\n      >\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-rocket fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>Optimized for the Cloud</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>for microservices and monoliths too!</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-tachometer-alt fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>42% Faster Startup</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>over HotSpot</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\" primary={false}>\n        <i className=\"fas fa-chart-line fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>28% Faster Ramp-up</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>when deployed to cloud vs HotSpot</Styled.p>\n        </Card>\n\n        <Card width=\"18rem\"primary={false}>\n        <i className=\"fas fa-archive fa-5x\"></i>\n          <Styled.h4 sx={{textAlign:\"center\", marginBottom:\"0.25rem\"}}>66% Smaller</Styled.h4>\n          <Styled.p sx={{textAlign:\"center\"}}>when compared to HotSpot</Styled.p>\n        </Card>\n      </div>\n\n      <div\n        sx={{\n          display: \"flex\",\n          justifyContent: \"center\",\n          paddingBottom: \"4rem\"\n        }}\n      >\n      <Link sx={{\n          variant: \"buttons.secondary\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width:\"15rem\",\n          }} \n        to=\"/performance\">Read performance details</Link>\n\n      </div>\n    </section>\n    \n    <section\n      sx={{\n        padding: `calc(5% + 2.5rem)`,\n        backgroundColor: \"#F5F9FC\",\n        minHeight: \"50vh\"\n      }}\n    >\n      <Styled.h3>Join the conversation</Styled.h3>\n      <div\n        sx={{\n          display: \"grid\",\n          gridGap:'6rem',\n          gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n          backgroundColor:'white',\n          borderRadius:'card',\n          paddingX:'5%',\n          paddingY: \"4rem\"\n        }}\n      >\n        <div\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.p>\n            Join us on Slack where you can ask questions and chat directly with our developers.\n            Whether you simply have a question about using OpenJ9, an idea for improvement,\n            or a problem you want to discuss, we'd love to hear from you.\n          </Styled.p>\n          <Button primary={false} target={true} widthChanged={false} link=\"https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA\">\n            Join OpenJ9 slack\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\",\n          }}src={whiteSlackIcon} alt=\"slack Logo\"></img>\n          </Button>\n        </div>\n        <div\n          sx={{\n            display:'flex',\n            flexDirection:'column',\n            justifyContent:'space-between'\n          }}\n        >\n          <Styled.p>\n            Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas,\n            request new features, or report any difficulties you are having. \n          </Styled.p>\n          \n          <Button primary={false} target={true} widthChanged={false} link=\"https://github.com/eclipse-openj9/openj9/issues\">\n            See OpenJ9 issues\n            <img sx={{\n            width: \"10%\",\n            marginLeft: \"0.8rem\"\n          }}src={githubIcon} alt=\"GitHub Logo\"></img>\n          </Button>\n        </div>\n      </div>\n    </section>\n    \n    <section\n      sx={{\n        backgroundImage: `url(${circlePatternBig})`,\n        height: \"50vh\",\n        backgroundRepeat: \"no-repeat\",\n        backgroundSize: \"cover\",\n        display: \"flex\",\n        alignItems: \"center\",\n        color: \"white\",\n        paddingLeft: \"15%\"\n      }}\n    >\n      <Styled.h2>\n        Participate in the <br></br> Eclipse OpenJ9 project\n      </Styled.h2>\n    </section>\n    <section\n      sx={{\n        display: \"grid\",\n        gridGap:'6rem',\n        gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n        padding: \"calc(5% + 2.5rem)\",\n        paddingY:\"4rem\"\n      }}\n    >\n      <div\n        sx={{\n          display:'flex',\n          flexDirection:'column',\n          justifyContent:'space-between'\n        }}\n      >\n        <Styled.h3>Become a contributor</Styled.h3>\n        <Styled.p>\n          We welcome contributions to the project in all shapes and forms.\n          If you are interested in JVM development, we'd love to hear your ideas and help you collaborate with us on the code base.\n          There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success! \n        </Styled.p >\n        <Button primary={true} target={true} link=\"https://github.com/eclipse-openj9/openj9/blob/master/CONTRIBUTING.md\">\n          Contributor Guide\n        </Button>\n      </div>\n      <div\n        sx={{\n          display:'flex',\n          flexDirection:'column',\n          justifyContent:'space-between'\n        }}\n      >\n        <Styled.h3>Join community calls</Styled.h3>\n        <Styled.p>\n          Our regular calls are a great place to find out what is going on in the project.\n          As well as discussing our release plans and development status, we often feature lightning talks by members of the community.\n          For example, technical deep dives or overviews about new features. To see agendas and recordings,\n          look in the Slack #planning channel.\n        </Styled.p>\n        <Button primary={true} target={true} link=\"https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ\">\n          Add to Calendar\n        </Button>\n      </div>\n    </section>\n  </Layout>\n);\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\n\nimport { jsx } from \"theme-ui\"\n\nconst Button = ({children, primary, link, target, widthChanged }) => {\n  const variant = primary ? \"buttons.primary\" : \"buttons.secondary\"\n  if (target) {\n    return (\n      <a href= {link} rel=\"noopener noreferrer\" target=\"_blank\"\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"15rem\" : \"12rem\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  } else {\n    return (\n      <a href= {link}\n        sx={{\n          variant: variant,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          textDecoration: \"none\",\n          width: widthChanged ? \"15rem\" : \"12rem\",\n        }}\n      >\n        {children}\n      </a>\n    )\n  }\n}\n\nexport default Button\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/component---src-pages-performance-js-51cfc654fd38628b84c4.js b/component---src-pages-performance-js-51cfc654fd38628b84c4.js
deleted file mode 100644
index ac3002e..0000000
--- a/component---src-pages-performance-js-51cfc654fd38628b84c4.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{"+6XX":function(t,e,n){var r=n("y1pI");t.exports=function(t){return r(this.__data__,t)>-1}},"+c4W":function(t,e,n){var r=n("711d"),a=n("4/ic"),i=n("9ggG"),o=n("9Nap");t.exports=function(t){return i(t)?r(o(t)):a(t)}},"/9aa":function(t,e,n){var r=n("NykK"),a=n("ExA7");t.exports=function(t){return"symbol"==typeof t||a(t)&&"[object Symbol]"==r(t)}},"03A+":function(t,e,n){var r=n("JTzB"),a=n("ExA7"),i=Object.prototype,o=i.hasOwnProperty,s=i.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(t){return a(t)&&o.call(t,"callee")&&!s.call(t,"callee")};t.exports=u},"0Cz8":function(t,e,n){var r=n("Xi7e"),a=n("ebwN"),i=n("e4Nc");t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!a||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(o)}return n.set(t,e),this.size=n.size,this}},"0ycA":function(t,e){t.exports=function(){return[]}},"1hJj":function(t,e,n){var r=n("e4Nc"),a=n("ftKO"),i=n("3A9y");function o(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}o.prototype.add=o.prototype.push=a,o.prototype.has=i,t.exports=o},"2gN3":function(t,e,n){var r=n("Kz5y")["__core-js_shared__"];t.exports=r},"3A9y":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"3Fdi":function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"4/ic":function(t,e,n){var r=n("ZWtO");t.exports=function(t){return function(e){return r(e,t)}}},"44Ds":function(t,e,n){var r=n("e4Nc");function a(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=e?e.apply(this,r):r[0],i=n.cache;if(i.has(a))return i.get(a);var o=t.apply(this,r);return n.cache=i.set(a,o)||i,o};return n.cache=new(a.Cache||r),n}a.Cache=r,t.exports=a},"4kuk":function(t,e,n){var r=n("SfRM"),a=n("Hvzi"),i=n("u8Dt"),o=n("ekgI"),s=n("JSQU");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=o,u.prototype.set=s,t.exports=u},"4sDh":function(t,e,n){var r=n("4uTw"),a=n("03A+"),i=n("Z0cm"),o=n("wJg7"),s=n("shjB"),u=n("9Nap");t.exports=function(t,e,n){for(var c=-1,l=(e=r(e,t)).length,h=!1;++c<l;){var d=u(e[c]);if(!(h=null!=t&&n(t,d)))break;t=t[d]}return h||++c!=l?h:!!(l=null==t?0:t.length)&&s(l)&&o(d,l)&&(i(t)||a(t))}},"4uTw":function(t,e,n){var r=n("Z0cm"),a=n("9ggG"),i=n("GNiM"),o=n("dt0z");t.exports=function(t,e){return r(t)?t:a(t,e)?[t]:i(o(t))}},"6sVZ":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"711d":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"77Zs":function(t,e,n){var r=n("Xi7e");t.exports=function(){this.__data__=new r,this.size=0}},"7GkX":function(t,e,n){var r=n("b80T"),a=n("A90E"),i=n("MMmD");t.exports=function(t){return i(t)?r(t):a(t)}},"7fqy":function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}},"8oxB":function(t,e){var n,r,a=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var u,c=[],l=!1,h=-1;function d(){l&&u&&(l=!1,u.length?c=u.concat(c):h=-1,c.length&&f())}function f(){if(!l){var t=s(d);l=!0;for(var e=c.length;e;){for(u=c,c=[];++h<e;)u&&u[h].run();h=-1,e=c.length}u=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function m(){}a.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new p(t,e)),1!==c.length||l||s(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=m,a.addListener=m,a.once=m,a.off=m,a.removeListener=m,a.removeAllListeners=m,a.emit=m,a.prependListener=m,a.prependOnceListener=m,a.listeners=function(t){return[]},a.binding=function(t){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(t){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},"9Nap":function(t,e,n){var r=n("/9aa");t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},"9ggG":function(t,e,n){var r=n("Z0cm"),a=n("/9aa"),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!a(t))||(o.test(t)||!i.test(t)||null!=e&&t in Object(e))}},A90E:function(t,e,n){var r=n("6sVZ"),a=n("V6Ve"),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return a(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},AP2z:function(t,e,n){var r=n("nmnc"),a=Object.prototype,i=a.hasOwnProperty,o=a.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(u){}var a=o.call(t);return r&&(e?t[s]=n:delete t[s]),a}},B8du:function(t,e){t.exports=function(){return!1}},CH3K:function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,a=t.length;++n<r;)t[a+n]=e[n];return t}},CMye:function(t,e,n){var r=n("GoyQ");t.exports=function(t){return t==t&&!r(t)}},Cwc5:function(t,e,n){var r=n("NKxu"),a=n("Npjl");t.exports=function(t,e){var n=a(t,e);return r(n)?n:void 0}},DSRE:function(t,e,n){(function(t){var r=n("Kz5y"),a=n("B8du"),i=e&&!e.nodeType&&e,o=i&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===i?r.Buffer:void 0,u=(s?s.isBuffer:void 0)||a;t.exports=u}).call(this,n("YuTi")(t))},E2jh:function(t,e,n){var r,a=n("2gN3"),i=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},EpBk:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},ExA7:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},GDhZ:function(t,e,n){var r=n("wF/u"),a=n("mwIZ"),i=n("hgQt"),o=n("9ggG"),s=n("CMye"),u=n("IOzZ"),c=n("9Nap");t.exports=function(t,e){return o(t)&&s(e)?u(c(t),e):function(n){var o=a(n,t);return void 0===o&&o===e?i(n,t):r(e,o,3)}}},GNiM:function(t,e,n){var r=n("I01J"),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,o=r((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(a,(function(t,n,r,a){e.push(r?a.replace(i,"$1"):n||t)})),e}));t.exports=o},GoyQ:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},H8j4:function(t,e,n){var r=n("QkVE");t.exports=function(t,e){var n=r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this}},HDyB:function(t,e,n){var r=n("nmnc"),a=n("JHRd"),i=n("ljhN"),o=n("or5M"),s=n("7fqy"),u=n("rEGp"),c=r?r.prototype:void 0,l=c?c.valueOf:void 0;t.exports=function(t,e,n,r,c,h,d){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!h(new a(t),new a(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var f=s;case"[object Set]":var p=1&r;if(f||(f=u),t.size!=e.size&&!p)return!1;var m=d.get(t);if(m)return m==e;r|=2,d.set(t,e);var y=o(f(t),f(e),r,c,h,d);return d.delete(t),y;case"[object Symbol]":if(l)return l.call(t)==l.call(e)}return!1}},HOxn:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Promise");t.exports=r},Hvzi:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},I01J:function(t,e,n){var r=n("44Ds");t.exports=function(t){var e=r(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},IOzZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}},JC6p:function(t,e,n){var r=n("cq/+"),a=n("7GkX");t.exports=function(t,e){return t&&r(t,e,a)}},JD84:function(t,e,n){var r=n("SKAX");t.exports=function(t,e,n,a){return r(t,(function(t,r,i){e(a,t,n(t),i)})),a}},JHRd:function(t,e,n){var r=n("Kz5y").Uint8Array;t.exports=r},JHgL:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).get(t)}},JSQU:function(t,e,n){var r=n("YESw");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this}},JTzB:function(t,e,n){var r=n("NykK"),a=n("ExA7");t.exports=function(t){return a(t)&&"[object Arguments]"==r(t)}},Juji:function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},KMkd:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},KfNM:function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},Kz5y:function(t,e,n){var r=n("WFqU"),a="object"==typeof self&&self&&self.Object===Object&&self,i=r||a||Function("return this")();t.exports=i},L8xA:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},LXxW:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,a=0,i=[];++n<r;){var o=t[n];e(o,n,t)&&(i[a++]=o)}return i}},MMmD:function(t,e,n){var r=n("lSCD"),a=n("shjB");t.exports=function(t){return null!=t&&a(t.length)&&!r(t)}},MvSz:function(t,e,n){var r=n("LXxW"),a=n("0ycA"),i=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return i.call(t,e)})))}:a;t.exports=s},NKxu:function(t,e,n){var r=n("lSCD"),a=n("E2jh"),i=n("GoyQ"),o=n("3Fdi"),s=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,l=u.toString,h=c.hasOwnProperty,d=RegExp("^"+l.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||a(t))&&(r(t)?d:s).test(o(t))}},Npjl:function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},NykK:function(t,e,n){var r=n("nmnc"),a=n("AP2z"),i=n("KfNM"),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?a(t):i(t)}},O0oS:function(t,e,n){var r=n("Cwc5"),a=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=a},O7RO:function(t,e,n){var r=n("CMye"),a=n("7GkX");t.exports=function(t){for(var e=a(t),n=e.length;n--;){var i=e[n],o=t[i];e[n]=[i,o,r(o)]}return e}},"Of+w":function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"WeakMap");t.exports=r},QVEU:function(t,e,n){var r=n("hypo"),a=n("UMY1")((function(t,e,n){r(t,n,e)}));t.exports=a},QkVE:function(t,e,n){var r=n("EpBk");t.exports=function(t,e){var n=t.__data__;return r(e)?n["string"==typeof e?"string":"hash"]:n.map}},QoRX:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},QqLw:function(t,e,n){var r=n("tadb"),a=n("ebwN"),i=n("HOxn"),o=n("yGk4"),s=n("Of+w"),u=n("NykK"),c=n("3Fdi"),l=c(r),h=c(a),d=c(i),f=c(o),p=c(s),m=u;(r&&"[object DataView]"!=m(new r(new ArrayBuffer(1)))||a&&"[object Map]"!=m(new a)||i&&"[object Promise]"!=m(i.resolve())||o&&"[object Set]"!=m(new o)||s&&"[object WeakMap]"!=m(new s))&&(m=function(t){var e=u(t),n="[object Object]"==e?t.constructor:void 0,r=n?c(n):"";if(r)switch(r){case l:return"[object DataView]";case h:return"[object Map]";case d:return"[object Promise]";case f:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=m},SKAX:function(t,e,n){var r=n("JC6p"),a=n("lQqw")(r);t.exports=a},SfRM:function(t,e,n){var r=n("YESw");t.exports=function(){this.__data__=r?r(null):{},this.size=0}},UDbo:function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"Chart",{enumerable:!0,get:function(){return i.default}}),e.defaults=e.Scatter=e.Bubble=e.Polar=e.Radar=e.HorizontalBar=e.Bar=e.Line=e.Pie=e.Doughnut=e.default=void 0;var r=u(n("q1tI")),a=u(n("17x9")),i=u(n("MO+k")),o=u(n("Y+p1")),s=u(n("QVEU"));function u(t){return t&&t.__esModule?t:{default:t}}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function f(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?d(Object(n),!0).forEach((function(e){O(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function y(t,e,n){return e&&m(t.prototype,e),n&&m(t,n),t}function g(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_(t,e)}function _(t,e){return(_=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function v(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=k(t);if(e){var a=k(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return b(this,n)}}function b(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?w(t):e}function w(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function k(t){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function O(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var x=void 0!==t&&{}&&"production",D=function(t){g(n,t);var e=v(n);function n(){var t;return p(this,n),O(w(t=e.call(this)),"handleOnClick",(function(e){var n=t.chartInstance,r=t.props,a=r.getDatasetAtEvent,i=r.getElementAtEvent,o=r.getElementsAtEvent,s=r.onElementsClick;a&&a(n.getDatasetAtEvent(e),e),i&&i(n.getElementAtEvent(e),e),o&&o(n.getElementsAtEvent(e),e),s&&s(n.getElementsAtEvent(e),e)})),O(w(t),"ref",(function(e){t.element=e})),t.chartInstance=void 0,t}return y(n,[{key:"componentDidMount",value:function(){this.renderChart()}},{key:"componentDidUpdate",value:function(){if(this.props.redraw)return this.destroyChart(),void this.renderChart();this.updateChart()}},{key:"shouldComponentUpdate",value:function(t){var e=this.props,n=(e.redraw,e.type),r=e.options,a=e.plugins,i=e.legend,s=e.height,u=e.width;if(!0===t.redraw)return!0;if(s!==t.height||u!==t.width)return!0;if(n!==t.type)return!0;if(!(0,o.default)(i,t.legend))return!0;if(!(0,o.default)(r,t.options))return!0;var c=this.transformDataProp(t);return!(0,o.default)(this.shadowDataProp,c)||!(0,o.default)(a,t.plugins)}},{key:"componentWillUnmount",value:function(){this.destroyChart()}},{key:"transformDataProp",value:function(t){var e=t.data;return"function"==typeof e?e(this.element):e}},{key:"memoizeDataProps",value:function(){if(this.props.data){var t=this.transformDataProp(this.props);return this.shadowDataProp=f(f({},t),{},{datasets:t.datasets&&t.datasets.map((function(t){return f({},t)}))}),this.saveCurrentDatasets(),t}}},{key:"checkDatasets",value:function(t){var e="production"!==x&&"prod"!==x,r=this.props.datasetKeyProvider!==n.getLabelAsKey,a=t.length>1;if(e&&a&&!r){var i=!1;t.forEach((function(t){t.label||(i=!0)})),i&&console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the "label" property on each dataset is used. Alternatively, you may provide a "datasetKeyProvider" as a prop that returns a unique key.')}}},{key:"getCurrentDatasets",value:function(){return this.chartInstance&&this.chartInstance.config.data&&this.chartInstance.config.data.datasets||[]}},{key:"saveCurrentDatasets",value:function(){var t=this;this.datasets=this.datasets||{},this.getCurrentDatasets().forEach((function(e){t.datasets[t.props.datasetKeyProvider(e)]=e}))}},{key:"updateChart",value:function(){var t=this,e=this.props.options,n=this.memoizeDataProps(this.props);if(this.chartInstance){e&&(this.chartInstance.options=i.default.helpers.configMerge(this.chartInstance.options,e));var r=this.getCurrentDatasets(),a=n.datasets||[];this.checkDatasets(r);var o=(0,s.default)(r,this.props.datasetKeyProvider);this.chartInstance.config.data.datasets=a.map((function(e){var n=o[t.props.datasetKeyProvider(e)];if(n&&n.type===e.type&&e.data){n.data.splice(e.data.length),e.data.forEach((function(t,r){n.data[r]=e.data[r]}));e.data;var r=h(e,["data"]);return f(f({},n),r)}return e}));n.datasets;var u=h(n,["datasets"]);this.chartInstance.config.data=f(f({},this.chartInstance.config.data),u),this.chartInstance.update()}}},{key:"renderChart",value:function(){var t=this.props,e=t.options,r=t.legend,a=t.type,s=t.plugins,u=this.element,c=this.memoizeDataProps();void 0===r||(0,o.default)(n.defaultProps.legend,r)||(e.legend=r),this.chartInstance=new i.default(u,{type:a,data:c,options:e,plugins:s})}},{key:"destroyChart",value:function(){if(this.chartInstance){this.saveCurrentDatasets();var t=Object.values(this.datasets);this.chartInstance.config.data.datasets=t,this.chartInstance.destroy()}}},{key:"render",value:function(){var t=this.props,e=t.height,n=t.width,a=t.id;return r.default.createElement("canvas",{ref:this.ref,height:e,width:n,id:a,onClick:this.handleOnClick})}}]),n}(r.default.Component);O(D,"getLabelAsKey",(function(t){return t.label})),O(D,"propTypes",{data:a.default.oneOfType([a.default.object,a.default.func]).isRequired,getDatasetAtEvent:a.default.func,getElementAtEvent:a.default.func,getElementsAtEvent:a.default.func,height:a.default.number,legend:a.default.object,onElementsClick:a.default.func,options:a.default.object,plugins:a.default.arrayOf(a.default.object),redraw:a.default.bool,type:function(t,e,n){if(!i.default.controllers[t[e]])return new Error("Invalid chart type `"+t[e]+"` supplied to `"+n+"`.")},width:a.default.number,datasetKeyProvider:a.default.func}),O(D,"defaultProps",{legend:{display:!0,position:"bottom"},type:"doughnut",height:150,width:300,redraw:!1,options:{},datasetKeyProvider:D.getLabelAsKey});var S=D;e.default=S;var M=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"doughnut"}))}}]),n}(r.default.Component);e.Doughnut=M;var j=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"pie"}))}}]),n}(r.default.Component);e.Pie=j;var Y=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"line"}))}}]),n}(r.default.Component);e.Line=Y;var C=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bar"}))}}]),n}(r.default.Component);e.Bar=C;var T=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"horizontalBar"}))}}]),n}(r.default.Component);e.HorizontalBar=T;var A=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"radar"}))}}]),n}(r.default.Component);e.Radar=A;var N=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"polarArea"}))}}]),n}(r.default.Component);e.Polar=N;var P=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bubble"}))}}]),n}(r.default.Component);e.Bubble=P;var E=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"scatter"}))}}]),n}(r.default.Component);e.Scatter=E;var R=i.default.defaults;e.defaults=R}).call(this,n("8oxB"))},UMY1:function(t,e,n){var r=n("oMRN"),a=n("JD84"),i=n("ut/Y"),o=n("Z0cm");t.exports=function(t,e){return function(n,s){var u=o(n)?r:a,c=e?e():{};return u(n,t,i(s,2),c)}}},"UNi/":function(t,e){t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},V6Ve:function(t,e,n){var r=n("kekF")(Object.keys,Object);t.exports=r},VaNO:function(t,e){t.exports=function(t){return this.__data__.has(t)}},WFqU:function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n("yLpj"))},Xi7e:function(t,e,n){var r=n("KMkd"),a=n("adU4"),i=n("tMB7"),o=n("+6XX"),s=n("Z8oC");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=o,u.prototype.set=s,t.exports=u},"Y+p1":function(t,e,n){var r=n("wF/u");t.exports=function(t,e){return r(t,e)}},YESw:function(t,e,n){var r=n("Cwc5")(Object,"create");t.exports=r},YuTi:function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},Z0cm:function(t,e){var n=Array.isArray;t.exports=n},Z8oC:function(t,e,n){var r=n("y1pI");t.exports=function(t,e){var n=this.__data__,a=r(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this}},ZCpW:function(t,e,n){var r=n("lm/5"),a=n("O7RO"),i=n("IOzZ");t.exports=function(t){var e=a(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},ZWtO:function(t,e,n){var r=n("4uTw"),a=n("9Nap");t.exports=function(t,e){for(var n=0,i=(e=r(e,t)).length;null!=t&&n<i;)t=t[a(e[n++])];return n&&n==i?t:void 0}},adU4:function(t,e,n){var r=n("y1pI"),a=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():a.call(e,n,1),--this.size,!0)}},b80T:function(t,e,n){var r=n("UNi/"),a=n("03A+"),i=n("Z0cm"),o=n("DSRE"),s=n("wJg7"),u=n("c6wG"),c=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=i(t),l=!n&&a(t),h=!n&&!l&&o(t),d=!n&&!l&&!h&&u(t),f=n||l||h||d,p=f?r(t.length,String):[],m=p.length;for(var y in t)!e&&!c.call(t,y)||f&&("length"==y||h&&("offset"==y||"parent"==y)||d&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||s(y,m))||p.push(y);return p}},c6wG:function(t,e,n){var r=n("dD9F"),a=n("sEf8"),i=n("mdPL"),o=i&&i.isTypedArray,s=o?a(o):r;t.exports=s},"cq/+":function(t,e,n){var r=n("mc0g")();t.exports=r},dD9F:function(t,e,n){var r=n("NykK"),a=n("shjB"),i=n("ExA7"),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&a(t.length)&&!!o[r(t)]}},dt0z:function(t,e,n){var r=n("zoYe");t.exports=function(t){return null==t?"":r(t)}},e4Nc:function(t,e,n){var r=n("fGT3"),a=n("k+1r"),i=n("JHgL"),o=n("pSRY"),s=n("H8j4");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=o,u.prototype.set=s,t.exports=u},e5cp:function(t,e,n){var r=n("fmRc"),a=n("or5M"),i=n("HDyB"),o=n("seXi"),s=n("QqLw"),u=n("Z0cm"),c=n("DSRE"),l=n("c6wG"),h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,f,p,m){var y=u(t),g=u(e),_=y?"[object Array]":s(t),v=g?"[object Array]":s(e),b=(_="[object Arguments]"==_?h:_)==h,w=(v="[object Arguments]"==v?h:v)==h,k=_==v;if(k&&c(t)){if(!c(e))return!1;y=!0,b=!1}if(k&&!b)return m||(m=new r),y||l(t)?a(t,e,n,f,p,m):i(t,e,_,n,f,p,m);if(!(1&n)){var O=b&&d.call(t,"__wrapped__"),x=w&&d.call(e,"__wrapped__");if(O||x){var D=O?t.value():t,S=x?e.value():e;return m||(m=new r),p(D,S,n,f,m)}}return!!k&&(m||(m=new r),o(t,e,n,f,p,m))}},eUgh:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,a=Array(r);++n<r;)a[n]=e(t[n],n,t);return a}},ebwN:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Map");t.exports=r},ekgI:function(t,e,n){var r=n("YESw"),a=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:a.call(e,t)}},fGT3:function(t,e,n){var r=n("4kuk"),a=n("Xi7e"),i=n("ebwN");t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||a),string:new r}}},"fR/l":function(t,e,n){var r=n("CH3K"),a=n("Z0cm");t.exports=function(t,e,n){var i=e(t);return a(t)?i:r(i,n(t))}},fmRc:function(t,e,n){var r=n("Xi7e"),a=n("77Zs"),i=n("L8xA"),o=n("gCq4"),s=n("VaNO"),u=n("0Cz8");function c(t){var e=this.__data__=new r(t);this.size=e.size}c.prototype.clear=a,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=s,c.prototype.set=u,t.exports=c},ftKO:function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},gCq4:function(t,e){t.exports=function(t){return this.__data__.get(t)}},hgQt:function(t,e,n){var r=n("Juji"),a=n("4sDh");t.exports=function(t,e){return null!=t&&a(t,e,r)}},hypo:function(t,e,n){var r=n("O0oS");t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},"k+1r":function(t,e,n){var r=n("QkVE");t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},kekF:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},lQqw:function(t,e,n){var r=n("MMmD");t.exports=function(t,e){return function(n,a){if(null==n)return n;if(!r(n))return t(n,a);for(var i=n.length,o=e?i:-1,s=Object(n);(e?o--:++o<i)&&!1!==a(s[o],o,s););return n}}},lSCD:function(t,e,n){var r=n("NykK"),a=n("GoyQ");t.exports=function(t){if(!a(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},ljhN:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},"lm/5":function(t,e,n){var r=n("fmRc"),a=n("wF/u");t.exports=function(t,e,n,i){var o=n.length,s=o,u=!i;if(null==t)return!s;for(t=Object(t);o--;){var c=n[o];if(u&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++o<s;){var l=(c=n[o])[0],h=t[l],d=c[1];if(u&&c[2]){if(void 0===h&&!(l in t))return!1}else{var f=new r;if(i)var p=i(h,d,l,t,e,f);if(!(void 0===p?a(d,h,3,i,f):p))return!1}}return!0}},mc0g:function(t,e){t.exports=function(t){return function(e,n,r){for(var a=-1,i=Object(e),o=r(e),s=o.length;s--;){var u=o[t?s:++a];if(!1===n(i[u],u,i))break}return e}}},mdPL:function(t,e,n){(function(t){var r=n("WFqU"),a=e&&!e.nodeType&&e,i=a&&"object"==typeof t&&t&&!t.nodeType&&t,o=i&&i.exports===a&&r.process,s=function(){try{var t=i&&i.require&&i.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}();t.exports=s}).call(this,n("YuTi")(t))},mwIZ:function(t,e,n){var r=n("ZWtO");t.exports=function(t,e,n){var a=null==t?void 0:r(t,e);return void 0===a?n:a}},nmnc:function(t,e,n){var r=n("Kz5y").Symbol;t.exports=r},oMRN:function(t,e){t.exports=function(t,e,n,r){for(var a=-1,i=null==t?0:t.length;++a<i;){var o=t[a];e(r,o,n(o),t)}return r}},or5M:function(t,e,n){var r=n("1hJj"),a=n("QoRX"),i=n("xYSL");t.exports=function(t,e,n,o,s,u){var c=1&n,l=t.length,h=e.length;if(l!=h&&!(c&&h>l))return!1;var d=u.get(t),f=u.get(e);if(d&&f)return d==e&&f==t;var p=-1,m=!0,y=2&n?new r:void 0;for(u.set(t,e),u.set(e,t);++p<l;){var g=t[p],_=e[p];if(o)var v=c?o(_,g,p,e,t,u):o(g,_,p,t,e,u);if(void 0!==v){if(v)continue;m=!1;break}if(y){if(!a(e,(function(t,e){if(!i(y,e)&&(g===t||s(g,t,n,o,u)))return y.push(e)}))){m=!1;break}}else if(g!==_&&!s(g,_,n,o,u)){m=!1;break}}return u.delete(t),u.delete(e),m}},oweT:function(t,e,n){"use strict";n.r(e);var r=n("dI71"),a=n("Bl7J"),i=n("2A+t"),o=n("MXbp"),s=n("q1tI"),u=n("UDbo"),c=n("qKvR"),l=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).state={lineChartData:e.props.lineChartData},e}return Object(r.a)(e,t),e.prototype.render=function(){return Object(c.c)("div",null,Object(c.c)(u.Line,{data:this.state.lineChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{labels:{fontColor:"white"},display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},e}(s.Component);l.defaultProps={displayLegend:!0,legendPosition:"bottom"};var h=l,d=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartData:e.props.barChartData},e}return Object(r.a)(e,t),e.prototype.render=function(){return Object(c.c)("div",null,Object(c.c)(u.Bar,{data:this.state.barChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white"},gridLines:{color:"white"},scaleLabel:{display:!1,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:4,padding:2,beginAtZero:!0},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},e}(s.Component);d.defaultProps={displayLegend:!1,legendPosition:"bottom"};var f=d,p=function(t){var e=t.children,n=t.primary,r=t.graphData,a=t.heading,o=t.chartType,s=t.xAxis,u=t.yAxis;return"line"===o?Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1.5rem 0.5rem 1.5rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(h,{lineChartData:r,legendPosition:"bottom",xAxis:s,yAxis:u}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"0.35rem solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e)):Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1rem 0.5rem 1rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(f,{barChartData:r,yAxis:u}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"0.35rem solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e))},m=function(t){var e=t.children,n=t.source,r=t.link;return Object(i.c)("blockquote",{sx:{display:["block","block","block","grid"],gridGap:"0.5rem",gridTemplateColumns:"repeat(1, 1fr)",gridTemplateRows:"5rem 1.5rem 1.5rem",color:"#0b4237",boxSizing:"border-box",marginBottom:"2rem"}},Object(i.c)("p",{sx:{fontFamily:"'Gelasio', serif",fontStyle:"italic",fontSize:"1.3rem",lineHeight:"1.5rem"}},e),Object(i.c)("cite",{sx:{display:"flex",justifyContent:"flex-start"}},Object(i.c)("a",{sx:{color:"black",textDecoration:"none","&:hover":{color:"#0b4237",textDecoration:"none",fontWeight:"bold"}},href:r,rel:"noopener noreferrer",target:"_blank"},n," ",Object(i.c)("i",{className:"fas fa-external-link-alt fa-xs"}))))},y=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartJDK8Startup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.58,1],backgroundColor:["#5DA7A3","#E58B23"]}]},barChartJDK8Footprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.34,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK8FasterRampupInTheCloud:{labels:[0,150,300,450,600,750,900,1050,1200,1350],datasets:[{label:"OpenJ9",data:[8.5,1064,1063,1133,1188.5,1071,1125.5,1084.5,1095,1104.5],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[10.5,529.5,700.5,832.5,796,829.5,698.5,791.5,1017,1175.5],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},lineChartJK8FootprintDuringLoad:{labels:[0,200,400,600,800,1e3,1200,1400,1600,1800],datasets:[{label:"OpenJ9",data:[232,488,505,511,516,517,520,521,521,522],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[563,902,1023,1140,1200,1218,1220,1289,1359,1368],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJDK11Startup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.49,1],backgroundColor:["#5DA7A3","#E58B23"]}]},barChartJDK11Footprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.5,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK11FasterRampupInTheCloud:{labels:[0,25,50,75,100,125,150,175,200,225,250,275,300],datasets:[{label:"OpenJ9",data:[606,2483,2621,2805,2853,2924,3049,3103,3122,3043,3069,3092,3167],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[139,1208,1620,1952,2157,2551,2696,2879,3264,3337,3392,3436,3479],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},lineChartJK11FootprintDuringLoad:{labels:[0,100,200,300,400,500,600],datasets:[{label:"OpenJ9",data:[267,630,674,680,688,688,691],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[500,786,945,975,985,1001,1011],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJDK11QuarkusStartup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.34,1],backgroundColor:["#5DA7A3","#E58B23"]}]},barChartJDK11QuarkusFootprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.82,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK11QuarkusFasterRampupInTheCloud:{labels:[0,10,20,30,40,50,60,70,80,90,100,110,120],datasets:[{label:"OpenJ9",data:[2,4233,4311,4307,4312,4347,4432,4468,4564,4601,4627,4606,4657],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[1,1426,1959,3603,5545,5609,5616,5601,5583,5619,5560,5354,5639],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJK11QuarkusFootprintDuringLoad:{labels:["OpenJ9","HotSpot"],datasets:[{data:[147,178],backgroundColor:["#5DA7A3","#E58B23"]}]}},e}return Object(r.a)(e,t),e.prototype.render=function(){return Object(i.c)(a.a,{isHome:!1,title:"Eclipse OpenJ9 performance",description:"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot."},Object(i.c)("section",{sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"4rem",paddingBottom:"0.1rem"}},Object(i.c)(o.b.h1,{sx:{marginBottom:"1rem"}},"Performance Overview"),Object(i.c)(o.b.p,null,"Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads. We regularly test and optimize OpenJ9 performance when running the most popular Java frameworks such as Open Liberty, Quarkus, SpringBoot, and Micronaut. We're proud of our results.")),Object(i.c)("section",{id:"openjdk11",sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"0.1rem",paddingBottom:"4rem"}},Object(i.c)(o.b.h2,null,"OpenJDK 11 performance with Eclipse OpenJ9"),Object(i.c)(o.b.p,{sx:{marginBottom:"0.5rem"}},"OpenJDK 11 with OpenJ9 significantly outperforms HotSpot on Liberty startup, ramp up, and footprint."),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(p,{graphData:this.state.barChartJDK11Startup,heading:"51% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative startup time"},Object(i.c)("p",null,"By using shared classes cache and AOT technology, OpenJ9 starts in roughly half the time it takes HotSpot.")),Object(i.c)(p,{graphData:this.state.barChartJDK11Footprint,heading:"50% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"After startup, the OpenJ9 footprint is half the size of HotSpot, which makes it ideal for cloud workloads.")),Object(i.c)(p,{graphData:this.state.lineChartJK11FasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput (pages/s)"},Object(i.c)("p",null,"OpenJ9 reaches peak throughput much faster than HotSpot making it especially suitable for running short-lived applications.")),Object(i.c)(p,{graphData:this.state.lineChartJK11FootprintDuringLoad,heading:"33% smaller footprint during load",primary:!0,chartType:"line",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"Consistent with the footprint results after startup, the OpenJ9 footprint remains much smaller than HotSpot when load is applied."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"7rem"},href:"https://github.com/eclipse/openj9-website/blob/master/benchmark/openjdk11-daytrader7.md",rel:"noopener noreferrer",target:"_blank"},"Show me performance details")),Object(i.c)("div",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],paddingTop:"4rem"}},Object(i.c)(m,{source:"Open Liberty blog",link:"https://openliberty.io/blog/2019/10/30/faster-startup-open-liberty.html"},"With version 19.0.0.9 of Open Liberty and OpenJ9, Open Liberty managed to cut the startup time to their goal of almost exactly one second."),Object(i.c)(m,{source:"Payara Enterprise",link:"https://blog.payara.fish/faster-payara-micro-startup-times-with-openj9"},"Payara found that with datagrid enabled, Payara Micro with class data sharing, booted in about 6 seconds, improving startup time by almost 40%."))),Object(i.c)("section",{id:"openjdk11quarkus",sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"0.1rem",paddingBottom:"4rem"}},Object(i.c)(o.b.h2,null,"OpenJDK 11 performance with Quarkus and Eclipse OpenJ9"),Object(i.c)(o.b.p,{sx:{marginBottom:"0.5rem"}},"Using Quarkus with OpenJ9 instead of HotSpot makes Java even more supersonic and subatomic!"),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(p,{graphData:this.state.barChartJDK11QuarkusStartup,heading:"66% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative startup time"},Object(i.c)("p",null,"Quarkus might be supersonic, but running it with OpenJ9 instead of HotSpot reduces startup time by a further 66%.")),Object(i.c)(p,{graphData:this.state.barChartJDK11QuarkusFootprint,heading:"18% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"The ultra-supersonic startup time comes at some tradeoff to footprint, but OpenJ9 still has an edge over HotSpot.")),Object(i.c)(p,{graphData:this.state.lineChartJK11QuarkusFasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput (pages/s)"},Object(i.c)("p",null,"For short-lived cloud workloads running on Quarkus, OpenJ9 delivers excellent ramp-up performance compared to HotSpot.")),Object(i.c)(p,{graphData:this.state.barChartJK11QuarkusFootprintDuringLoad,heading:"18% smaller footprint during load",primary:!0,chartType:"bar",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"When ramp-up completes, as well as getting there faster, OpenJ9 still retains a smaller footprint than HotSpot."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"7rem"},href:"https://github.com/eclipse/openj9-website/blob/master/benchmark/quarkus.md",rel:"noopener noreferrer",target:"_blank"},"Show me performance details")),Object(i.c)("div",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],paddingTop:"4rem"}},Object(i.c)(m,{source:"Trendyol Tech blog",link:"https://medium.com/trendyol-tech/how-trendyol-jvm-applications-consume-less-memory-in-the-production-environment-87e419dd18a0"},"Trendyol Tech found 40% faster startup time and 73 MB less memory footprint when they ran Undertow + Rest + Couchbase Client with OpenJ9."),Object(i.c)(m,{source:"Graeme Rocher, Micronaut",link:"https://twitter.com/graemerocher/status/1090204088065802240?lang=en"},"As reported on twitter, Micronautfw startup with OpenJ9 is as fast as Node.js."))),Object(i.c)("section",{id:"openjdk8",sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"0.1rem",paddingBottom:"4rem"}},Object(i.c)(o.b.h2,null,"OpenJDK 8 performance with Eclipse OpenJ9"),Object(i.c)(o.b.p,{sx:{marginBottom:"0.5rem"}},"Testing shows similar results for OpenJDK 8; OpenJ9 demonstrates significantly better performance than OpenJDK 8 with HotSpot"),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(p,{graphData:this.state.barChartJDK8Startup,heading:"42% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative startup time"},Object(i.c)("p",null,"Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.")),Object(i.c)(p,{graphData:this.state.barChartJDK8Footprint,heading:"66% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.")),Object(i.c)(p,{graphData:this.state.lineChartJK8FasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput (pages/s)"},Object(i.c)("p",null,"OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud.")),Object(i.c)(p,{graphData:this.state.lineChartJK8FootprintDuringLoad,heading:"63% smaller footprint during load",primary:!0,chartType:"line",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"7rem"},href:"https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md",rel:"noopener noreferrer",target:"_blank"},"Show me performance details")),Object(i.c)("div",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],paddingTop:"4rem"}},Object(i.c)(m,{source:"Eclipse Vert.x how-to guide",link:"https://how-to.vertx.io/openj9-howto/"},"Vert.x found that OpenJ9 was very efficient with respect to memory consumption, without compromising the latency."),Object(i.c)(m,{source:"AMIS technology blog",link:"https://technology.amis.nl/2019/09/03/microservice-framework-startup-time-on-different-jvms-aot-and-jit/"},"As reported on the Amis technology blog, when testing a number of JVMs, OpenJDK with OpenJ9 was the fastest to start for every framework."))))},e}(s.Component);e.default=y},pSRY:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).has(t)}},qZTm:function(t,e,n){var r=n("fR/l"),a=n("MvSz"),i=n("7GkX");t.exports=function(t){return r(t,i,a)}},rEGp:function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},sEf8:function(t,e){t.exports=function(t){return function(e){return t(e)}}},seXi:function(t,e,n){var r=n("qZTm"),a=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,i,o,s){var u=1&n,c=r(t),l=c.length;if(l!=r(e).length&&!u)return!1;for(var h=l;h--;){var d=c[h];if(!(u?d in e:a.call(e,d)))return!1}var f=s.get(t),p=s.get(e);if(f&&p)return f==e&&p==t;var m=!0;s.set(t,e),s.set(e,t);for(var y=u;++h<l;){var g=t[d=c[h]],_=e[d];if(i)var v=u?i(_,g,d,e,t,s):i(g,_,d,t,e,s);if(!(void 0===v?g===_||o(g,_,n,i,s):v)){m=!1;break}y||(y="constructor"==d)}if(m&&!y){var b=t.constructor,w=e.constructor;b==w||!("constructor"in t)||!("constructor"in e)||"function"==typeof b&&b instanceof b&&"function"==typeof w&&w instanceof w||(m=!1)}return s.delete(t),s.delete(e),m}},shjB:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},tMB7:function(t,e,n){var r=n("y1pI");t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},tadb:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"DataView");t.exports=r},u8Dt:function(t,e,n){var r=n("YESw"),a=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(e,t)?e[t]:void 0}},"ut/Y":function(t,e,n){var r=n("ZCpW"),a=n("GDhZ"),i=n("zZ0H"),o=n("Z0cm"),s=n("+c4W");t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?o(t)?a(t[0],t[1]):r(t):s(t)}},"wF/u":function(t,e,n){var r=n("e5cp"),a=n("ExA7");t.exports=function t(e,n,i,o,s){return e===n||(null==e||null==n||!a(e)&&!a(n)?e!=e&&n!=n:r(e,n,i,o,t,s))}},wJg7:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&n.test(t))&&t>-1&&t%1==0&&t<e}},"wd/R":function(t,e,n){(function(t){t.exports=function(){"use strict";var e,n;function r(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function i(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function s(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(o(t,e))return!1;return!0}function u(t){return void 0===t}function c(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var n,r=[];for(n=0;n<t.length;++n)r.push(e(t[n],n));return r}function d(t,e){for(var n in e)o(e,n)&&(t[n]=e[n]);return o(e,"toString")&&(t.toString=e.toString),o(e,"valueOf")&&(t.valueOf=e.valueOf),t}function f(t,e,n,r){return xe(t,e,n,r,!0).utc()}function p(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function m(t){if(null==t._isValid){var e=p(t),r=n.call(e.parsedDateParts,(function(t){return null!=t})),a=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidEra&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&r);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function y(t){var e=f(NaN);return null!=t?d(p(e),t):p(e).userInvalidated=!0,e}n=Array.prototype.some?Array.prototype.some:function(t){var e,n=Object(this),r=n.length>>>0;for(e=0;e<r;e++)if(e in n&&t.call(this,n[e],e,n))return!0;return!1};var g=r.momentProperties=[],_=!1;function v(t,e){var n,r,a;if(u(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),u(e._i)||(t._i=e._i),u(e._f)||(t._f=e._f),u(e._l)||(t._l=e._l),u(e._strict)||(t._strict=e._strict),u(e._tzm)||(t._tzm=e._tzm),u(e._isUTC)||(t._isUTC=e._isUTC),u(e._offset)||(t._offset=e._offset),u(e._pf)||(t._pf=p(e)),u(e._locale)||(t._locale=e._locale),g.length>0)for(n=0;n<g.length;n++)u(a=e[r=g[n]])||(t[r]=a);return t}function b(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===_&&(_=!0,r.updateOffset(this),_=!1)}function w(t){return t instanceof b||null!=t&&null!=t._isAMomentObject}function k(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function O(t,e){var n=!0;return d((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){var a,i,s,u=[];for(i=0;i<arguments.length;i++){if(a="","object"==typeof arguments[i]){for(s in a+="\n["+i+"] ",arguments[0])o(arguments[0],s)&&(a+=s+": "+arguments[0][s]+", ");a=a.slice(0,-2)}else a=arguments[i];u.push(a)}k(t+"\nArguments: "+Array.prototype.slice.call(u).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var x,D={};function S(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),D[t]||(k(e),D[t]=!0)}function M(t){return"undefined"!=typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function j(t,e){var n,r=d({},t);for(n in e)o(e,n)&&(i(t[n])&&i(e[n])?(r[n]={},d(r[n],t[n]),d(r[n],e[n])):null!=e[n]?r[n]=e[n]:delete r[n]);for(n in t)o(t,n)&&!o(e,n)&&i(t[n])&&(r[n]=d({},r[n]));return r}function Y(t){null!=t&&this.set(t)}function C(t,e,n){var r=""+Math.abs(t),a=e-r.length;return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,x=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)o(t,e)&&n.push(e);return n};var T=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,A=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,N={},P={};function E(t,e,n,r){var a=r;"string"==typeof r&&(a=function(){return this[r]()}),t&&(P[t]=a),e&&(P[e[0]]=function(){return C(a.apply(this,arguments),e[1],e[2])}),n&&(P[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function R(t,e){return t.isValid()?(e=F(e,t.localeData()),N[e]=N[e]||function(t){var e,n,r,a=t.match(T);for(e=0,n=a.length;e<n;e++)P[a[e]]?a[e]=P[a[e]]:a[e]=(r=a[e]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(e){var r,i="";for(r=0;r<n;r++)i+=M(a[r])?a[r].call(e,t):a[r];return i}}(e),N[e](t)):t.localeData().invalidDate()}function F(t,e){var n=5;function r(t){return e.longDateFormat(t)||t}for(A.lastIndex=0;n>=0&&A.test(t);)t=t.replace(A,r),A.lastIndex=0,n-=1;return t}var W={};function L(t,e){var n=t.toLowerCase();W[n]=W[n+"s"]=W[e]=t}function H(t){return"string"==typeof t?W[t]||W[t.toLowerCase()]:void 0}function I(t){var e,n,r={};for(n in t)o(t,n)&&(e=H(n))&&(r[e]=t[n]);return r}var U={};function J(t,e){U[t]=e}function z(t){return t%4==0&&t%100!=0||t%400==0}function G(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function V(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=G(e)),n}function B(t,e){return function(n){return null!=n?(Z(this,t,n),r.updateOffset(this,e),this):K(this,t)}}function K(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Z(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&z(t.year())&&1===t.month()&&29===t.date()?(n=V(n),t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),wt(n,t.month()))):t._d["set"+(t._isUTC?"UTC":"")+e](n))}var Q,q=/\d/,X=/\d\d/,$=/\d{3}/,tt=/\d{4}/,et=/[+-]?\d{6}/,nt=/\d\d?/,rt=/\d\d\d\d?/,at=/\d\d\d\d\d\d?/,it=/\d{1,3}/,ot=/\d{1,4}/,st=/[+-]?\d{1,6}/,ut=/\d+/,ct=/[+-]?\d+/,lt=/Z|[+-]\d\d:?\d\d/gi,ht=/Z|[+-]\d\d(?::?\d\d)?/gi,dt=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function ft(t,e,n){Q[t]=M(e)?e:function(t,r){return t&&n?n:e}}function pt(t,e){return o(Q,t)?Q[t](e._strict,e._locale):new RegExp(mt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,r,a){return e||n||r||a}))))}function mt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}Q={};var yt,gt={};function _t(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),c(e)&&(r=function(t,n){n[e]=V(t)}),n=0;n<t.length;n++)gt[t[n]]=r}function vt(t,e){_t(t,(function(t,n,r,a){r._w=r._w||{},e(t,r._w,r,a)}))}function bt(t,e,n){null!=e&&o(gt,t)&&gt[t](e,n._a,n,t)}function wt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n,r=(e%(n=12)+n)%n;return t+=(e-r)/12,1===r?z(t)?29:28:31-r%7%2}yt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},E("M",["MM",2],"Mo",(function(){return this.month()+1})),E("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),E("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),L("month","M"),J("month",8),ft("M",nt),ft("MM",nt,X),ft("MMM",(function(t,e){return e.monthsShortRegex(t)})),ft("MMMM",(function(t,e){return e.monthsRegex(t)})),_t(["M","MM"],(function(t,e){e[1]=V(t)-1})),_t(["MMM","MMMM"],(function(t,e,n,r){var a=n._locale.monthsParse(t,r,n._strict);null!=a?e[1]=a:p(n).invalidMonth=t}));var kt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ot="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),xt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Dt=dt,St=dt;function Mt(t,e,n){var r,a,i,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)i=f([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(a=yt.call(this._shortMonthsParse,o))?a:null:-1!==(a=yt.call(this._longMonthsParse,o))?a:null:"MMM"===e?-1!==(a=yt.call(this._shortMonthsParse,o))||-1!==(a=yt.call(this._longMonthsParse,o))?a:null:-1!==(a=yt.call(this._longMonthsParse,o))||-1!==(a=yt.call(this._shortMonthsParse,o))?a:null}function jt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=V(e);else if(!c(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),wt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Yt(t){return null!=t?(jt(this,t),r.updateOffset(this,!0),this):K(this,"Month")}function Ct(){function t(t,e){return e.length-t.length}var e,n,r=[],a=[],i=[];for(e=0;e<12;e++)n=f([2e3,e]),r.push(this.monthsShort(n,"")),a.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(r.sort(t),a.sort(t),i.sort(t),e=0;e<12;e++)r[e]=mt(r[e]),a[e]=mt(a[e]);for(e=0;e<24;e++)i[e]=mt(i[e]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Tt(t){return z(t)?366:365}E("Y",0,0,(function(){var t=this.year();return t<=9999?C(t,4):"+"+t})),E(0,["YY",2],0,(function(){return this.year()%100})),E(0,["YYYY",4],0,"year"),E(0,["YYYYY",5],0,"year"),E(0,["YYYYYY",6,!0],0,"year"),L("year","y"),J("year",1),ft("Y",ct),ft("YY",nt,X),ft("YYYY",ot,tt),ft("YYYYY",st,et),ft("YYYYYY",st,et),_t(["YYYYY","YYYYYY"],0),_t("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):V(t)})),_t("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),_t("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return V(t)+(V(t)>68?1900:2e3)};var At=B("FullYear",!0);function Nt(t,e,n,r,a,i,o){var s;return t<100&&t>=0?(s=new Date(t+400,e,n,r,a,i,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,a,i,o),s}function Pt(t){var e,n;return t<100&&t>=0?((n=Array.prototype.slice.call(arguments))[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)):e=new Date(Date.UTC.apply(null,arguments)),e}function Et(t,e,n){var r=7+e-n;return-(7+Pt(t,0,r).getUTCDay()-e)%7+r-1}function Rt(t,e,n,r,a){var i,o,s=1+7*(e-1)+(7+n-r)%7+Et(t,r,a);return s<=0?o=Tt(i=t-1)+s:s>Tt(t)?(i=t+1,o=s-Tt(t)):(i=t,o=s),{year:i,dayOfYear:o}}function Ft(t,e,n){var r,a,i=Et(t.year(),e,n),o=Math.floor((t.dayOfYear()-i-1)/7)+1;return o<1?r=o+Wt(a=t.year()-1,e,n):o>Wt(t.year(),e,n)?(r=o-Wt(t.year(),e,n),a=t.year()+1):(a=t.year(),r=o),{week:r,year:a}}function Wt(t,e,n){var r=Et(t,e,n),a=Et(t+1,e,n);return(Tt(t)-r+a)/7}function Lt(t,e){return t.slice(e,7).concat(t.slice(0,e))}E("w",["ww",2],"wo","week"),E("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),J("week",5),J("isoWeek",5),ft("w",nt),ft("ww",nt,X),ft("W",nt),ft("WW",nt,X),vt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=V(t)})),E("d",0,"do","day"),E("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),E("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),E("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),E("e",0,0,"weekday"),E("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),J("day",11),J("weekday",11),J("isoWeekday",11),ft("d",nt),ft("e",nt),ft("E",nt),ft("dd",(function(t,e){return e.weekdaysMinRegex(t)})),ft("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),ft("dddd",(function(t,e){return e.weekdaysRegex(t)})),vt(["dd","ddd","dddd"],(function(t,e,n,r){var a=n._locale.weekdaysParse(t,r,n._strict);null!=a?e.d=a:p(n).invalidWeekday=t})),vt(["d","e","E"],(function(t,e,n,r){e[r]=V(t)}));var Ht="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),It="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ut="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Jt=dt,zt=dt,Gt=dt;function Vt(t,e,n){var r,a,i,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=f([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(a=yt.call(this._weekdaysParse,o))?a:null:"ddd"===e?-1!==(a=yt.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=yt.call(this._minWeekdaysParse,o))?a:null:"dddd"===e?-1!==(a=yt.call(this._weekdaysParse,o))||-1!==(a=yt.call(this._shortWeekdaysParse,o))||-1!==(a=yt.call(this._minWeekdaysParse,o))?a:null:"ddd"===e?-1!==(a=yt.call(this._shortWeekdaysParse,o))||-1!==(a=yt.call(this._weekdaysParse,o))||-1!==(a=yt.call(this._minWeekdaysParse,o))?a:null:-1!==(a=yt.call(this._minWeekdaysParse,o))||-1!==(a=yt.call(this._weekdaysParse,o))||-1!==(a=yt.call(this._shortWeekdaysParse,o))?a:null}function Bt(){function t(t,e){return e.length-t.length}var e,n,r,a,i,o=[],s=[],u=[],c=[];for(e=0;e<7;e++)n=f([2e3,1]).day(e),r=mt(this.weekdaysMin(n,"")),a=mt(this.weekdaysShort(n,"")),i=mt(this.weekdays(n,"")),o.push(r),s.push(a),u.push(i),c.push(r),c.push(a),c.push(i);o.sort(t),s.sort(t),u.sort(t),c.sort(t),this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Kt(){return this.hours()%12||12}function Zt(t,e){E(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Qt(t,e){return e._meridiemParse}E("H",["HH",2],0,"hour"),E("h",["hh",2],0,Kt),E("k",["kk",2],0,(function(){return this.hours()||24})),E("hmm",0,0,(function(){return""+Kt.apply(this)+C(this.minutes(),2)})),E("hmmss",0,0,(function(){return""+Kt.apply(this)+C(this.minutes(),2)+C(this.seconds(),2)})),E("Hmm",0,0,(function(){return""+this.hours()+C(this.minutes(),2)})),E("Hmmss",0,0,(function(){return""+this.hours()+C(this.minutes(),2)+C(this.seconds(),2)})),Zt("a",!0),Zt("A",!1),L("hour","h"),J("hour",13),ft("a",Qt),ft("A",Qt),ft("H",nt),ft("h",nt),ft("k",nt),ft("HH",nt,X),ft("hh",nt,X),ft("kk",nt,X),ft("hmm",rt),ft("hmmss",at),ft("Hmm",rt),ft("Hmmss",at),_t(["H","HH"],3),_t(["k","kk"],(function(t,e,n){var r=V(t);e[3]=24===r?0:r})),_t(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),_t(["h","hh"],(function(t,e,n){e[3]=V(t),p(n).bigHour=!0})),_t("hmm",(function(t,e,n){var r=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r)),p(n).bigHour=!0})),_t("hmmss",(function(t,e,n){var r=t.length-4,a=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r,2)),e[5]=V(t.substr(a)),p(n).bigHour=!0})),_t("Hmm",(function(t,e,n){var r=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r))})),_t("Hmmss",(function(t,e,n){var r=t.length-4,a=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r,2)),e[5]=V(t.substr(a))}));var qt,Xt=B("Hours",!0),$t={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:kt,monthsShort:Ot,week:{dow:0,doy:6},weekdays:Ht,weekdaysMin:Ut,weekdaysShort:It,meridiemParse:/[ap]\.?m?\.?/i},te={},ee={};function ne(t,e){var n,r=Math.min(t.length,e.length);for(n=0;n<r;n+=1)if(t[n]!==e[n])return n;return r}function re(t){return t?t.toLowerCase().replace("_","-"):t}function ae(e){var n=null;if(void 0===te[e]&&void 0!==t&&t&&t.exports)try{n=qt._abbr,function(){var t=new Error("Cannot find module 'undefined'");throw t.code="MODULE_NOT_FOUND",t}(),ie(n)}catch(r){te[e]=null}return te[e]}function ie(t,e){var n;return t&&((n=u(e)?se(t):oe(t,e))?qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),qt._abbr}function oe(t,e){if(null!==e){var n,r=$t;if(e.abbr=t,null!=te[t])S("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=te[t]._config;else if(null!=e.parentLocale)if(null!=te[e.parentLocale])r=te[e.parentLocale]._config;else{if(null==(n=ae(e.parentLocale)))return ee[e.parentLocale]||(ee[e.parentLocale]=[]),ee[e.parentLocale].push({name:t,config:e}),null;r=n._config}return te[t]=new Y(j(r,e)),ee[t]&&ee[t].forEach((function(t){oe(t.name,t.config)})),ie(t),te[t]}return delete te[t],null}function se(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return qt;if(!a(t)){if(e=ae(t))return e;t=[t]}return function(t){for(var e,n,r,a,i=0;i<t.length;){for(e=(a=re(t[i]).split("-")).length,n=(n=re(t[i+1]))?n.split("-"):null;e>0;){if(r=ae(a.slice(0,e).join("-")))return r;if(n&&n.length>=e&&ne(a,n)>=e-1)break;e--}i++}return qt}(t)}function ue(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>wt(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,p(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),p(t)._overflowWeeks&&-1===e&&(e=7),p(t)._overflowWeekday&&-1===e&&(e=8),p(t).overflow=e),t}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,le=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/Z|[+-]\d\d(?::?\d\d)?/,de=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],fe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pe=/^\/?Date\((-?\d+)/i,me=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ye={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ge(t){var e,n,r,a,i,o,s=t._i,u=ce.exec(s)||le.exec(s);if(u){for(p(t).iso=!0,e=0,n=de.length;e<n;e++)if(de[e][1].exec(u[1])){a=de[e][0],r=!1!==de[e][2];break}if(null==a)return void(t._isValid=!1);if(u[3]){for(e=0,n=fe.length;e<n;e++)if(fe[e][1].exec(u[3])){i=(u[2]||" ")+fe[e][0];break}if(null==i)return void(t._isValid=!1)}if(!r&&null!=i)return void(t._isValid=!1);if(u[4]){if(!he.exec(u[4]))return void(t._isValid=!1);o="Z"}t._f=a+(i||"")+(o||""),ke(t)}else t._isValid=!1}function _e(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}function ve(t){var e,n,r,a,i,o,s,u,c=me.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(c){if(n=c[4],r=c[3],a=c[2],i=c[5],o=c[6],s=c[7],u=[_e(n),Ot.indexOf(r),parseInt(a,10),parseInt(i,10),parseInt(o,10)],s&&u.push(parseInt(s,10)),e=u,!function(t,e,n){return!t||It.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(p(n).weekdayMismatch=!0,n._isValid=!1,!1)}(c[1],e,t))return;t._a=e,t._tzm=function(t,e,n){if(t)return ye[t];if(e)return 0;var r=parseInt(n,10),a=r%100;return(r-a)/100*60+a}(c[8],c[9],c[10]),t._d=Pt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),p(t).rfc2822=!0}else t._isValid=!1}function be(t,e,n){return null!=t?t:null!=e?e:n}function we(t){var e,n,a,i,o,s=[];if(!t._d){for(a=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,r,a,i,o,s,u,c;null!=(e=t._w).GG||null!=e.W||null!=e.E?(i=1,o=4,n=be(e.GG,t._a[0],Ft(De(),1,4).year),r=be(e.W,1),((a=be(e.E,1))<1||a>7)&&(u=!0)):(i=t._locale._week.dow,o=t._locale._week.doy,c=Ft(De(),i,o),n=be(e.gg,t._a[0],c.year),r=be(e.w,c.week),null!=e.d?((a=e.d)<0||a>6)&&(u=!0):null!=e.e?(a=e.e+i,(e.e<0||e.e>6)&&(u=!0)):a=i),r<1||r>Wt(n,i,o)?p(t)._overflowWeeks=!0:null!=u?p(t)._overflowWeekday=!0:(s=Rt(n,r,a,i,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=be(t._a[0],a[0]),(t._dayOfYear>Tt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Pt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=a[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Pt:Nt).apply(null,s),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(p(t).weekdayMismatch=!0)}}function ke(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],p(t).empty=!0;var e,n,a,i,o,s,u=""+t._i,c=u.length,l=0;for(a=F(t._f,t._locale).match(T)||[],e=0;e<a.length;e++)i=a[e],(n=(u.match(pt(i,t))||[])[0])&&((o=u.substr(0,u.indexOf(n))).length>0&&p(t).unusedInput.push(o),u=u.slice(u.indexOf(n)+n.length),l+=n.length),P[i]?(n?p(t).empty=!1:p(t).unusedTokens.push(i),bt(i,n,t)):t._strict&&!n&&p(t).unusedTokens.push(i);p(t).charsLeftOver=c-l,u.length>0&&p(t).unusedInput.push(u),t._a[3]<=12&&!0===p(t).bigHour&&t._a[3]>0&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((r=t.isPM(n))&&e<12&&(e+=12),r||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),null!==(s=p(t).era)&&(t._a[0]=t._locale.erasConvertYear(s,t._a[0])),we(t),ue(t)}else ve(t);else ge(t)}function Oe(t){var e=t._i,n=t._f;return t._locale=t._locale||se(t._l),null===e||void 0===n&&""===e?y({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),w(e)?new b(ue(e)):(l(e)?t._d=e:a(n)?function(t){var e,n,r,a,i,o,s=!1;if(0===t._f.length)return p(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;a<t._f.length;a++)i=0,o=!1,e=v({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],ke(e),m(e)&&(o=!0),i+=p(e).charsLeftOver,i+=10*p(e).unusedTokens.length,p(e).score=i,s?i<r&&(r=i,n=e):(null==r||i<r||o)&&(r=i,n=e,o&&(s=!0));d(t,n||e)}(t):n?ke(t):function(t){var e=t._i;u(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=pe.exec(t._i);null===e?(ge(t),!1===t._isValid&&(delete t._isValid,ve(t),!1===t._isValid&&(delete t._isValid,t._strict?t._isValid=!1:r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):a(e)?(t._a=h(e.slice(0),(function(t){return parseInt(t,10)})),we(t)):i(e)?function(t){if(!t._d){var e=I(t._i),n=void 0===e.day?e.date:e.day;t._a=h([e.year,e.month,n,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),we(t)}}(t):c(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),m(t)||(t._d=null),t))}function xe(t,e,n,r,o){var u,c={};return!0!==e&&!1!==e||(r=e,e=void 0),!0!==n&&!1!==n||(r=n,n=void 0),(i(t)&&s(t)||a(t)&&0===t.length)&&(t=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=o,c._l=n,c._i=t,c._f=e,c._strict=r,(u=new b(ue(Oe(c))))._nextDay&&(u.add(1,"d"),u._nextDay=void 0),u}function De(t,e,n,r){return xe(t,e,n,r,!1)}r.createFromInputFallback=O("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=O("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=De.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:y()})),Me=O("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=De.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:y()}));function je(t,e){var n,r;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return De();for(n=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](n)||(n=e[r]);return n}var Ye=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ce(t){var e=I(t),n=e.year||0,r=e.quarter||0,a=e.month||0,i=e.week||e.isoWeek||0,s=e.day||0,u=e.hour||0,c=e.minute||0,l=e.second||0,h=e.millisecond||0;this._isValid=function(t){var e,n,r=!1;for(e in t)if(o(t,e)&&(-1===yt.call(Ye,e)||null!=t[e]&&isNaN(t[e])))return!1;for(n=0;n<Ye.length;++n)if(t[Ye[n]]){if(r)return!1;parseFloat(t[Ye[n]])!==V(t[Ye[n]])&&(r=!0)}return!0}(e),this._milliseconds=+h+1e3*l+6e4*c+1e3*u*60*60,this._days=+s+7*i,this._months=+a+3*r+12*n,this._data={},this._locale=se(),this._bubble()}function Te(t){return t instanceof Ce}function Ae(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ne(t,e){E(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+C(~~(t/60),2)+e+C(~~t%60,2)}))}Ne("Z",":"),Ne("ZZ",""),ft("Z",ht),ft("ZZ",ht),_t(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=Ee(ht,t)}));var Pe=/([\+\-]|\d\d)/gi;function Ee(t,e){var n,r,a=(e||"").match(t);return null===a?null:0===(r=60*(n=((a[a.length-1]||[])+"").match(Pe)||["-",0,0])[1]+V(n[2]))?0:"+"===n[0]?r:-r}function Re(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(w(t)||l(t)?t.valueOf():De(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):De(t).local()}function Fe(t){return-Math.round(t._d.getTimezoneOffset())}function We(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Le=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,He=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ie(t,e){var n,r,a,i,s,u,l=t,h=null;return Te(t)?l={ms:t._milliseconds,d:t._days,M:t._months}:c(t)||!isNaN(+t)?(l={},e?l[e]=+t:l.milliseconds=+t):(h=Le.exec(t))?(n="-"===h[1]?-1:1,l={y:0,d:V(h[2])*n,h:V(h[3])*n,m:V(h[4])*n,s:V(h[5])*n,ms:V(Ae(1e3*h[6]))*n}):(h=He.exec(t))?(n="-"===h[1]?-1:1,l={y:Ue(h[2],n),M:Ue(h[3],n),w:Ue(h[4],n),d:Ue(h[5],n),h:Ue(h[6],n),m:Ue(h[7],n),s:Ue(h[8],n)}):null==l?l={}:"object"==typeof l&&("from"in l||"to"in l)&&(i=De(l.from),s=De(l.to),a=i.isValid()&&s.isValid()?(s=Re(s,i),i.isBefore(s)?u=Je(i,s):((u=Je(s,i)).milliseconds=-u.milliseconds,u.months=-u.months),u):{milliseconds:0,months:0},(l={}).ms=a.milliseconds,l.M=a.months),r=new Ce(l),Te(t)&&o(t,"_locale")&&(r._locale=t._locale),Te(t)&&o(t,"_isValid")&&(r._isValid=t._isValid),r}function Ue(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Je(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function ze(t,e){return function(n,r){var a;return null===r||isNaN(+r)||(S(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),a=n,n=r,r=a),Ge(this,Ie(n,r),t),this}}function Ge(t,e,n,a){var i=e._milliseconds,o=Ae(e._days),s=Ae(e._months);t.isValid()&&(a=null==a||a,s&&jt(t,K(t,"Month")+s*n),o&&Z(t,"Date",K(t,"Date")+o*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,o||s))}Ie.fn=Ce.prototype,Ie.invalid=function(){return Ie(NaN)};var Ve=ze(1,"add"),Be=ze(-1,"subtract");function Ke(t){return"string"==typeof t||t instanceof String}function Ze(t){return w(t)||l(t)||Ke(t)||c(t)||function(t){var e=a(t),n=!1;return e&&(n=0===t.filter((function(e){return!c(e)&&Ke(t)})).length),e&&n}(t)||function(t){var e,n,r=i(t)&&!s(t),a=!1,u=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(e=0;e<u.length;e+=1)n=u[e],a=a||o(t,n);return r&&a}(t)||null==t}function Qe(t){var e,n=i(t)&&!s(t),r=!1,a=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(e=0;e<a.length;e+=1)r=r||o(t,a[e]);return n&&r}function qe(t,e){if(t.date()<e.date())return-qe(e,t);var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,"months");return-(n+(e-r<0?(e-r)/(r-t.clone().add(n-1,"months")):(e-r)/(t.clone().add(n+1,"months")-r)))||0}function Xe(t){var e;return void 0===t?this._locale._abbr:(null!=(e=se(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var $e=O("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function tn(){return this._locale}function en(t,e){return(t%e+e)%e}function nn(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function rn(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function an(t,e){return e.erasAbbrRegex(t)}function on(){var t,e,n=[],r=[],a=[],i=[],o=this.eras();for(t=0,e=o.length;t<e;++t)r.push(mt(o[t].name)),n.push(mt(o[t].abbr)),a.push(mt(o[t].narrow)),i.push(mt(o[t].name)),i.push(mt(o[t].abbr)),i.push(mt(o[t].narrow));this._erasRegex=new RegExp("^("+i.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+r.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+n.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+a.join("|")+")","i")}function sn(t,e){E(0,[t,t.length],0,e)}function un(t,e,n,r,a){var i;return null==t?Ft(this,r,a).year:(e>(i=Wt(t,r,a))&&(e=i),cn.call(this,t,e,n,r,a))}function cn(t,e,n,r,a){var i=Rt(t,e,n,r,a),o=Pt(i.year,0,i.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}E("N",0,0,"eraAbbr"),E("NN",0,0,"eraAbbr"),E("NNN",0,0,"eraAbbr"),E("NNNN",0,0,"eraName"),E("NNNNN",0,0,"eraNarrow"),E("y",["y",1],"yo","eraYear"),E("y",["yy",2],0,"eraYear"),E("y",["yyy",3],0,"eraYear"),E("y",["yyyy",4],0,"eraYear"),ft("N",an),ft("NN",an),ft("NNN",an),ft("NNNN",(function(t,e){return e.erasNameRegex(t)})),ft("NNNNN",(function(t,e){return e.erasNarrowRegex(t)})),_t(["N","NN","NNN","NNNN","NNNNN"],(function(t,e,n,r){var a=n._locale.erasParse(t,r,n._strict);a?p(n).era=a:p(n).invalidEra=t})),ft("y",ut),ft("yy",ut),ft("yyy",ut),ft("yyyy",ut),ft("yo",(function(t,e){return e._eraYearOrdinalRegex||ut})),_t(["y","yy","yyy","yyyy"],0),_t(["yo"],(function(t,e,n,r){var a;n._locale._eraYearOrdinalRegex&&(a=t.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?e[0]=n._locale.eraYearOrdinalParse(t,a):e[0]=parseInt(t,10)})),E(0,["gg",2],0,(function(){return this.weekYear()%100})),E(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),sn("gggg","weekYear"),sn("ggggg","weekYear"),sn("GGGG","isoWeekYear"),sn("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),J("weekYear",1),J("isoWeekYear",1),ft("G",ct),ft("g",ct),ft("GG",nt,X),ft("gg",nt,X),ft("GGGG",ot,tt),ft("gggg",ot,tt),ft("GGGGG",st,et),ft("ggggg",st,et),vt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,r){e[r.substr(0,2)]=V(t)})),vt(["gg","GG"],(function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)})),E("Q",0,"Qo","quarter"),L("quarter","Q"),J("quarter",7),ft("Q",q),_t("Q",(function(t,e){e[1]=3*(V(t)-1)})),E("D",["DD",2],"Do","date"),L("date","D"),J("date",9),ft("D",nt),ft("DD",nt,X),ft("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),_t(["D","DD"],2),_t("Do",(function(t,e){e[2]=V(t.match(nt)[0])}));var ln=B("Date",!0);E("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),J("dayOfYear",4),ft("DDD",it),ft("DDDD",$),_t(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=V(t)})),E("m",["mm",2],0,"minute"),L("minute","m"),J("minute",14),ft("m",nt),ft("mm",nt,X),_t(["m","mm"],4);var hn=B("Minutes",!1);E("s",["ss",2],0,"second"),L("second","s"),J("second",15),ft("s",nt),ft("ss",nt,X),_t(["s","ss"],5);var dn,fn,pn=B("Seconds",!1);for(E("S",0,0,(function(){return~~(this.millisecond()/100)})),E(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),E(0,["SSS",3],0,"millisecond"),E(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),E(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),E(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),E(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),E(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),E(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),L("millisecond","ms"),J("millisecond",16),ft("S",it,q),ft("SS",it,X),ft("SSS",it,$),dn="SSSS";dn.length<=9;dn+="S")ft(dn,ut);function mn(t,e){e[6]=V(1e3*("0."+t))}for(dn="S";dn.length<=9;dn+="S")_t(dn,mn);fn=B("Milliseconds",!1),E("z",0,0,"zoneAbbr"),E("zz",0,0,"zoneName");var yn=b.prototype;function gn(t){return t}yn.add=Ve,yn.calendar=function(t,e){1===arguments.length&&(Ze(arguments[0])?(t=arguments[0],e=void 0):Qe(arguments[0])&&(e=arguments[0],t=void 0));var n=t||De(),a=Re(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",o=e&&(M(e[i])?e[i].call(this,n):e[i]);return this.format(o||this.localeData().calendar(i,this,De(n)))},yn.clone=function(){return new b(this)},yn.diff=function(t,e,n){var r,a,i;if(!this.isValid())return NaN;if(!(r=Re(t,this)).isValid())return NaN;switch(a=6e4*(r.utcOffset()-this.utcOffset()),e=H(e)){case"year":i=qe(this,r)/12;break;case"month":i=qe(this,r);break;case"quarter":i=qe(this,r)/3;break;case"second":i=(this-r)/1e3;break;case"minute":i=(this-r)/6e4;break;case"hour":i=(this-r)/36e5;break;case"day":i=(this-r-a)/864e5;break;case"week":i=(this-r-a)/6048e5;break;default:i=this-r}return n?i:G(i)},yn.endOf=function(t){var e,n;if(void 0===(t=H(t))||"millisecond"===t||!this.isValid())return this;switch(n=this._isUTC?rn:nn,t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-en(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-en(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-en(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},yn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=R(this,t);return this.localeData().postformat(e)},yn.from=function(t,e){return this.isValid()&&(w(t)&&t.isValid()||De(t).isValid())?Ie({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},yn.fromNow=function(t){return this.from(De(),t)},yn.to=function(t,e){return this.isValid()&&(w(t)&&t.isValid()||De(t).isValid())?Ie({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},yn.toNow=function(t){return this.to(De(),t)},yn.get=function(t){return M(this[t=H(t)])?this[t]():this},yn.invalidAt=function(){return p(this).overflow},yn.isAfter=function(t,e){var n=w(t)?t:De(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},yn.isBefore=function(t,e){var n=w(t)?t:De(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},yn.isBetween=function(t,e,n,r){var a=w(t)?t:De(t),i=w(e)?e:De(e);return!!(this.isValid()&&a.isValid()&&i.isValid())&&(("("===(r=r||"()")[0]?this.isAfter(a,n):!this.isBefore(a,n))&&(")"===r[1]?this.isBefore(i,n):!this.isAfter(i,n)))},yn.isSame=function(t,e){var n,r=w(t)?t:De(t);return!(!this.isValid()||!r.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},yn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},yn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},yn.isValid=function(){return m(this)},yn.lang=$e,yn.locale=Xe,yn.localeData=tn,yn.max=Me,yn.min=Se,yn.parsingFlags=function(){return d({},p(this))},yn.set=function(t,e){if("object"==typeof t){var n,r=function(t){var e,n=[];for(e in t)o(t,e)&&n.push({unit:e,priority:U[e]});return n.sort((function(t,e){return t.priority-e.priority})),n}(t=I(t));for(n=0;n<r.length;n++)this[r[n].unit](t[r[n].unit])}else if(M(this[t=H(t)]))return this[t](e);return this},yn.startOf=function(t){var e,n;if(void 0===(t=H(t))||"millisecond"===t||!this.isValid())return this;switch(n=this._isUTC?rn:nn,t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=en(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=en(e,6e4);break;case"second":e=this._d.valueOf(),e-=en(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},yn.subtract=Be,yn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},yn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},yn.toDate=function(){return new Date(this.valueOf())},yn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?R(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):M(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",R(n,"Z")):R(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},yn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t,e,n,r="moment",a="";return this.isLocal()||(r=0===this.utcOffset()?"moment.utc":"moment.parseZone",a="Z"),t="["+r+'("]',e=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=a+'[")]',this.format(t+e+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(yn[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),yn.toJSON=function(){return this.isValid()?this.toISOString():null},yn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yn.unix=function(){return Math.floor(this.valueOf()/1e3)},yn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yn.eraName=function(){var t,e,n,r=this.localeData().eras();for(t=0,e=r.length;t<e;++t){if(n=this.startOf("day").valueOf(),r[t].since<=n&&n<=r[t].until)return r[t].name;if(r[t].until<=n&&n<=r[t].since)return r[t].name}return""},yn.eraNarrow=function(){var t,e,n,r=this.localeData().eras();for(t=0,e=r.length;t<e;++t){if(n=this.startOf("day").valueOf(),r[t].since<=n&&n<=r[t].until)return r[t].narrow;if(r[t].until<=n&&n<=r[t].since)return r[t].narrow}return""},yn.eraAbbr=function(){var t,e,n,r=this.localeData().eras();for(t=0,e=r.length;t<e;++t){if(n=this.startOf("day").valueOf(),r[t].since<=n&&n<=r[t].until)return r[t].abbr;if(r[t].until<=n&&n<=r[t].since)return r[t].abbr}return""},yn.eraYear=function(){var t,e,n,a,i=this.localeData().eras();for(t=0,e=i.length;t<e;++t)if(n=i[t].since<=i[t].until?1:-1,a=this.startOf("day").valueOf(),i[t].since<=a&&a<=i[t].until||i[t].until<=a&&a<=i[t].since)return(this.year()-r(i[t].since).year())*n+i[t].offset;return this.year()},yn.year=At,yn.isLeapYear=function(){return z(this.year())},yn.weekYear=function(t){return un.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},yn.isoWeekYear=function(t){return un.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},yn.quarter=yn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},yn.month=Yt,yn.daysInMonth=function(){return wt(this.year(),this.month())},yn.week=yn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},yn.isoWeek=yn.isoWeeks=function(t){var e=Ft(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},yn.weeksInYear=function(){var t=this.localeData()._week;return Wt(this.year(),t.dow,t.doy)},yn.weeksInWeekYear=function(){var t=this.localeData()._week;return Wt(this.weekYear(),t.dow,t.doy)},yn.isoWeeksInYear=function(){return Wt(this.year(),1,4)},yn.isoWeeksInISOWeekYear=function(){return Wt(this.isoWeekYear(),1,4)},yn.date=ln,yn.day=yn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},yn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},yn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},yn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},yn.hour=yn.hours=Xt,yn.minute=yn.minutes=hn,yn.second=yn.seconds=pn,yn.millisecond=yn.milliseconds=fn,yn.utcOffset=function(t,e,n){var a,i=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Ee(ht,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=Fe(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Ge(this,Ie(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Fe(this)},yn.utc=function(t){return this.utcOffset(0,t)},yn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Fe(this),"m")),this},yn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ee(lt,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},yn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?De(t).utcOffset():0,(this.utcOffset()-t)%60==0)},yn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yn.isLocal=function(){return!!this.isValid()&&!this._isUTC},yn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yn.isUtc=We,yn.isUTC=We,yn.zoneAbbr=function(){return this._isUTC?"UTC":""},yn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yn.dates=O("dates accessor is deprecated. Use date instead.",ln),yn.months=O("months accessor is deprecated. Use month instead",Yt),yn.years=O("years accessor is deprecated. Use year instead",At),yn.zone=O("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),yn.isDSTShifted=O("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!u(this._isDSTShifted))return this._isDSTShifted;var t,e={};return v(e,this),(e=Oe(e))._a?(t=e._isUTC?f(e._a):De(e._a),this._isDSTShifted=this.isValid()&&function(t,e,n){var r,a=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),o=0;for(r=0;r<a;r++)(n&&t[r]!==e[r]||!n&&V(t[r])!==V(e[r]))&&o++;return o+i}(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}));var _n=Y.prototype;function vn(t,e,n,r){var a=se(),i=f().set(r,e);return a[n](i,t)}function bn(t,e,n){if(c(t)&&(e=t,t=void 0),t=t||"",null!=e)return vn(t,e,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=vn(t,r,n,"month");return a}function wn(t,e,n,r){"boolean"==typeof t?(c(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,c(e)&&(n=e,e=void 0),e=e||"");var a,i=se(),o=t?i._week.dow:0,s=[];if(null!=n)return vn(e,(n+o)%7,r,"day");for(a=0;a<7;a++)s[a]=vn(e,(a+o)%7,r,"day");return s}_n.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return M(r)?r.call(e,n):r},_n.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.match(T).map((function(t){return"MMMM"===t||"MM"===t||"DD"===t||"dddd"===t?t.slice(1):t})).join(""),this._longDateFormat[t])},_n.invalidDate=function(){return this._invalidDate},_n.ordinal=function(t){return this._ordinal.replace("%d",t)},_n.preparse=gn,_n.postformat=gn,_n.relativeTime=function(t,e,n,r){var a=this._relativeTime[n];return M(a)?a(t,e,n,r):a.replace(/%d/i,t)},_n.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return M(n)?n(e):n.replace(/%s/i,e)},_n.set=function(t){var e,n;for(n in t)o(t,n)&&(M(e=t[n])?this[n]=e:this["_"+n]=e);this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},_n.eras=function(t,e){var n,a,i,o=this._eras||se("en")._eras;for(n=0,a=o.length;n<a;++n){switch(typeof o[n].since){case"string":i=r(o[n].since).startOf("day"),o[n].since=i.valueOf()}switch(typeof o[n].until){case"undefined":o[n].until=1/0;break;case"string":i=r(o[n].until).startOf("day").valueOf(),o[n].until=i.valueOf()}}return o},_n.erasParse=function(t,e,n){var r,a,i,o,s,u=this.eras();for(t=t.toUpperCase(),r=0,a=u.length;r<a;++r)if(i=u[r].name.toUpperCase(),o=u[r].abbr.toUpperCase(),s=u[r].narrow.toUpperCase(),n)switch(e){case"N":case"NN":case"NNN":if(o===t)return u[r];break;case"NNNN":if(i===t)return u[r];break;case"NNNNN":if(s===t)return u[r]}else if([i,o,s].indexOf(t)>=0)return u[r]},_n.erasConvertYear=function(t,e){var n=t.since<=t.until?1:-1;return void 0===e?r(t.since).year():r(t.since).year()+(e-t.offset)*n},_n.erasAbbrRegex=function(t){return o(this,"_erasAbbrRegex")||on.call(this),t?this._erasAbbrRegex:this._erasRegex},_n.erasNameRegex=function(t){return o(this,"_erasNameRegex")||on.call(this),t?this._erasNameRegex:this._erasRegex},_n.erasNarrowRegex=function(t){return o(this,"_erasNarrowRegex")||on.call(this),t?this._erasNarrowRegex:this._erasRegex},_n.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||xt).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},_n.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[xt.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},_n.monthsParse=function(t,e,n){var r,a,i;if(this._monthsParseExact)return Mt.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(a=f([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(i="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[r]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}},_n.monthsRegex=function(t){return this._monthsParseExact?(o(this,"_monthsRegex")||Ct.call(this),t?this._monthsStrictRegex:this._monthsRegex):(o(this,"_monthsRegex")||(this._monthsRegex=St),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},_n.monthsShortRegex=function(t){return this._monthsParseExact?(o(this,"_monthsRegex")||Ct.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(o(this,"_monthsShortRegex")||(this._monthsShortRegex=Dt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},_n.week=function(t){return Ft(t,this._week.dow,this._week.doy).week},_n.firstDayOfYear=function(){return this._week.doy},_n.firstDayOfWeek=function(){return this._week.dow},_n.weekdays=function(t,e){var n=a(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Lt(n,this._week.dow):t?n[t.day()]:n},_n.weekdaysMin=function(t){return!0===t?Lt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},_n.weekdaysShort=function(t){return!0===t?Lt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},_n.weekdaysParse=function(t,e,n){var r,a,i;if(this._weekdaysParseExact)return Vt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(a=f([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[r].test(t))return r;if(n&&"ddd"===e&&this._shortWeekdaysParse[r].test(t))return r;if(n&&"dd"===e&&this._minWeekdaysParse[r].test(t))return r;if(!n&&this._weekdaysParse[r].test(t))return r}},_n.weekdaysRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(o(this,"_weekdaysRegex")||(this._weekdaysRegex=Jt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},_n.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(o(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=zt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},_n.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(o(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Gt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},_n.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},_n.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===V(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=O("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=O("moment.langData is deprecated. Use moment.localeData instead.",se);var kn=Math.abs;function On(t,e,n,r){var a=Ie(e,n);return t._milliseconds+=r*a._milliseconds,t._days+=r*a._days,t._months+=r*a._months,t._bubble()}function xn(t){return t<0?Math.floor(t):Math.ceil(t)}function Dn(t){return 4800*t/146097}function Sn(t){return 146097*t/4800}function Mn(t){return function(){return this.as(t)}}var jn=Mn("ms"),Yn=Mn("s"),Cn=Mn("m"),Tn=Mn("h"),An=Mn("d"),Nn=Mn("w"),Pn=Mn("M"),En=Mn("Q"),Rn=Mn("y");function Fn(t){return function(){return this.isValid()?this._data[t]:NaN}}var Wn=Fn("milliseconds"),Ln=Fn("seconds"),Hn=Fn("minutes"),In=Fn("hours"),Un=Fn("days"),Jn=Fn("months"),zn=Fn("years"),Gn=Math.round,Vn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Bn(t,e,n,r,a){return a.relativeTime(e||1,!!n,t,r)}var Kn=Math.abs;function Zn(t){return(t>0)-(t<0)||+t}function Qn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n,r,a,i,o,s,u=Kn(this._milliseconds)/1e3,c=Kn(this._days),l=Kn(this._months),h=this.asSeconds();return h?(t=G(u/60),e=G(t/60),u%=60,t%=60,n=G(l/12),l%=12,r=u?u.toFixed(3).replace(/\.?0+$/,""):"",a=h<0?"-":"",i=Zn(this._months)!==Zn(h)?"-":"",o=Zn(this._days)!==Zn(h)?"-":"",s=Zn(this._milliseconds)!==Zn(h)?"-":"",a+"P"+(n?i+n+"Y":"")+(l?i+l+"M":"")+(c?o+c+"D":"")+(e||t||u?"T":"")+(e?s+e+"H":"")+(t?s+t+"M":"")+(u?s+r+"S":"")):"P0D"}var qn=Ce.prototype;return qn.isValid=function(){return this._isValid},qn.abs=function(){var t=this._data;return this._milliseconds=kn(this._milliseconds),this._days=kn(this._days),this._months=kn(this._months),t.milliseconds=kn(t.milliseconds),t.seconds=kn(t.seconds),t.minutes=kn(t.minutes),t.hours=kn(t.hours),t.months=kn(t.months),t.years=kn(t.years),this},qn.add=function(t,e){return On(this,t,e,1)},qn.subtract=function(t,e){return On(this,t,e,-1)},qn.as=function(t){if(!this.isValid())return NaN;var e,n,r=this._milliseconds;if("month"===(t=H(t))||"quarter"===t||"year"===t)switch(e=this._days+r/864e5,n=this._months+Dn(e),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(Sn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}},qn.asMilliseconds=jn,qn.asSeconds=Yn,qn.asMinutes=Cn,qn.asHours=Tn,qn.asDays=An,qn.asWeeks=Nn,qn.asMonths=Pn,qn.asQuarters=En,qn.asYears=Rn,qn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*V(this._months/12):NaN},qn._bubble=function(){var t,e,n,r,a,i=this._milliseconds,o=this._days,s=this._months,u=this._data;return i>=0&&o>=0&&s>=0||i<=0&&o<=0&&s<=0||(i+=864e5*xn(Sn(s)+o),o=0,s=0),u.milliseconds=i%1e3,t=G(i/1e3),u.seconds=t%60,e=G(t/60),u.minutes=e%60,n=G(e/60),u.hours=n%24,o+=G(n/24),a=G(Dn(o)),s+=a,o-=xn(Sn(a)),r=G(s/12),s%=12,u.days=o,u.months=s,u.years=r,this},qn.clone=function(){return Ie(this)},qn.get=function(t){return t=H(t),this.isValid()?this[t+"s"]():NaN},qn.milliseconds=Wn,qn.seconds=Ln,qn.minutes=Hn,qn.hours=In,qn.days=Un,qn.weeks=function(){return G(this.days()/7)},qn.months=Jn,qn.years=zn,qn.humanize=function(t,e){if(!this.isValid())return this.localeData().invalidDate();var n,r,a=!1,i=Vn;return"object"==typeof t&&(e=t,t=!1),"boolean"==typeof t&&(a=t),"object"==typeof e&&(i=Object.assign({},Vn,e),null!=e.s&&null==e.ss&&(i.ss=e.s-1)),n=this.localeData(),r=function(t,e,n,r){var a=Ie(t).abs(),i=Gn(a.as("s")),o=Gn(a.as("m")),s=Gn(a.as("h")),u=Gn(a.as("d")),c=Gn(a.as("M")),l=Gn(a.as("w")),h=Gn(a.as("y")),d=i<=n.ss&&["s",i]||i<n.s&&["ss",i]||o<=1&&["m"]||o<n.m&&["mm",o]||s<=1&&["h"]||s<n.h&&["hh",s]||u<=1&&["d"]||u<n.d&&["dd",u];return null!=n.w&&(d=d||l<=1&&["w"]||l<n.w&&["ww",l]),(d=d||c<=1&&["M"]||c<n.M&&["MM",c]||h<=1&&["y"]||["yy",h])[2]=e,d[3]=+t>0,d[4]=r,Bn.apply(null,d)}(this,!a,i,n),a&&(r=n.pastFuture(+this,r)),n.postformat(r)},qn.toISOString=Qn,qn.toString=Qn,qn.toJSON=Qn,qn.locale=Xe,qn.localeData=tn,qn.toIsoString=O("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Qn),qn.lang=$e,E("X",0,0,"unix"),E("x",0,0,"valueOf"),ft("x",ct),ft("X",/[+-]?\d+(\.\d{1,3})?/),_t("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t))})),_t("x",(function(t,e,n){n._d=new Date(V(t))})),r.version="2.27.0",e=De,r.fn=yn,r.min=function(){var t=[].slice.call(arguments,0);return je("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return je("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=f,r.unix=function(t){return De(1e3*t)},r.months=function(t,e){return bn(t,e,"months")},r.isDate=l,r.locale=ie,r.invalid=y,r.duration=Ie,r.isMoment=w,r.weekdays=function(t,e,n){return wn(t,e,n,"weekdays")},r.parseZone=function(){return De.apply(null,arguments).parseZone()},r.localeData=se,r.isDuration=Te,r.monthsShort=function(t,e){return bn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return wn(t,e,n,"weekdaysMin")},r.defineLocale=oe,r.updateLocale=function(t,e){if(null!=e){var n,r,a=$t;null!=te[t]&&null!=te[t].parentLocale?te[t].set(j(te[t]._config,e)):(null!=(r=ae(t))&&(a=r._config),e=j(a,e),null==r&&(e.abbr=t),(n=new Y(e)).parentLocale=te[t],te[t]=n),ie(t)}else null!=te[t]&&(null!=te[t].parentLocale?(te[t]=te[t].parentLocale,t===ie()&&ie(t)):null!=te[t]&&delete te[t]);return te[t]},r.locales=function(){return x(te)},r.weekdaysShort=function(t,e,n){return wn(t,e,n,"weekdaysShort")},r.normalizeUnits=H,r.relativeTimeRounding=function(t){return void 0===t?Gn:"function"==typeof t&&(Gn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Vn[t]&&(void 0===e?Vn[t]:(Vn[t]=e,"s"===t&&(Vn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=yn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},xYSL:function(t,e){t.exports=function(t,e){return t.has(e)}},y1pI:function(t,e,n){var r=n("ljhN");t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},yGk4:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Set");t.exports=r},zZ0H:function(t,e){t.exports=function(t){return t}},zoYe:function(t,e,n){var r=n("nmnc"),a=n("eUgh"),i=n("Z0cm"),o=n("/9aa"),s=r?r.prototype:void 0,u=s?s.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return a(e,t)+"";if(o(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}}}]);
-//# sourceMappingURL=component---src-pages-performance-js-51cfc654fd38628b84c4.js.map
\ No newline at end of file
diff --git a/component---src-pages-performance-js-528a44fbfd1bc3044539.js b/component---src-pages-performance-js-528a44fbfd1bc3044539.js
new file mode 100644
index 0000000..5f5cadb
--- /dev/null
+++ b/component---src-pages-performance-js-528a44fbfd1bc3044539.js
@@ -0,0 +1,2 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{"+6XX":function(t,e,n){var r=n("y1pI");t.exports=function(t){return r(this.__data__,t)>-1}},"+c4W":function(t,e,n){var r=n("711d"),a=n("4/ic"),i=n("9ggG"),o=n("9Nap");t.exports=function(t){return i(t)?r(o(t)):a(t)}},"/9aa":function(t,e,n){var r=n("NykK"),a=n("ExA7");t.exports=function(t){return"symbol"==typeof t||a(t)&&"[object Symbol]"==r(t)}},"03A+":function(t,e,n){var r=n("JTzB"),a=n("ExA7"),i=Object.prototype,o=i.hasOwnProperty,s=i.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(t){return a(t)&&o.call(t,"callee")&&!s.call(t,"callee")};t.exports=u},"0Cz8":function(t,e,n){var r=n("Xi7e"),a=n("ebwN"),i=n("e4Nc");t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!a||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(o)}return n.set(t,e),this.size=n.size,this}},"0ycA":function(t,e){t.exports=function(){return[]}},"1hJj":function(t,e,n){var r=n("e4Nc"),a=n("ftKO"),i=n("3A9y");function o(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}o.prototype.add=o.prototype.push=a,o.prototype.has=i,t.exports=o},"2gN3":function(t,e,n){var r=n("Kz5y")["__core-js_shared__"];t.exports=r},"3A9y":function(t,e){t.exports=function(t){return this.__data__.has(t)}},"3Fdi":function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},"4/ic":function(t,e,n){var r=n("ZWtO");t.exports=function(t){return function(e){return r(e,t)}}},"44Ds":function(t,e,n){var r=n("e4Nc");function a(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=e?e.apply(this,r):r[0],i=n.cache;if(i.has(a))return i.get(a);var o=t.apply(this,r);return n.cache=i.set(a,o)||i,o};return n.cache=new(a.Cache||r),n}a.Cache=r,t.exports=a},"4kuk":function(t,e,n){var r=n("SfRM"),a=n("Hvzi"),i=n("u8Dt"),o=n("ekgI"),s=n("JSQU");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=o,u.prototype.set=s,t.exports=u},"4sDh":function(t,e,n){var r=n("4uTw"),a=n("03A+"),i=n("Z0cm"),o=n("wJg7"),s=n("shjB"),u=n("9Nap");t.exports=function(t,e,n){for(var c=-1,l=(e=r(e,t)).length,h=!1;++c<l;){var d=u(e[c]);if(!(h=null!=t&&n(t,d)))break;t=t[d]}return h||++c!=l?h:!!(l=null==t?0:t.length)&&s(l)&&o(d,l)&&(i(t)||a(t))}},"4uTw":function(t,e,n){var r=n("Z0cm"),a=n("9ggG"),i=n("GNiM"),o=n("dt0z");t.exports=function(t,e){return r(t)?t:a(t,e)?[t]:i(o(t))}},"6sVZ":function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},"711d":function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},"77Zs":function(t,e,n){var r=n("Xi7e");t.exports=function(){this.__data__=new r,this.size=0}},"7GkX":function(t,e,n){var r=n("b80T"),a=n("A90E"),i=n("MMmD");t.exports=function(t){return i(t)?r(t):a(t)}},"7fqy":function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}},"8oxB":function(t,e){var n,r,a=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var u,c=[],l=!1,h=-1;function d(){l&&u&&(l=!1,u.length?c=u.concat(c):h=-1,c.length&&f())}function f(){if(!l){var t=s(d);l=!0;for(var e=c.length;e;){for(u=c,c=[];++h<e;)u&&u[h].run();h=-1,e=c.length}u=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function m(){}a.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new p(t,e)),1!==c.length||l||s(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=m,a.addListener=m,a.once=m,a.off=m,a.removeListener=m,a.removeAllListeners=m,a.emit=m,a.prependListener=m,a.prependOnceListener=m,a.listeners=function(t){return[]},a.binding=function(t){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(t){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},"9Nap":function(t,e,n){var r=n("/9aa");t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},"9ggG":function(t,e,n){var r=n("Z0cm"),a=n("/9aa"),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!a(t))||(o.test(t)||!i.test(t)||null!=e&&t in Object(e))}},A90E:function(t,e,n){var r=n("6sVZ"),a=n("V6Ve"),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return a(t);var e=[];for(var n in Object(t))i.call(t,n)&&"constructor"!=n&&e.push(n);return e}},AP2z:function(t,e,n){var r=n("nmnc"),a=Object.prototype,i=a.hasOwnProperty,o=a.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(u){}var a=o.call(t);return r&&(e?t[s]=n:delete t[s]),a}},B8du:function(t,e){t.exports=function(){return!1}},CH3K:function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,a=t.length;++n<r;)t[a+n]=e[n];return t}},CMye:function(t,e,n){var r=n("GoyQ");t.exports=function(t){return t==t&&!r(t)}},Cwc5:function(t,e,n){var r=n("NKxu"),a=n("Npjl");t.exports=function(t,e){var n=a(t,e);return r(n)?n:void 0}},DSRE:function(t,e,n){(function(t){var r=n("Kz5y"),a=n("B8du"),i=e&&!e.nodeType&&e,o=i&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===i?r.Buffer:void 0,u=(s?s.isBuffer:void 0)||a;t.exports=u}).call(this,n("YuTi")(t))},E2jh:function(t,e,n){var r,a=n("2gN3"),i=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},EpBk:function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},ExA7:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},GDhZ:function(t,e,n){var r=n("wF/u"),a=n("mwIZ"),i=n("hgQt"),o=n("9ggG"),s=n("CMye"),u=n("IOzZ"),c=n("9Nap");t.exports=function(t,e){return o(t)&&s(e)?u(c(t),e):function(n){var o=a(n,t);return void 0===o&&o===e?i(n,t):r(e,o,3)}}},GNiM:function(t,e,n){var r=n("I01J"),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,o=r((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(a,(function(t,n,r,a){e.push(r?a.replace(i,"$1"):n||t)})),e}));t.exports=o},GoyQ:function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},H8j4:function(t,e,n){var r=n("QkVE");t.exports=function(t,e){var n=r(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this}},HDyB:function(t,e,n){var r=n("nmnc"),a=n("JHRd"),i=n("ljhN"),o=n("or5M"),s=n("7fqy"),u=n("rEGp"),c=r?r.prototype:void 0,l=c?c.valueOf:void 0;t.exports=function(t,e,n,r,c,h,d){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!h(new a(t),new a(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var f=s;case"[object Set]":var p=1&r;if(f||(f=u),t.size!=e.size&&!p)return!1;var m=d.get(t);if(m)return m==e;r|=2,d.set(t,e);var y=o(f(t),f(e),r,c,h,d);return d.delete(t),y;case"[object Symbol]":if(l)return l.call(t)==l.call(e)}return!1}},HOxn:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Promise");t.exports=r},Hvzi:function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},I01J:function(t,e,n){var r=n("44Ds");t.exports=function(t){var e=r(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},IOzZ:function(t,e){t.exports=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}},JC6p:function(t,e,n){var r=n("cq/+"),a=n("7GkX");t.exports=function(t,e){return t&&r(t,e,a)}},JD84:function(t,e,n){var r=n("SKAX");t.exports=function(t,e,n,a){return r(t,(function(t,r,i){e(a,t,n(t),i)})),a}},JHRd:function(t,e,n){var r=n("Kz5y").Uint8Array;t.exports=r},JHgL:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).get(t)}},JSQU:function(t,e,n){var r=n("YESw");t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this}},JTzB:function(t,e,n){var r=n("NykK"),a=n("ExA7");t.exports=function(t){return a(t)&&"[object Arguments]"==r(t)}},Juji:function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},KMkd:function(t,e){t.exports=function(){this.__data__=[],this.size=0}},KfNM:function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},Kz5y:function(t,e,n){var r=n("WFqU"),a="object"==typeof self&&self&&self.Object===Object&&self,i=r||a||Function("return this")();t.exports=i},L8xA:function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},LXxW:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,a=0,i=[];++n<r;){var o=t[n];e(o,n,t)&&(i[a++]=o)}return i}},MMmD:function(t,e,n){var r=n("lSCD"),a=n("shjB");t.exports=function(t){return null!=t&&a(t.length)&&!r(t)}},MvSz:function(t,e,n){var r=n("LXxW"),a=n("0ycA"),i=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return i.call(t,e)})))}:a;t.exports=s},NKxu:function(t,e,n){var r=n("lSCD"),a=n("E2jh"),i=n("GoyQ"),o=n("3Fdi"),s=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,l=u.toString,h=c.hasOwnProperty,d=RegExp("^"+l.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||a(t))&&(r(t)?d:s).test(o(t))}},Npjl:function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},NykK:function(t,e,n){var r=n("nmnc"),a=n("AP2z"),i=n("KfNM"),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?a(t):i(t)}},O0oS:function(t,e,n){var r=n("Cwc5"),a=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();t.exports=a},O7RO:function(t,e,n){var r=n("CMye"),a=n("7GkX");t.exports=function(t){for(var e=a(t),n=e.length;n--;){var i=e[n],o=t[i];e[n]=[i,o,r(o)]}return e}},"Of+w":function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"WeakMap");t.exports=r},QVEU:function(t,e,n){var r=n("hypo"),a=n("UMY1")((function(t,e,n){r(t,n,e)}));t.exports=a},QkVE:function(t,e,n){var r=n("EpBk");t.exports=function(t,e){var n=t.__data__;return r(e)?n["string"==typeof e?"string":"hash"]:n.map}},QoRX:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},QqLw:function(t,e,n){var r=n("tadb"),a=n("ebwN"),i=n("HOxn"),o=n("yGk4"),s=n("Of+w"),u=n("NykK"),c=n("3Fdi"),l=c(r),h=c(a),d=c(i),f=c(o),p=c(s),m=u;(r&&"[object DataView]"!=m(new r(new ArrayBuffer(1)))||a&&"[object Map]"!=m(new a)||i&&"[object Promise]"!=m(i.resolve())||o&&"[object Set]"!=m(new o)||s&&"[object WeakMap]"!=m(new s))&&(m=function(t){var e=u(t),n="[object Object]"==e?t.constructor:void 0,r=n?c(n):"";if(r)switch(r){case l:return"[object DataView]";case h:return"[object Map]";case d:return"[object Promise]";case f:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=m},SKAX:function(t,e,n){var r=n("JC6p"),a=n("lQqw")(r);t.exports=a},SfRM:function(t,e,n){var r=n("YESw");t.exports=function(){this.__data__=r?r(null):{},this.size=0}},UDbo:function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"Chart",{enumerable:!0,get:function(){return i.default}}),e.defaults=e.Scatter=e.Bubble=e.Polar=e.Radar=e.HorizontalBar=e.Bar=e.Line=e.Pie=e.Doughnut=e.default=void 0;var r=u(n("q1tI")),a=u(n("17x9")),i=u(n("MO+k")),o=u(n("Y+p1")),s=u(n("QVEU"));function u(t){return t&&t.__esModule?t:{default:t}}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function f(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?d(Object(n),!0).forEach((function(e){O(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function y(t,e,n){return e&&m(t.prototype,e),n&&m(t,n),t}function g(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_(t,e)}function _(t,e){return(_=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function v(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=k(t);if(e){var a=k(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return b(this,n)}}function b(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?w(t):e}function w(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function k(t){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function O(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var x=void 0!==t&&{}&&"production",D=function(t){g(n,t);var e=v(n);function n(){var t;return p(this,n),O(w(t=e.call(this)),"handleOnClick",(function(e){var n=t.chartInstance,r=t.props,a=r.getDatasetAtEvent,i=r.getElementAtEvent,o=r.getElementsAtEvent,s=r.onElementsClick;a&&a(n.getDatasetAtEvent(e),e),i&&i(n.getElementAtEvent(e),e),o&&o(n.getElementsAtEvent(e),e),s&&s(n.getElementsAtEvent(e),e)})),O(w(t),"ref",(function(e){t.element=e})),t.chartInstance=void 0,t}return y(n,[{key:"componentDidMount",value:function(){this.renderChart()}},{key:"componentDidUpdate",value:function(){if(this.props.redraw)return this.destroyChart(),void this.renderChart();this.updateChart()}},{key:"shouldComponentUpdate",value:function(t){var e=this.props,n=(e.redraw,e.type),r=e.options,a=e.plugins,i=e.legend,s=e.height,u=e.width;if(!0===t.redraw)return!0;if(s!==t.height||u!==t.width)return!0;if(n!==t.type)return!0;if(!(0,o.default)(i,t.legend))return!0;if(!(0,o.default)(r,t.options))return!0;var c=this.transformDataProp(t);return!(0,o.default)(this.shadowDataProp,c)||!(0,o.default)(a,t.plugins)}},{key:"componentWillUnmount",value:function(){this.destroyChart()}},{key:"transformDataProp",value:function(t){var e=t.data;return"function"==typeof e?e(this.element):e}},{key:"memoizeDataProps",value:function(){if(this.props.data){var t=this.transformDataProp(this.props);return this.shadowDataProp=f(f({},t),{},{datasets:t.datasets&&t.datasets.map((function(t){return f({},t)}))}),this.saveCurrentDatasets(),t}}},{key:"checkDatasets",value:function(t){var e="production"!==x&&"prod"!==x,r=this.props.datasetKeyProvider!==n.getLabelAsKey,a=t.length>1;if(e&&a&&!r){var i=!1;t.forEach((function(t){t.label||(i=!0)})),i&&console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the "label" property on each dataset is used. Alternatively, you may provide a "datasetKeyProvider" as a prop that returns a unique key.')}}},{key:"getCurrentDatasets",value:function(){return this.chartInstance&&this.chartInstance.config.data&&this.chartInstance.config.data.datasets||[]}},{key:"saveCurrentDatasets",value:function(){var t=this;this.datasets=this.datasets||{},this.getCurrentDatasets().forEach((function(e){t.datasets[t.props.datasetKeyProvider(e)]=e}))}},{key:"updateChart",value:function(){var t=this,e=this.props.options,n=this.memoizeDataProps(this.props);if(this.chartInstance){e&&(this.chartInstance.options=i.default.helpers.configMerge(this.chartInstance.options,e));var r=this.getCurrentDatasets(),a=n.datasets||[];this.checkDatasets(r);var o=(0,s.default)(r,this.props.datasetKeyProvider);this.chartInstance.config.data.datasets=a.map((function(e){var n=o[t.props.datasetKeyProvider(e)];if(n&&n.type===e.type&&e.data){n.data.splice(e.data.length),e.data.forEach((function(t,r){n.data[r]=e.data[r]}));e.data;var r=h(e,["data"]);return f(f({},n),r)}return e}));n.datasets;var u=h(n,["datasets"]);this.chartInstance.config.data=f(f({},this.chartInstance.config.data),u),this.chartInstance.update()}}},{key:"renderChart",value:function(){var t=this.props,e=t.options,r=t.legend,a=t.type,s=t.plugins,u=this.element,c=this.memoizeDataProps();void 0===r||(0,o.default)(n.defaultProps.legend,r)||(e.legend=r),this.chartInstance=new i.default(u,{type:a,data:c,options:e,plugins:s})}},{key:"destroyChart",value:function(){if(this.chartInstance){this.saveCurrentDatasets();var t=Object.values(this.datasets);this.chartInstance.config.data.datasets=t,this.chartInstance.destroy()}}},{key:"render",value:function(){var t=this.props,e=t.height,n=t.width,a=t.id;return r.default.createElement("canvas",{ref:this.ref,height:e,width:n,id:a,onClick:this.handleOnClick})}}]),n}(r.default.Component);O(D,"getLabelAsKey",(function(t){return t.label})),O(D,"propTypes",{data:a.default.oneOfType([a.default.object,a.default.func]).isRequired,getDatasetAtEvent:a.default.func,getElementAtEvent:a.default.func,getElementsAtEvent:a.default.func,height:a.default.number,legend:a.default.object,onElementsClick:a.default.func,options:a.default.object,plugins:a.default.arrayOf(a.default.object),redraw:a.default.bool,type:function(t,e,n){if(!i.default.controllers[t[e]])return new Error("Invalid chart type `"+t[e]+"` supplied to `"+n+"`.")},width:a.default.number,datasetKeyProvider:a.default.func}),O(D,"defaultProps",{legend:{display:!0,position:"bottom"},type:"doughnut",height:150,width:300,redraw:!1,options:{},datasetKeyProvider:D.getLabelAsKey});var S=D;e.default=S;var M=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"doughnut"}))}}]),n}(r.default.Component);e.Doughnut=M;var j=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"pie"}))}}]),n}(r.default.Component);e.Pie=j;var Y=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"line"}))}}]),n}(r.default.Component);e.Line=Y;var C=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bar"}))}}]),n}(r.default.Component);e.Bar=C;var T=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"horizontalBar"}))}}]),n}(r.default.Component);e.HorizontalBar=T;var A=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"radar"}))}}]),n}(r.default.Component);e.Radar=A;var N=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"polarArea"}))}}]),n}(r.default.Component);e.Polar=N;var P=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"bubble"}))}}]),n}(r.default.Component);e.Bubble=P;var E=function(t){g(n,t);var e=v(n);function n(){return p(this,n),e.apply(this,arguments)}return y(n,[{key:"render",value:function(){var t=this;return r.default.createElement(D,c({},this.props,{ref:function(e){return t.chartInstance=e&&e.chartInstance},type:"scatter"}))}}]),n}(r.default.Component);e.Scatter=E;var R=i.default.defaults;e.defaults=R}).call(this,n("8oxB"))},UMY1:function(t,e,n){var r=n("oMRN"),a=n("JD84"),i=n("ut/Y"),o=n("Z0cm");t.exports=function(t,e){return function(n,s){var u=o(n)?r:a,c=e?e():{};return u(n,t,i(s,2),c)}}},"UNi/":function(t,e){t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},V6Ve:function(t,e,n){var r=n("kekF")(Object.keys,Object);t.exports=r},VaNO:function(t,e){t.exports=function(t){return this.__data__.has(t)}},WFqU:function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n("yLpj"))},Xi7e:function(t,e,n){var r=n("KMkd"),a=n("adU4"),i=n("tMB7"),o=n("+6XX"),s=n("Z8oC");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=o,u.prototype.set=s,t.exports=u},"Y+p1":function(t,e,n){var r=n("wF/u");t.exports=function(t,e){return r(t,e)}},YESw:function(t,e,n){var r=n("Cwc5")(Object,"create");t.exports=r},YuTi:function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},Z0cm:function(t,e){var n=Array.isArray;t.exports=n},Z8oC:function(t,e,n){var r=n("y1pI");t.exports=function(t,e){var n=this.__data__,a=r(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this}},ZCpW:function(t,e,n){var r=n("lm/5"),a=n("O7RO"),i=n("IOzZ");t.exports=function(t){var e=a(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},ZWtO:function(t,e,n){var r=n("4uTw"),a=n("9Nap");t.exports=function(t,e){for(var n=0,i=(e=r(e,t)).length;null!=t&&n<i;)t=t[a(e[n++])];return n&&n==i?t:void 0}},adU4:function(t,e,n){var r=n("y1pI"),a=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():a.call(e,n,1),--this.size,!0)}},b80T:function(t,e,n){var r=n("UNi/"),a=n("03A+"),i=n("Z0cm"),o=n("DSRE"),s=n("wJg7"),u=n("c6wG"),c=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=i(t),l=!n&&a(t),h=!n&&!l&&o(t),d=!n&&!l&&!h&&u(t),f=n||l||h||d,p=f?r(t.length,String):[],m=p.length;for(var y in t)!e&&!c.call(t,y)||f&&("length"==y||h&&("offset"==y||"parent"==y)||d&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||s(y,m))||p.push(y);return p}},c6wG:function(t,e,n){var r=n("dD9F"),a=n("sEf8"),i=n("mdPL"),o=i&&i.isTypedArray,s=o?a(o):r;t.exports=s},"cq/+":function(t,e,n){var r=n("mc0g")();t.exports=r},dD9F:function(t,e,n){var r=n("NykK"),a=n("shjB"),i=n("ExA7"),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&a(t.length)&&!!o[r(t)]}},dt0z:function(t,e,n){var r=n("zoYe");t.exports=function(t){return null==t?"":r(t)}},e4Nc:function(t,e,n){var r=n("fGT3"),a=n("k+1r"),i=n("JHgL"),o=n("pSRY"),s=n("H8j4");function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=o,u.prototype.set=s,t.exports=u},e5cp:function(t,e,n){var r=n("fmRc"),a=n("or5M"),i=n("HDyB"),o=n("seXi"),s=n("QqLw"),u=n("Z0cm"),c=n("DSRE"),l=n("c6wG"),h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,f,p,m){var y=u(t),g=u(e),_=y?"[object Array]":s(t),v=g?"[object Array]":s(e),b=(_="[object Arguments]"==_?h:_)==h,w=(v="[object Arguments]"==v?h:v)==h,k=_==v;if(k&&c(t)){if(!c(e))return!1;y=!0,b=!1}if(k&&!b)return m||(m=new r),y||l(t)?a(t,e,n,f,p,m):i(t,e,_,n,f,p,m);if(!(1&n)){var O=b&&d.call(t,"__wrapped__"),x=w&&d.call(e,"__wrapped__");if(O||x){var D=O?t.value():t,S=x?e.value():e;return m||(m=new r),p(D,S,n,f,m)}}return!!k&&(m||(m=new r),o(t,e,n,f,p,m))}},eUgh:function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,a=Array(r);++n<r;)a[n]=e(t[n],n,t);return a}},ebwN:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Map");t.exports=r},ekgI:function(t,e,n){var r=n("YESw"),a=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:a.call(e,t)}},fGT3:function(t,e,n){var r=n("4kuk"),a=n("Xi7e"),i=n("ebwN");t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||a),string:new r}}},"fR/l":function(t,e,n){var r=n("CH3K"),a=n("Z0cm");t.exports=function(t,e,n){var i=e(t);return a(t)?i:r(i,n(t))}},fmRc:function(t,e,n){var r=n("Xi7e"),a=n("77Zs"),i=n("L8xA"),o=n("gCq4"),s=n("VaNO"),u=n("0Cz8");function c(t){var e=this.__data__=new r(t);this.size=e.size}c.prototype.clear=a,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=s,c.prototype.set=u,t.exports=c},ftKO:function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},gCq4:function(t,e){t.exports=function(t){return this.__data__.get(t)}},hgQt:function(t,e,n){var r=n("Juji"),a=n("4sDh");t.exports=function(t,e){return null!=t&&a(t,e,r)}},hypo:function(t,e,n){var r=n("O0oS");t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},"k+1r":function(t,e,n){var r=n("QkVE");t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},kekF:function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},lQqw:function(t,e,n){var r=n("MMmD");t.exports=function(t,e){return function(n,a){if(null==n)return n;if(!r(n))return t(n,a);for(var i=n.length,o=e?i:-1,s=Object(n);(e?o--:++o<i)&&!1!==a(s[o],o,s););return n}}},lSCD:function(t,e,n){var r=n("NykK"),a=n("GoyQ");t.exports=function(t){if(!a(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},ljhN:function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},"lm/5":function(t,e,n){var r=n("fmRc"),a=n("wF/u");t.exports=function(t,e,n,i){var o=n.length,s=o,u=!i;if(null==t)return!s;for(t=Object(t);o--;){var c=n[o];if(u&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++o<s;){var l=(c=n[o])[0],h=t[l],d=c[1];if(u&&c[2]){if(void 0===h&&!(l in t))return!1}else{var f=new r;if(i)var p=i(h,d,l,t,e,f);if(!(void 0===p?a(d,h,3,i,f):p))return!1}}return!0}},mc0g:function(t,e){t.exports=function(t){return function(e,n,r){for(var a=-1,i=Object(e),o=r(e),s=o.length;s--;){var u=o[t?s:++a];if(!1===n(i[u],u,i))break}return e}}},mdPL:function(t,e,n){(function(t){var r=n("WFqU"),a=e&&!e.nodeType&&e,i=a&&"object"==typeof t&&t&&!t.nodeType&&t,o=i&&i.exports===a&&r.process,s=function(){try{var t=i&&i.require&&i.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}();t.exports=s}).call(this,n("YuTi")(t))},mwIZ:function(t,e,n){var r=n("ZWtO");t.exports=function(t,e,n){var a=null==t?void 0:r(t,e);return void 0===a?n:a}},nmnc:function(t,e,n){var r=n("Kz5y").Symbol;t.exports=r},oMRN:function(t,e){t.exports=function(t,e,n,r){for(var a=-1,i=null==t?0:t.length;++a<i;){var o=t[a];e(r,o,n(o),t)}return r}},or5M:function(t,e,n){var r=n("1hJj"),a=n("QoRX"),i=n("xYSL");t.exports=function(t,e,n,o,s,u){var c=1&n,l=t.length,h=e.length;if(l!=h&&!(c&&h>l))return!1;var d=u.get(t),f=u.get(e);if(d&&f)return d==e&&f==t;var p=-1,m=!0,y=2&n?new r:void 0;for(u.set(t,e),u.set(e,t);++p<l;){var g=t[p],_=e[p];if(o)var v=c?o(_,g,p,e,t,u):o(g,_,p,t,e,u);if(void 0!==v){if(v)continue;m=!1;break}if(y){if(!a(e,(function(t,e){if(!i(y,e)&&(g===t||s(g,t,n,o,u)))return y.push(e)}))){m=!1;break}}else if(g!==_&&!s(g,_,n,o,u)){m=!1;break}}return u.delete(t),u.delete(e),m}},oweT:function(t,e,n){"use strict";n.r(e);var r=n("dI71"),a=n("Bl7J"),i=n("2A+t"),o=n("MXbp"),s=n("q1tI"),u=n("UDbo"),c=n("qKvR"),l=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).state={lineChartData:e.props.lineChartData},e}return Object(r.a)(e,t),e.prototype.render=function(){return Object(c.c)("div",null,Object(c.c)(u.Line,{data:this.state.lineChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:3},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{labels:{fontColor:"white"},display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},e}(s.Component);l.defaultProps={displayLegend:!0,legendPosition:"bottom"};var h=l,d=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartData:e.props.barChartData},e}return Object(r.a)(e,t),e.prototype.render=function(){return Object(c.c)("div",null,Object(c.c)(u.Bar,{data:this.state.barChartData,height:220,width:250,options:{scales:{xAxes:[{display:!0,ticks:{fontColor:"white"},gridLines:{color:"white"},scaleLabel:{display:!1,labelString:this.props.xAxis,fontColor:"white"}}],yAxes:[{display:!0,ticks:{fontColor:"white",maxTicksLimit:4,padding:2,beginAtZero:!0},gridLines:{color:"white"},scaleLabel:{display:!0,labelString:this.props.yAxis,fontColor:"white"}}]},legend:{display:this.props.displayLegend,position:this.props.legendPosition},animation:{duration:2e3,easing:"easeOutCubic"}}}))},e}(s.Component);d.defaultProps={displayLegend:!1,legendPosition:"bottom"};var f=d,p=function(t){var e=t.children,n=t.primary,r=t.graphData,a=t.heading,o=t.chartType,s=t.xAxis,u=t.yAxis;return"line"===o?Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1.5rem 0.5rem 1.5rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(h,{lineChartData:r,legendPosition:"bottom",xAxis:s,yAxis:u}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"0.35rem solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e)):Object(i.c)("div",{sx:{boxShadow:n?"cardShadow":null,borderRadius:"card",backgroundColor:"primary",color:"white",marginY:5,marginX:1,width:"18rem",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}},Object(i.c)("h5",{sx:{fontSize:"1.1rem",margin:"0.5rem 1rem 0.5rem 1rem",textAlign:"center",height:"3rem"}},a),Object(i.c)(f,{barChartData:r,yAxis:u}),Object(i.c)("div",{sx:{boxShadowBottom:n?"cardShadow":null,borderBottomRightRadius:"card",borderBottomLeftRadius:"card",backgroundColor:"white",borderTop:"0.35rem solid #5DA7A3",color:"darkText",height:"50%",padding:"4rem 1rem",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",marginBottom:"-4rem",marginTop:"1rem"}},e))},m=function(t){var e=t.children,n=t.source,r=t.link;return Object(i.c)("blockquote",{sx:{display:["block","block","block","grid"],gridGap:"0.5rem",gridTemplateColumns:"repeat(1, 1fr)",gridTemplateRows:"5rem 1.5rem 1.5rem",color:"#0b4237",boxSizing:"border-box",marginBottom:"2rem"}},Object(i.c)("p",{sx:{fontFamily:"'Gelasio', serif",fontStyle:"italic",fontSize:"1.3rem",lineHeight:"1.5rem"}},e),Object(i.c)("cite",{sx:{display:"flex",justifyContent:"flex-start"}},Object(i.c)("a",{sx:{color:"black",textDecoration:"none","&:hover":{color:"#0b4237",textDecoration:"none",fontWeight:"bold"}},href:r,rel:"noopener noreferrer",target:"_blank"},n," ",Object(i.c)("i",{className:"fas fa-external-link-alt fa-xs"}))))},y=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).state={barChartJDK8Startup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.58,1],backgroundColor:["#5DA7A3","#E58B23"]}]},barChartJDK8Footprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.34,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK8FasterRampupInTheCloud:{labels:[0,150,300,450,600,750,900,1050,1200,1350],datasets:[{label:"OpenJ9",data:[8.5,1064,1063,1133,1188.5,1071,1125.5,1084.5,1095,1104.5],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[10.5,529.5,700.5,832.5,796,829.5,698.5,791.5,1017,1175.5],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},lineChartJK8FootprintDuringLoad:{labels:[0,200,400,600,800,1e3,1200,1400,1600,1800],datasets:[{label:"OpenJ9",data:[232,488,505,511,516,517,520,521,521,522],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[563,902,1023,1140,1200,1218,1220,1289,1359,1368],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJDK11Startup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.49,1],backgroundColor:["#5DA7A3","#E58B23"]}]},barChartJDK11Footprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.5,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK11FasterRampupInTheCloud:{labels:[0,25,50,75,100,125,150,175,200,225,250,275,300],datasets:[{label:"OpenJ9",data:[606,2483,2621,2805,2853,2924,3049,3103,3122,3043,3069,3092,3167],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[139,1208,1620,1952,2157,2551,2696,2879,3264,3337,3392,3436,3479],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},lineChartJK11FootprintDuringLoad:{labels:[0,100,200,300,400,500,600],datasets:[{label:"OpenJ9",data:[267,630,674,680,688,688,691],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[500,786,945,975,985,1001,1011],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJDK11QuarkusStartup:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.34,1],backgroundColor:["#5DA7A3","#E58B23"]}]},barChartJDK11QuarkusFootprint:{labels:["OpenJ9","HotSpot"],datasets:[{data:[.82,1],backgroundColor:["#5DA7A3","#E58B23"]}]},lineChartJK11QuarkusFasterRampupInTheCloud:{labels:[0,10,20,30,40,50,60,70,80,90,100,110,120],datasets:[{label:"OpenJ9",data:[2,4233,4311,4307,4312,4347,4432,4468,4564,4601,4627,4606,4657],fill:!1,borderColor:"#5DA7A3",backgroundColor:"#5DA7A3"},{label:"HotSpot",data:[1,1426,1959,3603,5545,5609,5616,5601,5583,5619,5560,5354,5639],fill:!1,borderColor:"#E58B23",backgroundColor:"#E58B23"}]},barChartJK11QuarkusFootprintDuringLoad:{labels:["OpenJ9","HotSpot"],datasets:[{data:[147,178],backgroundColor:["#5DA7A3","#E58B23"]}]}},e}return Object(r.a)(e,t),e.prototype.render=function(){return Object(i.c)(a.a,{isHome:!1,title:"Eclipse OpenJ9 performance",description:"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot."},Object(i.c)("section",{sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"4rem",paddingBottom:"0.1rem"}},Object(i.c)(o.b.h1,{sx:{marginBottom:"1rem"}},"Performance Overview"),Object(i.c)(o.b.p,null,"Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads. We regularly test and optimize OpenJ9 performance when running the most popular Java frameworks such as Open Liberty, Quarkus, SpringBoot, and Micronaut. We're proud of our results.")),Object(i.c)("section",{id:"openjdk11",sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"0.1rem",paddingBottom:"4rem"}},Object(i.c)(o.b.h2,null,"OpenJDK 11 performance with Eclipse OpenJ9"),Object(i.c)(o.b.p,{sx:{marginBottom:"0.5rem"}},"OpenJDK 11 with OpenJ9 significantly outperforms HotSpot on Liberty startup, ramp up, and footprint."),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(p,{graphData:this.state.barChartJDK11Startup,heading:"51% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative startup time"},Object(i.c)("p",null,"By using shared classes cache and AOT technology, OpenJ9 starts in roughly half the time it takes HotSpot.")),Object(i.c)(p,{graphData:this.state.barChartJDK11Footprint,heading:"50% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"After startup, the OpenJ9 footprint is half the size of HotSpot, which makes it ideal for cloud workloads.")),Object(i.c)(p,{graphData:this.state.lineChartJK11FasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput (pages/s)"},Object(i.c)("p",null,"OpenJ9 reaches peak throughput much faster than HotSpot making it especially suitable for running short-lived applications.")),Object(i.c)(p,{graphData:this.state.lineChartJK11FootprintDuringLoad,heading:"33% smaller footprint during load",primary:!0,chartType:"line",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"Consistent with the footprint results after startup, the OpenJ9 footprint remains much smaller than HotSpot when load is applied."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"7rem"},href:"https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/openjdk11-daytrader7.md",rel:"noopener noreferrer",target:"_blank"},"Show me performance details")),Object(i.c)("div",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],paddingTop:"4rem"}},Object(i.c)(m,{source:"Open Liberty blog",link:"https://openliberty.io/blog/2019/10/30/faster-startup-open-liberty.html"},"With version 19.0.0.9 of Open Liberty and OpenJ9, Open Liberty managed to cut the startup time to their goal of almost exactly one second."),Object(i.c)(m,{source:"Payara Enterprise",link:"https://blog.payara.fish/faster-payara-micro-startup-times-with-openj9"},"Payara found that with datagrid enabled, Payara Micro with class data sharing, booted in about 6 seconds, improving startup time by almost 40%."))),Object(i.c)("section",{id:"openjdk11quarkus",sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"0.1rem",paddingBottom:"4rem"}},Object(i.c)(o.b.h2,null,"OpenJDK 11 performance with Quarkus and Eclipse OpenJ9"),Object(i.c)(o.b.p,{sx:{marginBottom:"0.5rem"}},"Using Quarkus with OpenJ9 instead of HotSpot makes Java even more supersonic and subatomic!"),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(p,{graphData:this.state.barChartJDK11QuarkusStartup,heading:"66% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative startup time"},Object(i.c)("p",null,"Quarkus might be supersonic, but running it with OpenJ9 instead of HotSpot reduces startup time by a further 66%.")),Object(i.c)(p,{graphData:this.state.barChartJDK11QuarkusFootprint,heading:"18% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"The ultra-supersonic startup time comes at some tradeoff to footprint, but OpenJ9 still has an edge over HotSpot.")),Object(i.c)(p,{graphData:this.state.lineChartJK11QuarkusFasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput (pages/s)"},Object(i.c)("p",null,"For short-lived cloud workloads running on Quarkus, OpenJ9 delivers excellent ramp-up performance compared to HotSpot.")),Object(i.c)(p,{graphData:this.state.barChartJK11QuarkusFootprintDuringLoad,heading:"18% smaller footprint during load",primary:!0,chartType:"bar",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"When ramp-up completes, as well as getting there faster, OpenJ9 still retains a smaller footprint than HotSpot."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"7rem"},href:"https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/quarkus.md",rel:"noopener noreferrer",target:"_blank"},"Show me performance details")),Object(i.c)("div",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],paddingTop:"4rem"}},Object(i.c)(m,{source:"Trendyol Tech blog",link:"https://medium.com/trendyol-tech/how-trendyol-jvm-applications-consume-less-memory-in-the-production-environment-87e419dd18a0"},"Trendyol Tech found 40% faster startup time and 73 MB less memory footprint when they ran Undertow + Rest + Couchbase Client with OpenJ9."),Object(i.c)(m,{source:"Graeme Rocher, Micronaut",link:"https://twitter.com/graemerocher/status/1090204088065802240?lang=en"},"As reported on twitter, Micronautfw startup with OpenJ9 is as fast as Node.js."))),Object(i.c)("section",{id:"openjdk8",sx:{backgroundColor:"#F5F9FC",paddingX:"7%",paddingTop:"0.1rem",paddingBottom:"4rem"}},Object(i.c)(o.b.h2,null,"OpenJDK 8 performance with Eclipse OpenJ9"),Object(i.c)(o.b.p,{sx:{marginBottom:"0.5rem"}},"Testing shows similar results for OpenJDK 8; OpenJ9 demonstrates significantly better performance than OpenJDK 8 with HotSpot"),Object(i.c)("div",{sx:{display:"flex",justifyContent:"space-around",flexWrap:"wrap"}},Object(i.c)(p,{graphData:this.state.barChartJDK8Startup,heading:"42% faster startup time",primary:!0,chartType:"bar",yAxis:"Relative startup time"},Object(i.c)("p",null,"Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.")),Object(i.c)(p,{graphData:this.state.barChartJDK8Footprint,heading:"66% smaller footprint after startup",primary:!0,chartType:"bar",yAxis:"Relative resident set size"},Object(i.c)("p",null,"OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.")),Object(i.c)(p,{graphData:this.state.lineChartJK8FasterRampupInTheCloud,heading:"Faster ramp-up time in the cloud",primary:!0,chartType:"line",xAxis:"Time (s)",yAxis:"Throughput (pages/s)"},Object(i.c)("p",null,"OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud.")),Object(i.c)(p,{graphData:this.state.lineChartJK8FootprintDuringLoad,heading:"63% smaller footprint during load",primary:!0,chartType:"line",yAxis:"Resident Set Size (MB)",xAxis:"Time (s)"},Object(i.c)("p",null,"Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot."))),Object(i.c)("div",{sx:{display:"flex",justifyContent:"center"}},Object(i.c)("a",{sx:{variant:"buttons.secondary",display:"flex",alignItems:"center",justifyContent:"center",textDecoration:"none",width:"16rem",marginTop:"7rem"},href:"https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/daytrader7.md",rel:"noopener noreferrer",target:"_blank"},"Show me performance details")),Object(i.c)("div",{sx:{display:"grid",gridGap:"3rem",gridTemplateColumns:["repeat(1, 1fr)","repeat(1, 1fr)","repeat(1, 1fr)","repeat(2, 1fr)"],paddingTop:"4rem"}},Object(i.c)(m,{source:"Eclipse Vert.x how-to guide",link:"https://how-to.vertx.io/openj9-howto/"},"Vert.x found that OpenJ9 was very efficient with respect to memory consumption, without compromising the latency."),Object(i.c)(m,{source:"AMIS technology blog",link:"https://technology.amis.nl/2019/09/03/microservice-framework-startup-time-on-different-jvms-aot-and-jit/"},"As reported on the Amis technology blog, when testing a number of JVMs, OpenJDK with OpenJ9 was the fastest to start for every framework."))))},e}(s.Component);e.default=y},pSRY:function(t,e,n){var r=n("QkVE");t.exports=function(t){return r(this,t).has(t)}},qZTm:function(t,e,n){var r=n("fR/l"),a=n("MvSz"),i=n("7GkX");t.exports=function(t){return r(t,i,a)}},rEGp:function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},sEf8:function(t,e){t.exports=function(t){return function(e){return t(e)}}},seXi:function(t,e,n){var r=n("qZTm"),a=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,i,o,s){var u=1&n,c=r(t),l=c.length;if(l!=r(e).length&&!u)return!1;for(var h=l;h--;){var d=c[h];if(!(u?d in e:a.call(e,d)))return!1}var f=s.get(t),p=s.get(e);if(f&&p)return f==e&&p==t;var m=!0;s.set(t,e),s.set(e,t);for(var y=u;++h<l;){var g=t[d=c[h]],_=e[d];if(i)var v=u?i(_,g,d,e,t,s):i(g,_,d,t,e,s);if(!(void 0===v?g===_||o(g,_,n,i,s):v)){m=!1;break}y||(y="constructor"==d)}if(m&&!y){var b=t.constructor,w=e.constructor;b==w||!("constructor"in t)||!("constructor"in e)||"function"==typeof b&&b instanceof b&&"function"==typeof w&&w instanceof w||(m=!1)}return s.delete(t),s.delete(e),m}},shjB:function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},tMB7:function(t,e,n){var r=n("y1pI");t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},tadb:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"DataView");t.exports=r},u8Dt:function(t,e,n){var r=n("YESw"),a=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(e,t)?e[t]:void 0}},"ut/Y":function(t,e,n){var r=n("ZCpW"),a=n("GDhZ"),i=n("zZ0H"),o=n("Z0cm"),s=n("+c4W");t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?o(t)?a(t[0],t[1]):r(t):s(t)}},"wF/u":function(t,e,n){var r=n("e5cp"),a=n("ExA7");t.exports=function t(e,n,i,o,s){return e===n||(null==e||null==n||!a(e)&&!a(n)?e!=e&&n!=n:r(e,n,i,o,t,s))}},wJg7:function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&n.test(t))&&t>-1&&t%1==0&&t<e}},"wd/R":function(t,e,n){(function(t){t.exports=function(){"use strict";var e,n;function r(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function i(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function s(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(o(t,e))return!1;return!0}function u(t){return void 0===t}function c(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var n,r=[];for(n=0;n<t.length;++n)r.push(e(t[n],n));return r}function d(t,e){for(var n in e)o(e,n)&&(t[n]=e[n]);return o(e,"toString")&&(t.toString=e.toString),o(e,"valueOf")&&(t.valueOf=e.valueOf),t}function f(t,e,n,r){return xe(t,e,n,r,!0).utc()}function p(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function m(t){if(null==t._isValid){var e=p(t),r=n.call(e.parsedDateParts,(function(t){return null!=t})),a=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidEra&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&r);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function y(t){var e=f(NaN);return null!=t?d(p(e),t):p(e).userInvalidated=!0,e}n=Array.prototype.some?Array.prototype.some:function(t){var e,n=Object(this),r=n.length>>>0;for(e=0;e<r;e++)if(e in n&&t.call(this,n[e],e,n))return!0;return!1};var g=r.momentProperties=[],_=!1;function v(t,e){var n,r,a;if(u(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),u(e._i)||(t._i=e._i),u(e._f)||(t._f=e._f),u(e._l)||(t._l=e._l),u(e._strict)||(t._strict=e._strict),u(e._tzm)||(t._tzm=e._tzm),u(e._isUTC)||(t._isUTC=e._isUTC),u(e._offset)||(t._offset=e._offset),u(e._pf)||(t._pf=p(e)),u(e._locale)||(t._locale=e._locale),g.length>0)for(n=0;n<g.length;n++)u(a=e[r=g[n]])||(t[r]=a);return t}function b(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===_&&(_=!0,r.updateOffset(this),_=!1)}function w(t){return t instanceof b||null!=t&&null!=t._isAMomentObject}function k(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function O(t,e){var n=!0;return d((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){var a,i,s,u=[];for(i=0;i<arguments.length;i++){if(a="","object"==typeof arguments[i]){for(s in a+="\n["+i+"] ",arguments[0])o(arguments[0],s)&&(a+=s+": "+arguments[0][s]+", ");a=a.slice(0,-2)}else a=arguments[i];u.push(a)}k(t+"\nArguments: "+Array.prototype.slice.call(u).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var x,D={};function S(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),D[t]||(k(e),D[t]=!0)}function M(t){return"undefined"!=typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function j(t,e){var n,r=d({},t);for(n in e)o(e,n)&&(i(t[n])&&i(e[n])?(r[n]={},d(r[n],t[n]),d(r[n],e[n])):null!=e[n]?r[n]=e[n]:delete r[n]);for(n in t)o(t,n)&&!o(e,n)&&i(t[n])&&(r[n]=d({},r[n]));return r}function Y(t){null!=t&&this.set(t)}function C(t,e,n){var r=""+Math.abs(t),a=e-r.length;return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,x=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)o(t,e)&&n.push(e);return n};var T=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,A=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,N={},P={};function E(t,e,n,r){var a=r;"string"==typeof r&&(a=function(){return this[r]()}),t&&(P[t]=a),e&&(P[e[0]]=function(){return C(a.apply(this,arguments),e[1],e[2])}),n&&(P[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function R(t,e){return t.isValid()?(e=F(e,t.localeData()),N[e]=N[e]||function(t){var e,n,r,a=t.match(T);for(e=0,n=a.length;e<n;e++)P[a[e]]?a[e]=P[a[e]]:a[e]=(r=a[e]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(e){var r,i="";for(r=0;r<n;r++)i+=M(a[r])?a[r].call(e,t):a[r];return i}}(e),N[e](t)):t.localeData().invalidDate()}function F(t,e){var n=5;function r(t){return e.longDateFormat(t)||t}for(A.lastIndex=0;n>=0&&A.test(t);)t=t.replace(A,r),A.lastIndex=0,n-=1;return t}var W={};function L(t,e){var n=t.toLowerCase();W[n]=W[n+"s"]=W[e]=t}function H(t){return"string"==typeof t?W[t]||W[t.toLowerCase()]:void 0}function I(t){var e,n,r={};for(n in t)o(t,n)&&(e=H(n))&&(r[e]=t[n]);return r}var U={};function J(t,e){U[t]=e}function z(t){return t%4==0&&t%100!=0||t%400==0}function G(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function V(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=G(e)),n}function B(t,e){return function(n){return null!=n?(Z(this,t,n),r.updateOffset(this,e),this):K(this,t)}}function K(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Z(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&z(t.year())&&1===t.month()&&29===t.date()?(n=V(n),t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),wt(n,t.month()))):t._d["set"+(t._isUTC?"UTC":"")+e](n))}var Q,q=/\d/,X=/\d\d/,$=/\d{3}/,tt=/\d{4}/,et=/[+-]?\d{6}/,nt=/\d\d?/,rt=/\d\d\d\d?/,at=/\d\d\d\d\d\d?/,it=/\d{1,3}/,ot=/\d{1,4}/,st=/[+-]?\d{1,6}/,ut=/\d+/,ct=/[+-]?\d+/,lt=/Z|[+-]\d\d:?\d\d/gi,ht=/Z|[+-]\d\d(?::?\d\d)?/gi,dt=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function ft(t,e,n){Q[t]=M(e)?e:function(t,r){return t&&n?n:e}}function pt(t,e){return o(Q,t)?Q[t](e._strict,e._locale):new RegExp(mt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,r,a){return e||n||r||a}))))}function mt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}Q={};var yt,gt={};function _t(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),c(e)&&(r=function(t,n){n[e]=V(t)}),n=0;n<t.length;n++)gt[t[n]]=r}function vt(t,e){_t(t,(function(t,n,r,a){r._w=r._w||{},e(t,r._w,r,a)}))}function bt(t,e,n){null!=e&&o(gt,t)&&gt[t](e,n._a,n,t)}function wt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n,r=(e%(n=12)+n)%n;return t+=(e-r)/12,1===r?z(t)?29:28:31-r%7%2}yt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},E("M",["MM",2],"Mo",(function(){return this.month()+1})),E("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),E("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),L("month","M"),J("month",8),ft("M",nt),ft("MM",nt,X),ft("MMM",(function(t,e){return e.monthsShortRegex(t)})),ft("MMMM",(function(t,e){return e.monthsRegex(t)})),_t(["M","MM"],(function(t,e){e[1]=V(t)-1})),_t(["MMM","MMMM"],(function(t,e,n,r){var a=n._locale.monthsParse(t,r,n._strict);null!=a?e[1]=a:p(n).invalidMonth=t}));var kt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ot="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),xt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Dt=dt,St=dt;function Mt(t,e,n){var r,a,i,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)i=f([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(a=yt.call(this._shortMonthsParse,o))?a:null:-1!==(a=yt.call(this._longMonthsParse,o))?a:null:"MMM"===e?-1!==(a=yt.call(this._shortMonthsParse,o))||-1!==(a=yt.call(this._longMonthsParse,o))?a:null:-1!==(a=yt.call(this._longMonthsParse,o))||-1!==(a=yt.call(this._shortMonthsParse,o))?a:null}function jt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=V(e);else if(!c(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),wt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Yt(t){return null!=t?(jt(this,t),r.updateOffset(this,!0),this):K(this,"Month")}function Ct(){function t(t,e){return e.length-t.length}var e,n,r=[],a=[],i=[];for(e=0;e<12;e++)n=f([2e3,e]),r.push(this.monthsShort(n,"")),a.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(r.sort(t),a.sort(t),i.sort(t),e=0;e<12;e++)r[e]=mt(r[e]),a[e]=mt(a[e]);for(e=0;e<24;e++)i[e]=mt(i[e]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Tt(t){return z(t)?366:365}E("Y",0,0,(function(){var t=this.year();return t<=9999?C(t,4):"+"+t})),E(0,["YY",2],0,(function(){return this.year()%100})),E(0,["YYYY",4],0,"year"),E(0,["YYYYY",5],0,"year"),E(0,["YYYYYY",6,!0],0,"year"),L("year","y"),J("year",1),ft("Y",ct),ft("YY",nt,X),ft("YYYY",ot,tt),ft("YYYYY",st,et),ft("YYYYYY",st,et),_t(["YYYYY","YYYYYY"],0),_t("YYYY",(function(t,e){e[0]=2===t.length?r.parseTwoDigitYear(t):V(t)})),_t("YY",(function(t,e){e[0]=r.parseTwoDigitYear(t)})),_t("Y",(function(t,e){e[0]=parseInt(t,10)})),r.parseTwoDigitYear=function(t){return V(t)+(V(t)>68?1900:2e3)};var At=B("FullYear",!0);function Nt(t,e,n,r,a,i,o){var s;return t<100&&t>=0?(s=new Date(t+400,e,n,r,a,i,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,a,i,o),s}function Pt(t){var e,n;return t<100&&t>=0?((n=Array.prototype.slice.call(arguments))[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)):e=new Date(Date.UTC.apply(null,arguments)),e}function Et(t,e,n){var r=7+e-n;return-(7+Pt(t,0,r).getUTCDay()-e)%7+r-1}function Rt(t,e,n,r,a){var i,o,s=1+7*(e-1)+(7+n-r)%7+Et(t,r,a);return s<=0?o=Tt(i=t-1)+s:s>Tt(t)?(i=t+1,o=s-Tt(t)):(i=t,o=s),{year:i,dayOfYear:o}}function Ft(t,e,n){var r,a,i=Et(t.year(),e,n),o=Math.floor((t.dayOfYear()-i-1)/7)+1;return o<1?r=o+Wt(a=t.year()-1,e,n):o>Wt(t.year(),e,n)?(r=o-Wt(t.year(),e,n),a=t.year()+1):(a=t.year(),r=o),{week:r,year:a}}function Wt(t,e,n){var r=Et(t,e,n),a=Et(t+1,e,n);return(Tt(t)-r+a)/7}function Lt(t,e){return t.slice(e,7).concat(t.slice(0,e))}E("w",["ww",2],"wo","week"),E("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),J("week",5),J("isoWeek",5),ft("w",nt),ft("ww",nt,X),ft("W",nt),ft("WW",nt,X),vt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=V(t)})),E("d",0,"do","day"),E("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),E("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),E("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),E("e",0,0,"weekday"),E("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),J("day",11),J("weekday",11),J("isoWeekday",11),ft("d",nt),ft("e",nt),ft("E",nt),ft("dd",(function(t,e){return e.weekdaysMinRegex(t)})),ft("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),ft("dddd",(function(t,e){return e.weekdaysRegex(t)})),vt(["dd","ddd","dddd"],(function(t,e,n,r){var a=n._locale.weekdaysParse(t,r,n._strict);null!=a?e.d=a:p(n).invalidWeekday=t})),vt(["d","e","E"],(function(t,e,n,r){e[r]=V(t)}));var Ht="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),It="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ut="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Jt=dt,zt=dt,Gt=dt;function Vt(t,e,n){var r,a,i,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=f([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(a=yt.call(this._weekdaysParse,o))?a:null:"ddd"===e?-1!==(a=yt.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=yt.call(this._minWeekdaysParse,o))?a:null:"dddd"===e?-1!==(a=yt.call(this._weekdaysParse,o))||-1!==(a=yt.call(this._shortWeekdaysParse,o))||-1!==(a=yt.call(this._minWeekdaysParse,o))?a:null:"ddd"===e?-1!==(a=yt.call(this._shortWeekdaysParse,o))||-1!==(a=yt.call(this._weekdaysParse,o))||-1!==(a=yt.call(this._minWeekdaysParse,o))?a:null:-1!==(a=yt.call(this._minWeekdaysParse,o))||-1!==(a=yt.call(this._weekdaysParse,o))||-1!==(a=yt.call(this._shortWeekdaysParse,o))?a:null}function Bt(){function t(t,e){return e.length-t.length}var e,n,r,a,i,o=[],s=[],u=[],c=[];for(e=0;e<7;e++)n=f([2e3,1]).day(e),r=mt(this.weekdaysMin(n,"")),a=mt(this.weekdaysShort(n,"")),i=mt(this.weekdays(n,"")),o.push(r),s.push(a),u.push(i),c.push(r),c.push(a),c.push(i);o.sort(t),s.sort(t),u.sort(t),c.sort(t),this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Kt(){return this.hours()%12||12}function Zt(t,e){E(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Qt(t,e){return e._meridiemParse}E("H",["HH",2],0,"hour"),E("h",["hh",2],0,Kt),E("k",["kk",2],0,(function(){return this.hours()||24})),E("hmm",0,0,(function(){return""+Kt.apply(this)+C(this.minutes(),2)})),E("hmmss",0,0,(function(){return""+Kt.apply(this)+C(this.minutes(),2)+C(this.seconds(),2)})),E("Hmm",0,0,(function(){return""+this.hours()+C(this.minutes(),2)})),E("Hmmss",0,0,(function(){return""+this.hours()+C(this.minutes(),2)+C(this.seconds(),2)})),Zt("a",!0),Zt("A",!1),L("hour","h"),J("hour",13),ft("a",Qt),ft("A",Qt),ft("H",nt),ft("h",nt),ft("k",nt),ft("HH",nt,X),ft("hh",nt,X),ft("kk",nt,X),ft("hmm",rt),ft("hmmss",at),ft("Hmm",rt),ft("Hmmss",at),_t(["H","HH"],3),_t(["k","kk"],(function(t,e,n){var r=V(t);e[3]=24===r?0:r})),_t(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),_t(["h","hh"],(function(t,e,n){e[3]=V(t),p(n).bigHour=!0})),_t("hmm",(function(t,e,n){var r=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r)),p(n).bigHour=!0})),_t("hmmss",(function(t,e,n){var r=t.length-4,a=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r,2)),e[5]=V(t.substr(a)),p(n).bigHour=!0})),_t("Hmm",(function(t,e,n){var r=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r))})),_t("Hmmss",(function(t,e,n){var r=t.length-4,a=t.length-2;e[3]=V(t.substr(0,r)),e[4]=V(t.substr(r,2)),e[5]=V(t.substr(a))}));var qt,Xt=B("Hours",!0),$t={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:kt,monthsShort:Ot,week:{dow:0,doy:6},weekdays:Ht,weekdaysMin:Ut,weekdaysShort:It,meridiemParse:/[ap]\.?m?\.?/i},te={},ee={};function ne(t,e){var n,r=Math.min(t.length,e.length);for(n=0;n<r;n+=1)if(t[n]!==e[n])return n;return r}function re(t){return t?t.toLowerCase().replace("_","-"):t}function ae(e){var n=null;if(void 0===te[e]&&void 0!==t&&t&&t.exports)try{n=qt._abbr,function(){var t=new Error("Cannot find module 'undefined'");throw t.code="MODULE_NOT_FOUND",t}(),ie(n)}catch(r){te[e]=null}return te[e]}function ie(t,e){var n;return t&&((n=u(e)?se(t):oe(t,e))?qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),qt._abbr}function oe(t,e){if(null!==e){var n,r=$t;if(e.abbr=t,null!=te[t])S("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=te[t]._config;else if(null!=e.parentLocale)if(null!=te[e.parentLocale])r=te[e.parentLocale]._config;else{if(null==(n=ae(e.parentLocale)))return ee[e.parentLocale]||(ee[e.parentLocale]=[]),ee[e.parentLocale].push({name:t,config:e}),null;r=n._config}return te[t]=new Y(j(r,e)),ee[t]&&ee[t].forEach((function(t){oe(t.name,t.config)})),ie(t),te[t]}return delete te[t],null}function se(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return qt;if(!a(t)){if(e=ae(t))return e;t=[t]}return function(t){for(var e,n,r,a,i=0;i<t.length;){for(e=(a=re(t[i]).split("-")).length,n=(n=re(t[i+1]))?n.split("-"):null;e>0;){if(r=ae(a.slice(0,e).join("-")))return r;if(n&&n.length>=e&&ne(a,n)>=e-1)break;e--}i++}return qt}(t)}function ue(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>wt(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,p(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),p(t)._overflowWeeks&&-1===e&&(e=7),p(t)._overflowWeekday&&-1===e&&(e=8),p(t).overflow=e),t}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,le=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/Z|[+-]\d\d(?::?\d\d)?/,de=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],fe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pe=/^\/?Date\((-?\d+)/i,me=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ye={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ge(t){var e,n,r,a,i,o,s=t._i,u=ce.exec(s)||le.exec(s);if(u){for(p(t).iso=!0,e=0,n=de.length;e<n;e++)if(de[e][1].exec(u[1])){a=de[e][0],r=!1!==de[e][2];break}if(null==a)return void(t._isValid=!1);if(u[3]){for(e=0,n=fe.length;e<n;e++)if(fe[e][1].exec(u[3])){i=(u[2]||" ")+fe[e][0];break}if(null==i)return void(t._isValid=!1)}if(!r&&null!=i)return void(t._isValid=!1);if(u[4]){if(!he.exec(u[4]))return void(t._isValid=!1);o="Z"}t._f=a+(i||"")+(o||""),ke(t)}else t._isValid=!1}function _e(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}function ve(t){var e,n,r,a,i,o,s,u,c=me.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(c){if(n=c[4],r=c[3],a=c[2],i=c[5],o=c[6],s=c[7],u=[_e(n),Ot.indexOf(r),parseInt(a,10),parseInt(i,10),parseInt(o,10)],s&&u.push(parseInt(s,10)),e=u,!function(t,e,n){return!t||It.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(p(n).weekdayMismatch=!0,n._isValid=!1,!1)}(c[1],e,t))return;t._a=e,t._tzm=function(t,e,n){if(t)return ye[t];if(e)return 0;var r=parseInt(n,10),a=r%100;return(r-a)/100*60+a}(c[8],c[9],c[10]),t._d=Pt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),p(t).rfc2822=!0}else t._isValid=!1}function be(t,e,n){return null!=t?t:null!=e?e:n}function we(t){var e,n,a,i,o,s=[];if(!t._d){for(a=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,r,a,i,o,s,u,c;null!=(e=t._w).GG||null!=e.W||null!=e.E?(i=1,o=4,n=be(e.GG,t._a[0],Ft(De(),1,4).year),r=be(e.W,1),((a=be(e.E,1))<1||a>7)&&(u=!0)):(i=t._locale._week.dow,o=t._locale._week.doy,c=Ft(De(),i,o),n=be(e.gg,t._a[0],c.year),r=be(e.w,c.week),null!=e.d?((a=e.d)<0||a>6)&&(u=!0):null!=e.e?(a=e.e+i,(e.e<0||e.e>6)&&(u=!0)):a=i),r<1||r>Wt(n,i,o)?p(t)._overflowWeeks=!0:null!=u?p(t)._overflowWeekday=!0:(s=Rt(n,r,a,i,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=be(t._a[0],a[0]),(t._dayOfYear>Tt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Pt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=a[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Pt:Nt).apply(null,s),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(p(t).weekdayMismatch=!0)}}function ke(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],p(t).empty=!0;var e,n,a,i,o,s,u=""+t._i,c=u.length,l=0;for(a=F(t._f,t._locale).match(T)||[],e=0;e<a.length;e++)i=a[e],(n=(u.match(pt(i,t))||[])[0])&&((o=u.substr(0,u.indexOf(n))).length>0&&p(t).unusedInput.push(o),u=u.slice(u.indexOf(n)+n.length),l+=n.length),P[i]?(n?p(t).empty=!1:p(t).unusedTokens.push(i),bt(i,n,t)):t._strict&&!n&&p(t).unusedTokens.push(i);p(t).charsLeftOver=c-l,u.length>0&&p(t).unusedInput.push(u),t._a[3]<=12&&!0===p(t).bigHour&&t._a[3]>0&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((r=t.isPM(n))&&e<12&&(e+=12),r||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),null!==(s=p(t).era)&&(t._a[0]=t._locale.erasConvertYear(s,t._a[0])),we(t),ue(t)}else ve(t);else ge(t)}function Oe(t){var e=t._i,n=t._f;return t._locale=t._locale||se(t._l),null===e||void 0===n&&""===e?y({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),w(e)?new b(ue(e)):(l(e)?t._d=e:a(n)?function(t){var e,n,r,a,i,o,s=!1;if(0===t._f.length)return p(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;a<t._f.length;a++)i=0,o=!1,e=v({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],ke(e),m(e)&&(o=!0),i+=p(e).charsLeftOver,i+=10*p(e).unusedTokens.length,p(e).score=i,s?i<r&&(r=i,n=e):(null==r||i<r||o)&&(r=i,n=e,o&&(s=!0));d(t,n||e)}(t):n?ke(t):function(t){var e=t._i;u(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=pe.exec(t._i);null===e?(ge(t),!1===t._isValid&&(delete t._isValid,ve(t),!1===t._isValid&&(delete t._isValid,t._strict?t._isValid=!1:r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):a(e)?(t._a=h(e.slice(0),(function(t){return parseInt(t,10)})),we(t)):i(e)?function(t){if(!t._d){var e=I(t._i),n=void 0===e.day?e.date:e.day;t._a=h([e.year,e.month,n,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),we(t)}}(t):c(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),m(t)||(t._d=null),t))}function xe(t,e,n,r,o){var u,c={};return!0!==e&&!1!==e||(r=e,e=void 0),!0!==n&&!1!==n||(r=n,n=void 0),(i(t)&&s(t)||a(t)&&0===t.length)&&(t=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=o,c._l=n,c._i=t,c._f=e,c._strict=r,(u=new b(ue(Oe(c))))._nextDay&&(u.add(1,"d"),u._nextDay=void 0),u}function De(t,e,n,r){return xe(t,e,n,r,!1)}r.createFromInputFallback=O("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Se=O("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=De.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:y()})),Me=O("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=De.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:y()}));function je(t,e){var n,r;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return De();for(n=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](n)||(n=e[r]);return n}var Ye=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ce(t){var e=I(t),n=e.year||0,r=e.quarter||0,a=e.month||0,i=e.week||e.isoWeek||0,s=e.day||0,u=e.hour||0,c=e.minute||0,l=e.second||0,h=e.millisecond||0;this._isValid=function(t){var e,n,r=!1;for(e in t)if(o(t,e)&&(-1===yt.call(Ye,e)||null!=t[e]&&isNaN(t[e])))return!1;for(n=0;n<Ye.length;++n)if(t[Ye[n]]){if(r)return!1;parseFloat(t[Ye[n]])!==V(t[Ye[n]])&&(r=!0)}return!0}(e),this._milliseconds=+h+1e3*l+6e4*c+1e3*u*60*60,this._days=+s+7*i,this._months=+a+3*r+12*n,this._data={},this._locale=se(),this._bubble()}function Te(t){return t instanceof Ce}function Ae(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ne(t,e){E(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+C(~~(t/60),2)+e+C(~~t%60,2)}))}Ne("Z",":"),Ne("ZZ",""),ft("Z",ht),ft("ZZ",ht),_t(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=Ee(ht,t)}));var Pe=/([\+\-]|\d\d)/gi;function Ee(t,e){var n,r,a=(e||"").match(t);return null===a?null:0===(r=60*(n=((a[a.length-1]||[])+"").match(Pe)||["-",0,0])[1]+V(n[2]))?0:"+"===n[0]?r:-r}function Re(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(w(t)||l(t)?t.valueOf():De(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):De(t).local()}function Fe(t){return-Math.round(t._d.getTimezoneOffset())}function We(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Le=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,He=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ie(t,e){var n,r,a,i,s,u,l=t,h=null;return Te(t)?l={ms:t._milliseconds,d:t._days,M:t._months}:c(t)||!isNaN(+t)?(l={},e?l[e]=+t:l.milliseconds=+t):(h=Le.exec(t))?(n="-"===h[1]?-1:1,l={y:0,d:V(h[2])*n,h:V(h[3])*n,m:V(h[4])*n,s:V(h[5])*n,ms:V(Ae(1e3*h[6]))*n}):(h=He.exec(t))?(n="-"===h[1]?-1:1,l={y:Ue(h[2],n),M:Ue(h[3],n),w:Ue(h[4],n),d:Ue(h[5],n),h:Ue(h[6],n),m:Ue(h[7],n),s:Ue(h[8],n)}):null==l?l={}:"object"==typeof l&&("from"in l||"to"in l)&&(i=De(l.from),s=De(l.to),a=i.isValid()&&s.isValid()?(s=Re(s,i),i.isBefore(s)?u=Je(i,s):((u=Je(s,i)).milliseconds=-u.milliseconds,u.months=-u.months),u):{milliseconds:0,months:0},(l={}).ms=a.milliseconds,l.M=a.months),r=new Ce(l),Te(t)&&o(t,"_locale")&&(r._locale=t._locale),Te(t)&&o(t,"_isValid")&&(r._isValid=t._isValid),r}function Ue(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Je(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function ze(t,e){return function(n,r){var a;return null===r||isNaN(+r)||(S(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),a=n,n=r,r=a),Ge(this,Ie(n,r),t),this}}function Ge(t,e,n,a){var i=e._milliseconds,o=Ae(e._days),s=Ae(e._months);t.isValid()&&(a=null==a||a,s&&jt(t,K(t,"Month")+s*n),o&&Z(t,"Date",K(t,"Date")+o*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,o||s))}Ie.fn=Ce.prototype,Ie.invalid=function(){return Ie(NaN)};var Ve=ze(1,"add"),Be=ze(-1,"subtract");function Ke(t){return"string"==typeof t||t instanceof String}function Ze(t){return w(t)||l(t)||Ke(t)||c(t)||function(t){var e=a(t),n=!1;return e&&(n=0===t.filter((function(e){return!c(e)&&Ke(t)})).length),e&&n}(t)||function(t){var e,n,r=i(t)&&!s(t),a=!1,u=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(e=0;e<u.length;e+=1)n=u[e],a=a||o(t,n);return r&&a}(t)||null==t}function Qe(t){var e,n=i(t)&&!s(t),r=!1,a=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(e=0;e<a.length;e+=1)r=r||o(t,a[e]);return n&&r}function qe(t,e){if(t.date()<e.date())return-qe(e,t);var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,"months");return-(n+(e-r<0?(e-r)/(r-t.clone().add(n-1,"months")):(e-r)/(t.clone().add(n+1,"months")-r)))||0}function Xe(t){var e;return void 0===t?this._locale._abbr:(null!=(e=se(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var $e=O("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function tn(){return this._locale}function en(t,e){return(t%e+e)%e}function nn(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-126227808e5:new Date(t,e,n).valueOf()}function rn(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-126227808e5:Date.UTC(t,e,n)}function an(t,e){return e.erasAbbrRegex(t)}function on(){var t,e,n=[],r=[],a=[],i=[],o=this.eras();for(t=0,e=o.length;t<e;++t)r.push(mt(o[t].name)),n.push(mt(o[t].abbr)),a.push(mt(o[t].narrow)),i.push(mt(o[t].name)),i.push(mt(o[t].abbr)),i.push(mt(o[t].narrow));this._erasRegex=new RegExp("^("+i.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+r.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+n.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+a.join("|")+")","i")}function sn(t,e){E(0,[t,t.length],0,e)}function un(t,e,n,r,a){var i;return null==t?Ft(this,r,a).year:(e>(i=Wt(t,r,a))&&(e=i),cn.call(this,t,e,n,r,a))}function cn(t,e,n,r,a){var i=Rt(t,e,n,r,a),o=Pt(i.year,0,i.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}E("N",0,0,"eraAbbr"),E("NN",0,0,"eraAbbr"),E("NNN",0,0,"eraAbbr"),E("NNNN",0,0,"eraName"),E("NNNNN",0,0,"eraNarrow"),E("y",["y",1],"yo","eraYear"),E("y",["yy",2],0,"eraYear"),E("y",["yyy",3],0,"eraYear"),E("y",["yyyy",4],0,"eraYear"),ft("N",an),ft("NN",an),ft("NNN",an),ft("NNNN",(function(t,e){return e.erasNameRegex(t)})),ft("NNNNN",(function(t,e){return e.erasNarrowRegex(t)})),_t(["N","NN","NNN","NNNN","NNNNN"],(function(t,e,n,r){var a=n._locale.erasParse(t,r,n._strict);a?p(n).era=a:p(n).invalidEra=t})),ft("y",ut),ft("yy",ut),ft("yyy",ut),ft("yyyy",ut),ft("yo",(function(t,e){return e._eraYearOrdinalRegex||ut})),_t(["y","yy","yyy","yyyy"],0),_t(["yo"],(function(t,e,n,r){var a;n._locale._eraYearOrdinalRegex&&(a=t.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?e[0]=n._locale.eraYearOrdinalParse(t,a):e[0]=parseInt(t,10)})),E(0,["gg",2],0,(function(){return this.weekYear()%100})),E(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),sn("gggg","weekYear"),sn("ggggg","weekYear"),sn("GGGG","isoWeekYear"),sn("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),J("weekYear",1),J("isoWeekYear",1),ft("G",ct),ft("g",ct),ft("GG",nt,X),ft("gg",nt,X),ft("GGGG",ot,tt),ft("gggg",ot,tt),ft("GGGGG",st,et),ft("ggggg",st,et),vt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,r){e[r.substr(0,2)]=V(t)})),vt(["gg","GG"],(function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)})),E("Q",0,"Qo","quarter"),L("quarter","Q"),J("quarter",7),ft("Q",q),_t("Q",(function(t,e){e[1]=3*(V(t)-1)})),E("D",["DD",2],"Do","date"),L("date","D"),J("date",9),ft("D",nt),ft("DD",nt,X),ft("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),_t(["D","DD"],2),_t("Do",(function(t,e){e[2]=V(t.match(nt)[0])}));var ln=B("Date",!0);E("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),J("dayOfYear",4),ft("DDD",it),ft("DDDD",$),_t(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=V(t)})),E("m",["mm",2],0,"minute"),L("minute","m"),J("minute",14),ft("m",nt),ft("mm",nt,X),_t(["m","mm"],4);var hn=B("Minutes",!1);E("s",["ss",2],0,"second"),L("second","s"),J("second",15),ft("s",nt),ft("ss",nt,X),_t(["s","ss"],5);var dn,fn,pn=B("Seconds",!1);for(E("S",0,0,(function(){return~~(this.millisecond()/100)})),E(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),E(0,["SSS",3],0,"millisecond"),E(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),E(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),E(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),E(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),E(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),E(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),L("millisecond","ms"),J("millisecond",16),ft("S",it,q),ft("SS",it,X),ft("SSS",it,$),dn="SSSS";dn.length<=9;dn+="S")ft(dn,ut);function mn(t,e){e[6]=V(1e3*("0."+t))}for(dn="S";dn.length<=9;dn+="S")_t(dn,mn);fn=B("Milliseconds",!1),E("z",0,0,"zoneAbbr"),E("zz",0,0,"zoneName");var yn=b.prototype;function gn(t){return t}yn.add=Ve,yn.calendar=function(t,e){1===arguments.length&&(Ze(arguments[0])?(t=arguments[0],e=void 0):Qe(arguments[0])&&(e=arguments[0],t=void 0));var n=t||De(),a=Re(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",o=e&&(M(e[i])?e[i].call(this,n):e[i]);return this.format(o||this.localeData().calendar(i,this,De(n)))},yn.clone=function(){return new b(this)},yn.diff=function(t,e,n){var r,a,i;if(!this.isValid())return NaN;if(!(r=Re(t,this)).isValid())return NaN;switch(a=6e4*(r.utcOffset()-this.utcOffset()),e=H(e)){case"year":i=qe(this,r)/12;break;case"month":i=qe(this,r);break;case"quarter":i=qe(this,r)/3;break;case"second":i=(this-r)/1e3;break;case"minute":i=(this-r)/6e4;break;case"hour":i=(this-r)/36e5;break;case"day":i=(this-r-a)/864e5;break;case"week":i=(this-r-a)/6048e5;break;default:i=this-r}return n?i:G(i)},yn.endOf=function(t){var e,n;if(void 0===(t=H(t))||"millisecond"===t||!this.isValid())return this;switch(n=this._isUTC?rn:nn,t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-en(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-en(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-en(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},yn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=R(this,t);return this.localeData().postformat(e)},yn.from=function(t,e){return this.isValid()&&(w(t)&&t.isValid()||De(t).isValid())?Ie({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},yn.fromNow=function(t){return this.from(De(),t)},yn.to=function(t,e){return this.isValid()&&(w(t)&&t.isValid()||De(t).isValid())?Ie({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},yn.toNow=function(t){return this.to(De(),t)},yn.get=function(t){return M(this[t=H(t)])?this[t]():this},yn.invalidAt=function(){return p(this).overflow},yn.isAfter=function(t,e){var n=w(t)?t:De(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},yn.isBefore=function(t,e){var n=w(t)?t:De(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},yn.isBetween=function(t,e,n,r){var a=w(t)?t:De(t),i=w(e)?e:De(e);return!!(this.isValid()&&a.isValid()&&i.isValid())&&(("("===(r=r||"()")[0]?this.isAfter(a,n):!this.isBefore(a,n))&&(")"===r[1]?this.isBefore(i,n):!this.isAfter(i,n)))},yn.isSame=function(t,e){var n,r=w(t)?t:De(t);return!(!this.isValid()||!r.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},yn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},yn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},yn.isValid=function(){return m(this)},yn.lang=$e,yn.locale=Xe,yn.localeData=tn,yn.max=Me,yn.min=Se,yn.parsingFlags=function(){return d({},p(this))},yn.set=function(t,e){if("object"==typeof t){var n,r=function(t){var e,n=[];for(e in t)o(t,e)&&n.push({unit:e,priority:U[e]});return n.sort((function(t,e){return t.priority-e.priority})),n}(t=I(t));for(n=0;n<r.length;n++)this[r[n].unit](t[r[n].unit])}else if(M(this[t=H(t)]))return this[t](e);return this},yn.startOf=function(t){var e,n;if(void 0===(t=H(t))||"millisecond"===t||!this.isValid())return this;switch(n=this._isUTC?rn:nn,t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=en(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=en(e,6e4);break;case"second":e=this._d.valueOf(),e-=en(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},yn.subtract=Be,yn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},yn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},yn.toDate=function(){return new Date(this.valueOf())},yn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||n.year()>9999?R(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):M(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",R(n,"Z")):R(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},yn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t,e,n,r="moment",a="";return this.isLocal()||(r=0===this.utcOffset()?"moment.utc":"moment.parseZone",a="Z"),t="["+r+'("]',e=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=a+'[")]',this.format(t+e+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(yn[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),yn.toJSON=function(){return this.isValid()?this.toISOString():null},yn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yn.unix=function(){return Math.floor(this.valueOf()/1e3)},yn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yn.eraName=function(){var t,e,n,r=this.localeData().eras();for(t=0,e=r.length;t<e;++t){if(n=this.startOf("day").valueOf(),r[t].since<=n&&n<=r[t].until)return r[t].name;if(r[t].until<=n&&n<=r[t].since)return r[t].name}return""},yn.eraNarrow=function(){var t,e,n,r=this.localeData().eras();for(t=0,e=r.length;t<e;++t){if(n=this.startOf("day").valueOf(),r[t].since<=n&&n<=r[t].until)return r[t].narrow;if(r[t].until<=n&&n<=r[t].since)return r[t].narrow}return""},yn.eraAbbr=function(){var t,e,n,r=this.localeData().eras();for(t=0,e=r.length;t<e;++t){if(n=this.startOf("day").valueOf(),r[t].since<=n&&n<=r[t].until)return r[t].abbr;if(r[t].until<=n&&n<=r[t].since)return r[t].abbr}return""},yn.eraYear=function(){var t,e,n,a,i=this.localeData().eras();for(t=0,e=i.length;t<e;++t)if(n=i[t].since<=i[t].until?1:-1,a=this.startOf("day").valueOf(),i[t].since<=a&&a<=i[t].until||i[t].until<=a&&a<=i[t].since)return(this.year()-r(i[t].since).year())*n+i[t].offset;return this.year()},yn.year=At,yn.isLeapYear=function(){return z(this.year())},yn.weekYear=function(t){return un.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},yn.isoWeekYear=function(t){return un.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},yn.quarter=yn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},yn.month=Yt,yn.daysInMonth=function(){return wt(this.year(),this.month())},yn.week=yn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},yn.isoWeek=yn.isoWeeks=function(t){var e=Ft(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},yn.weeksInYear=function(){var t=this.localeData()._week;return Wt(this.year(),t.dow,t.doy)},yn.weeksInWeekYear=function(){var t=this.localeData()._week;return Wt(this.weekYear(),t.dow,t.doy)},yn.isoWeeksInYear=function(){return Wt(this.year(),1,4)},yn.isoWeeksInISOWeekYear=function(){return Wt(this.isoWeekYear(),1,4)},yn.date=ln,yn.day=yn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},yn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},yn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},yn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},yn.hour=yn.hours=Xt,yn.minute=yn.minutes=hn,yn.second=yn.seconds=pn,yn.millisecond=yn.milliseconds=fn,yn.utcOffset=function(t,e,n){var a,i=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Ee(ht,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=Fe(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Ge(this,Ie(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Fe(this)},yn.utc=function(t){return this.utcOffset(0,t)},yn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Fe(this),"m")),this},yn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ee(lt,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},yn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?De(t).utcOffset():0,(this.utcOffset()-t)%60==0)},yn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yn.isLocal=function(){return!!this.isValid()&&!this._isUTC},yn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yn.isUtc=We,yn.isUTC=We,yn.zoneAbbr=function(){return this._isUTC?"UTC":""},yn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yn.dates=O("dates accessor is deprecated. Use date instead.",ln),yn.months=O("months accessor is deprecated. Use month instead",Yt),yn.years=O("years accessor is deprecated. Use year instead",At),yn.zone=O("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),yn.isDSTShifted=O("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!u(this._isDSTShifted))return this._isDSTShifted;var t,e={};return v(e,this),(e=Oe(e))._a?(t=e._isUTC?f(e._a):De(e._a),this._isDSTShifted=this.isValid()&&function(t,e,n){var r,a=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),o=0;for(r=0;r<a;r++)(n&&t[r]!==e[r]||!n&&V(t[r])!==V(e[r]))&&o++;return o+i}(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}));var _n=Y.prototype;function vn(t,e,n,r){var a=se(),i=f().set(r,e);return a[n](i,t)}function bn(t,e,n){if(c(t)&&(e=t,t=void 0),t=t||"",null!=e)return vn(t,e,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=vn(t,r,n,"month");return a}function wn(t,e,n,r){"boolean"==typeof t?(c(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,c(e)&&(n=e,e=void 0),e=e||"");var a,i=se(),o=t?i._week.dow:0,s=[];if(null!=n)return vn(e,(n+o)%7,r,"day");for(a=0;a<7;a++)s[a]=vn(e,(a+o)%7,r,"day");return s}_n.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return M(r)?r.call(e,n):r},_n.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.match(T).map((function(t){return"MMMM"===t||"MM"===t||"DD"===t||"dddd"===t?t.slice(1):t})).join(""),this._longDateFormat[t])},_n.invalidDate=function(){return this._invalidDate},_n.ordinal=function(t){return this._ordinal.replace("%d",t)},_n.preparse=gn,_n.postformat=gn,_n.relativeTime=function(t,e,n,r){var a=this._relativeTime[n];return M(a)?a(t,e,n,r):a.replace(/%d/i,t)},_n.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return M(n)?n(e):n.replace(/%s/i,e)},_n.set=function(t){var e,n;for(n in t)o(t,n)&&(M(e=t[n])?this[n]=e:this["_"+n]=e);this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},_n.eras=function(t,e){var n,a,i,o=this._eras||se("en")._eras;for(n=0,a=o.length;n<a;++n){switch(typeof o[n].since){case"string":i=r(o[n].since).startOf("day"),o[n].since=i.valueOf()}switch(typeof o[n].until){case"undefined":o[n].until=1/0;break;case"string":i=r(o[n].until).startOf("day").valueOf(),o[n].until=i.valueOf()}}return o},_n.erasParse=function(t,e,n){var r,a,i,o,s,u=this.eras();for(t=t.toUpperCase(),r=0,a=u.length;r<a;++r)if(i=u[r].name.toUpperCase(),o=u[r].abbr.toUpperCase(),s=u[r].narrow.toUpperCase(),n)switch(e){case"N":case"NN":case"NNN":if(o===t)return u[r];break;case"NNNN":if(i===t)return u[r];break;case"NNNNN":if(s===t)return u[r]}else if([i,o,s].indexOf(t)>=0)return u[r]},_n.erasConvertYear=function(t,e){var n=t.since<=t.until?1:-1;return void 0===e?r(t.since).year():r(t.since).year()+(e-t.offset)*n},_n.erasAbbrRegex=function(t){return o(this,"_erasAbbrRegex")||on.call(this),t?this._erasAbbrRegex:this._erasRegex},_n.erasNameRegex=function(t){return o(this,"_erasNameRegex")||on.call(this),t?this._erasNameRegex:this._erasRegex},_n.erasNarrowRegex=function(t){return o(this,"_erasNarrowRegex")||on.call(this),t?this._erasNarrowRegex:this._erasRegex},_n.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||xt).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},_n.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[xt.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},_n.monthsParse=function(t,e,n){var r,a,i;if(this._monthsParseExact)return Mt.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(a=f([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(i="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[r]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}},_n.monthsRegex=function(t){return this._monthsParseExact?(o(this,"_monthsRegex")||Ct.call(this),t?this._monthsStrictRegex:this._monthsRegex):(o(this,"_monthsRegex")||(this._monthsRegex=St),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},_n.monthsShortRegex=function(t){return this._monthsParseExact?(o(this,"_monthsRegex")||Ct.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(o(this,"_monthsShortRegex")||(this._monthsShortRegex=Dt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},_n.week=function(t){return Ft(t,this._week.dow,this._week.doy).week},_n.firstDayOfYear=function(){return this._week.doy},_n.firstDayOfWeek=function(){return this._week.dow},_n.weekdays=function(t,e){var n=a(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Lt(n,this._week.dow):t?n[t.day()]:n},_n.weekdaysMin=function(t){return!0===t?Lt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},_n.weekdaysShort=function(t){return!0===t?Lt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},_n.weekdaysParse=function(t,e,n){var r,a,i;if(this._weekdaysParseExact)return Vt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(a=f([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[r].test(t))return r;if(n&&"ddd"===e&&this._shortWeekdaysParse[r].test(t))return r;if(n&&"dd"===e&&this._minWeekdaysParse[r].test(t))return r;if(!n&&this._weekdaysParse[r].test(t))return r}},_n.weekdaysRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(o(this,"_weekdaysRegex")||(this._weekdaysRegex=Jt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},_n.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(o(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=zt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},_n.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(o(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Gt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},_n.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},_n.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},ie("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===V(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=O("moment.lang is deprecated. Use moment.locale instead.",ie),r.langData=O("moment.langData is deprecated. Use moment.localeData instead.",se);var kn=Math.abs;function On(t,e,n,r){var a=Ie(e,n);return t._milliseconds+=r*a._milliseconds,t._days+=r*a._days,t._months+=r*a._months,t._bubble()}function xn(t){return t<0?Math.floor(t):Math.ceil(t)}function Dn(t){return 4800*t/146097}function Sn(t){return 146097*t/4800}function Mn(t){return function(){return this.as(t)}}var jn=Mn("ms"),Yn=Mn("s"),Cn=Mn("m"),Tn=Mn("h"),An=Mn("d"),Nn=Mn("w"),Pn=Mn("M"),En=Mn("Q"),Rn=Mn("y");function Fn(t){return function(){return this.isValid()?this._data[t]:NaN}}var Wn=Fn("milliseconds"),Ln=Fn("seconds"),Hn=Fn("minutes"),In=Fn("hours"),Un=Fn("days"),Jn=Fn("months"),zn=Fn("years"),Gn=Math.round,Vn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Bn(t,e,n,r,a){return a.relativeTime(e||1,!!n,t,r)}var Kn=Math.abs;function Zn(t){return(t>0)-(t<0)||+t}function Qn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n,r,a,i,o,s,u=Kn(this._milliseconds)/1e3,c=Kn(this._days),l=Kn(this._months),h=this.asSeconds();return h?(t=G(u/60),e=G(t/60),u%=60,t%=60,n=G(l/12),l%=12,r=u?u.toFixed(3).replace(/\.?0+$/,""):"",a=h<0?"-":"",i=Zn(this._months)!==Zn(h)?"-":"",o=Zn(this._days)!==Zn(h)?"-":"",s=Zn(this._milliseconds)!==Zn(h)?"-":"",a+"P"+(n?i+n+"Y":"")+(l?i+l+"M":"")+(c?o+c+"D":"")+(e||t||u?"T":"")+(e?s+e+"H":"")+(t?s+t+"M":"")+(u?s+r+"S":"")):"P0D"}var qn=Ce.prototype;return qn.isValid=function(){return this._isValid},qn.abs=function(){var t=this._data;return this._milliseconds=kn(this._milliseconds),this._days=kn(this._days),this._months=kn(this._months),t.milliseconds=kn(t.milliseconds),t.seconds=kn(t.seconds),t.minutes=kn(t.minutes),t.hours=kn(t.hours),t.months=kn(t.months),t.years=kn(t.years),this},qn.add=function(t,e){return On(this,t,e,1)},qn.subtract=function(t,e){return On(this,t,e,-1)},qn.as=function(t){if(!this.isValid())return NaN;var e,n,r=this._milliseconds;if("month"===(t=H(t))||"quarter"===t||"year"===t)switch(e=this._days+r/864e5,n=this._months+Dn(e),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(Sn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}},qn.asMilliseconds=jn,qn.asSeconds=Yn,qn.asMinutes=Cn,qn.asHours=Tn,qn.asDays=An,qn.asWeeks=Nn,qn.asMonths=Pn,qn.asQuarters=En,qn.asYears=Rn,qn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*V(this._months/12):NaN},qn._bubble=function(){var t,e,n,r,a,i=this._milliseconds,o=this._days,s=this._months,u=this._data;return i>=0&&o>=0&&s>=0||i<=0&&o<=0&&s<=0||(i+=864e5*xn(Sn(s)+o),o=0,s=0),u.milliseconds=i%1e3,t=G(i/1e3),u.seconds=t%60,e=G(t/60),u.minutes=e%60,n=G(e/60),u.hours=n%24,o+=G(n/24),a=G(Dn(o)),s+=a,o-=xn(Sn(a)),r=G(s/12),s%=12,u.days=o,u.months=s,u.years=r,this},qn.clone=function(){return Ie(this)},qn.get=function(t){return t=H(t),this.isValid()?this[t+"s"]():NaN},qn.milliseconds=Wn,qn.seconds=Ln,qn.minutes=Hn,qn.hours=In,qn.days=Un,qn.weeks=function(){return G(this.days()/7)},qn.months=Jn,qn.years=zn,qn.humanize=function(t,e){if(!this.isValid())return this.localeData().invalidDate();var n,r,a=!1,i=Vn;return"object"==typeof t&&(e=t,t=!1),"boolean"==typeof t&&(a=t),"object"==typeof e&&(i=Object.assign({},Vn,e),null!=e.s&&null==e.ss&&(i.ss=e.s-1)),n=this.localeData(),r=function(t,e,n,r){var a=Ie(t).abs(),i=Gn(a.as("s")),o=Gn(a.as("m")),s=Gn(a.as("h")),u=Gn(a.as("d")),c=Gn(a.as("M")),l=Gn(a.as("w")),h=Gn(a.as("y")),d=i<=n.ss&&["s",i]||i<n.s&&["ss",i]||o<=1&&["m"]||o<n.m&&["mm",o]||s<=1&&["h"]||s<n.h&&["hh",s]||u<=1&&["d"]||u<n.d&&["dd",u];return null!=n.w&&(d=d||l<=1&&["w"]||l<n.w&&["ww",l]),(d=d||c<=1&&["M"]||c<n.M&&["MM",c]||h<=1&&["y"]||["yy",h])[2]=e,d[3]=+t>0,d[4]=r,Bn.apply(null,d)}(this,!a,i,n),a&&(r=n.pastFuture(+this,r)),n.postformat(r)},qn.toISOString=Qn,qn.toString=Qn,qn.toJSON=Qn,qn.locale=Xe,qn.localeData=tn,qn.toIsoString=O("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Qn),qn.lang=$e,E("X",0,0,"unix"),E("x",0,0,"valueOf"),ft("x",ct),ft("X",/[+-]?\d+(\.\d{1,3})?/),_t("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t))})),_t("x",(function(t,e,n){n._d=new Date(V(t))})),r.version="2.27.0",e=De,r.fn=yn,r.min=function(){var t=[].slice.call(arguments,0);return je("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return je("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=f,r.unix=function(t){return De(1e3*t)},r.months=function(t,e){return bn(t,e,"months")},r.isDate=l,r.locale=ie,r.invalid=y,r.duration=Ie,r.isMoment=w,r.weekdays=function(t,e,n){return wn(t,e,n,"weekdays")},r.parseZone=function(){return De.apply(null,arguments).parseZone()},r.localeData=se,r.isDuration=Te,r.monthsShort=function(t,e){return bn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return wn(t,e,n,"weekdaysMin")},r.defineLocale=oe,r.updateLocale=function(t,e){if(null!=e){var n,r,a=$t;null!=te[t]&&null!=te[t].parentLocale?te[t].set(j(te[t]._config,e)):(null!=(r=ae(t))&&(a=r._config),e=j(a,e),null==r&&(e.abbr=t),(n=new Y(e)).parentLocale=te[t],te[t]=n),ie(t)}else null!=te[t]&&(null!=te[t].parentLocale?(te[t]=te[t].parentLocale,t===ie()&&ie(t)):null!=te[t]&&delete te[t]);return te[t]},r.locales=function(){return x(te)},r.weekdaysShort=function(t,e,n){return wn(t,e,n,"weekdaysShort")},r.normalizeUnits=H,r.relativeTimeRounding=function(t){return void 0===t?Gn:"function"==typeof t&&(Gn=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Vn[t]&&(void 0===e?Vn[t]:(Vn[t]=e,"s"===t&&(Vn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=yn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},xYSL:function(t,e){t.exports=function(t,e){return t.has(e)}},y1pI:function(t,e,n){var r=n("ljhN");t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},yGk4:function(t,e,n){var r=n("Cwc5")(n("Kz5y"),"Set");t.exports=r},zZ0H:function(t,e){t.exports=function(t){return t}},zoYe:function(t,e,n){var r=n("nmnc"),a=n("eUgh"),i=n("Z0cm"),o=n("/9aa"),s=r?r.prototype:void 0,u=s?s.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return a(e,t)+"";if(o(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}}}]);
+//# sourceMappingURL=component---src-pages-performance-js-528a44fbfd1bc3044539.js.map
\ No newline at end of file
diff --git a/component---src-pages-performance-js-51cfc654fd38628b84c4.js.map b/component---src-pages-performance-js-528a44fbfd1bc3044539.js.map
similarity index 62%
rename from component---src-pages-performance-js-51cfc654fd38628b84c4.js.map
rename to component---src-pages-performance-js-528a44fbfd1bc3044539.js.map
index 5fe8bfb..02eae0b 100644
--- a/component---src-pages-performance-js-51cfc654fd38628b84c4.js.map
+++ b/component---src-pages-performance-js-528a44fbfd1bc3044539.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/keyBy.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/react-chartjs-2/es/index.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./src/components/lineChart.js","webpack:///./src/components/barChart.js","webpack:///./src/components/performanceCard.js","webpack:///./src/components/testimonials.js","webpack:///./src/pages/performance.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/_baseToString.js"],"names":["assocIndexOf","module","exports","key","this","__data__","baseProperty","basePropertyDeep","isKey","toKey","path","baseGetTag","isObjectLike","value","baseIsArguments","objectProto","Object","prototype","hasOwnProperty","propertyIsEnumerable","isArguments","arguments","call","ListCache","Map","MapCache","data","pairs","length","LARGE_ARRAY_SIZE","push","size","set","setCacheAdd","setCacheHas","SetCache","values","index","add","has","coreJsData","funcToString","Function","toString","func","e","baseGet","object","memoize","resolver","TypeError","memoized","args","apply","cache","get","result","Cache","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","clear","entry","castPath","isArray","isIndex","isLength","hasFunc","stringToPath","Ctor","constructor","undefined","arrayLikeKeys","baseKeys","isArrayLike","map","Array","forEach","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","i","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","isSymbol","reIsDeepProp","reIsPlainProp","type","test","isPrototype","nativeKeys","Symbol","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","offset","isObject","baseIsNative","getValue","stubFalse","freeExports","nodeType","freeModule","Buffer","root","isBuffer","uid","maskSrcKey","exec","keys","IE_PROTO","baseIsEqual","hasIn","isStrictComparable","matchesStrictComparable","srcValue","objValue","COMPARE_PARTIAL_FLAG","memoizeCapped","rePropName","reEscapeChar","string","charCodeAt","replace","match","number","quote","subString","getMapData","Uint8Array","eq","equalArrays","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","other","bitmask","customizer","equalFunc","stack","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","Promise","getNative","baseFor","iteratee","baseEach","collection","setter","accumulator","nativeCreate","freeGlobal","freeSelf","self","predicate","resIndex","isFunction","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","getRawTag","objectToString","defineProperty","WeakMap","baseAssignValue","keyBy","createAggregator","isKeyable","DataView","Set","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","baseForOwn","createBaseEach","enumerable","_chart","defaults","Scatter","Bubble","Polar","Radar","HorizontalBar","Bar","Line","Pie","Doughnut","_react","_interopRequireDefault","_propTypes","_isEqual","_keyBy","obj","__esModule","default","_extends","assign","target","source","_typeof","iterator","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","ownKeys","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","getPrototypeOf","NODE_ENV","ChartComponent","_React$Component","_super","_this","event","chartInstance","_this$props","getDatasetAtEvent","getElementAtEvent","getElementsAtEvent","onElementsClick","element","renderChart","redraw","destroyChart","updateChart","nextProps","_this$props2","options","plugins","legend","height","width","nextData","transformDataProp","shadowDataProp","datasets","saveCurrentDatasets","isDev","usingCustomKeyProvider","datasetKeyProvider","getLabelAsKey","multipleDatasets","shouldWarn","dataset","label","console","error","config","_this2","getCurrentDatasets","d","_this3","memoizeDataProps","helpers","configMerge","currentDatasets","nextDatasets","checkDatasets","currentDatasetsIndexed","next","current","splice","point","pid","otherProps","rest","update","_this$props3","node","defaultProps","destroy","_this$props4","id","createElement","ref","onClick","handleOnClick","Component","oneOfType","isRequired","arrayOf","bool","propName","componentName","controllers","display","position","_default","_React$Component2","_super2","_this4","_ref","_React$Component3","_super3","_this5","_ref2","_React$Component4","_super4","_this6","_ref3","_React$Component5","_super5","_this7","_ref4","_React$Component6","_super6","_this8","_ref5","_React$Component7","_super7","_this9","_ref6","_React$Component8","_super8","_this10","_ref7","_React$Component9","_super9","_this11","_ref8","_React$Component10","_super10","_this12","_ref9","arrayAggregator","baseAggregator","baseIteratee","initializer","n","overArg","global","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","webpackPolyfill","deprecate","paths","children","l","baseIsMatch","getMatchData","matchData","pop","baseTimes","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","createBaseFor","typedArrayTags","baseToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Stack","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","arrayPush","keysFunc","symbolsFunc","stackClear","stackDelete","stackGet","stackHas","stackSet","baseHasIn","hasPath","transform","arg","eachFunc","fromRight","iterable","noCustomizer","freeProcess","types","require","defaultValue","arraySome","cacheHas","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","LineChart","state","lineChartData","render","scales","xAxes","ticks","fontColor","maxTicksLimit","gridLines","color","scaleLabel","labelString","xAxis","yAxes","yAxis","labels","displayLegend","legendPosition","animation","duration","easing","BarChart","barChartData","padding","beginAtZero","PerformanceCard","primary","graphData","heading","chartType","sx","boxShadow","borderRadius","backgroundColor","marginY","marginX","flexDirection","justifyContent","alignItems","fontSize","margin","textAlign","boxShadowBottom","borderBottomRightRadius","borderBottomLeftRadius","borderTop","marginBottom","marginTop","Testimonials","link","gridGap","gridTemplateColumns","gridTemplateRows","boxSizing","fontFamily","fontStyle","lineHeight","textDecoration","fontWeight","href","rel","className","performance","barChartJDK8Startup","barChartJDK8Footprint","lineChartJK8FasterRampupInTheCloud","fill","borderColor","lineChartJK8FootprintDuringLoad","barChartJDK11Startup","barChartJDK11Footprint","lineChartJK11FasterRampupInTheCloud","lineChartJK11FootprintDuringLoad","barChartJDK11QuarkusStartup","barChartJDK11QuarkusFootprint","lineChartJK11QuarkusFasterRampupInTheCloud","barChartJK11QuarkusFootprintDuringLoad","isHome","description","paddingX","paddingTop","paddingBottom","h1","h2","flexWrap","variant","baseGetAllKeys","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseMatches","baseMatchesProperty","identity","property","baseIsEqualDeep","reIsUint","hookCallback","some","hooks","input","hasOwnProp","a","b","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","arr","fn","res","extend","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","t","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","slice","join","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","localeData","formatMoment","expandFormat","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","matched","p1","p2","p3","p4","s","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","names","j","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","isMomentInput","arrayTest","dataTypeTest","item","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","arrayMap","symbolToString"],"mappings":"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CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,IACA,GAEFyhB,gBAAgB,CACd,UACA,cAKRgC,mCAAmC,CACjClD,OAAQ,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MACtDjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,IACA,KACA,KACA,KACA,OACA,KACA,OACA,OACA,KACA,QAGF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,KACA,MACA,MACA,MACA,IACA,MACA,MACA,MACA,KACA,QAEF0jB,MAAM,EACNC,YAAY,UACZlC,gBAAgB,aAItBmC,gCAAgC,CAC9BrD,OAAQ,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAM,KAAM,KAAM,KAAM,MACxDjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF0jB,MAAM,EACNC,YAAY,UACZlC,gBAAgB,aAItBoC,qBAAqB,CACnBtD,OAAQ,CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,IACA,GAEFyhB,gBAAgB,CACd,UACA,cAKRqC,uBAAuB,CACrBvD,OAAQ,CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,GACA,GAEFyhB,gBAAgB,CACd,UACA,cAKRsC,oCAAoC,CAClCxD,OAAQ,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,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","file":"component---src-pages-performance-js-51cfc654fd38628b84c4.js","sourcesContent":["var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n  throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n  throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n  try {\n    if (typeof setTimeout === 'function') {\n      cachedSetTimeout = setTimeout;\n    } else {\n      cachedSetTimeout = defaultSetTimout;\n    }\n  } catch (e) {\n    cachedSetTimeout = defaultSetTimout;\n  }\n\n  try {\n    if (typeof clearTimeout === 'function') {\n      cachedClearTimeout = clearTimeout;\n    } else {\n      cachedClearTimeout = defaultClearTimeout;\n    }\n  } catch (e) {\n    cachedClearTimeout = defaultClearTimeout;\n  }\n})();\n\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    //normal enviroments in sane situations\n    return setTimeout(fun, 0);\n  } // if setTimeout wasn't available but was latter defined\n\n\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e) {\n      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\n\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    //normal enviroments in sane situations\n    return clearTimeout(marker);\n  } // if clearTimeout wasn't available but was latter defined\n\n\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n      return cachedClearTimeout.call(null, marker);\n    } catch (e) {\n      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n      // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n\n  draining = false;\n\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n\n  if (queue.length) {\n    drainQueue();\n  }\n}\n\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n\n    queueIndex = -1;\n    len = queue.length;\n  }\n\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n  var args = new Array(arguments.length - 1);\n\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n\n  queue.push(new Item(fun, args));\n\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\n\nItem.prototype.run = function () {\n  this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n  return [];\n};\n\nprocess.binding = function (name) {\n  throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n  return '/';\n};\n\nprocess.chdir = function (dir) {\n  throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n  return 0;\n};","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n *   { 'dir': 'left', 'code': 97 },\n *   { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n *   return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n  baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Chart\", {\n  enumerable: true,\n  get: function get() {\n    return _chart[\"default\"];\n  }\n});\nexports.defaults = exports.Scatter = exports.Bubble = exports.Polar = exports.Radar = exports.HorizontalBar = exports.Bar = exports.Line = exports.Pie = exports.Doughnut = exports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _chart = _interopRequireDefault(require(\"chart.js\"));\n\nvar _isEqual = _interopRequireDefault(require(\"lodash/isEqual\"));\n\nvar _keyBy = _interopRequireDefault(require(\"lodash/keyBy\"));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nvar NODE_ENV = typeof process !== 'undefined' && process.env && process.env.NODE_ENV;\n\nvar ChartComponent = /*#__PURE__*/function (_React$Component) {\n  _inherits(ChartComponent, _React$Component);\n\n  var _super = _createSuper(ChartComponent);\n\n  function ChartComponent() {\n    var _this;\n\n    _classCallCheck(this, ChartComponent);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleOnClick\", function (event) {\n      var instance = _this.chartInstance;\n      var _this$props = _this.props,\n          getDatasetAtEvent = _this$props.getDatasetAtEvent,\n          getElementAtEvent = _this$props.getElementAtEvent,\n          getElementsAtEvent = _this$props.getElementsAtEvent,\n          onElementsClick = _this$props.onElementsClick;\n      getDatasetAtEvent && getDatasetAtEvent(instance.getDatasetAtEvent(event), event);\n      getElementAtEvent && getElementAtEvent(instance.getElementAtEvent(event), event);\n      getElementsAtEvent && getElementsAtEvent(instance.getElementsAtEvent(event), event);\n      onElementsClick && onElementsClick(instance.getElementsAtEvent(event), event); // Backward compatibility\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (element) {\n      _this.element = element;\n    });\n\n    _this.chartInstance = undefined;\n    return _this;\n  }\n\n  _createClass(ChartComponent, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.renderChart();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (this.props.redraw) {\n        this.destroyChart();\n        this.renderChart();\n        return;\n      }\n\n      this.updateChart();\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var _this$props2 = this.props,\n          redraw = _this$props2.redraw,\n          type = _this$props2.type,\n          options = _this$props2.options,\n          plugins = _this$props2.plugins,\n          legend = _this$props2.legend,\n          height = _this$props2.height,\n          width = _this$props2.width;\n\n      if (nextProps.redraw === true) {\n        return true;\n      }\n\n      if (height !== nextProps.height || width !== nextProps.width) {\n        return true;\n      }\n\n      if (type !== nextProps.type) {\n        return true;\n      }\n\n      if (!(0, _isEqual[\"default\"])(legend, nextProps.legend)) {\n        return true;\n      }\n\n      if (!(0, _isEqual[\"default\"])(options, nextProps.options)) {\n        return true;\n      }\n\n      var nextData = this.transformDataProp(nextProps);\n\n      if (!(0, _isEqual[\"default\"])(this.shadowDataProp, nextData)) {\n        return true;\n      }\n\n      return !(0, _isEqual[\"default\"])(plugins, nextProps.plugins);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.destroyChart();\n    }\n  }, {\n    key: \"transformDataProp\",\n    value: function transformDataProp(props) {\n      var data = props.data;\n\n      if (typeof data == 'function') {\n        var node = this.element;\n        return data(node);\n      } else {\n        return data;\n      }\n    } // Chart.js directly mutates the data.dataset objects by adding _meta proprerty\n    // this makes impossible to compare the current and next data changes\n    // therefore we memoize the data prop while sending a fake to Chart.js for mutation.\n    // see https://github.com/chartjs/Chart.js/blob/master/src/core/core.controller.js#L615-L617\n\n  }, {\n    key: \"memoizeDataProps\",\n    value: function memoizeDataProps() {\n      if (!this.props.data) {\n        return;\n      }\n\n      var data = this.transformDataProp(this.props);\n      this.shadowDataProp = _objectSpread(_objectSpread({}, data), {}, {\n        datasets: data.datasets && data.datasets.map(function (set) {\n          return _objectSpread({}, set);\n        })\n      });\n      this.saveCurrentDatasets(); // to remove the dataset metadata from this chart when the chart is destroyed\n\n      return data;\n    }\n  }, {\n    key: \"checkDatasets\",\n    value: function checkDatasets(datasets) {\n      var isDev = NODE_ENV !== 'production' && NODE_ENV !== 'prod';\n      var usingCustomKeyProvider = this.props.datasetKeyProvider !== ChartComponent.getLabelAsKey;\n      var multipleDatasets = datasets.length > 1;\n\n      if (isDev && multipleDatasets && !usingCustomKeyProvider) {\n        var shouldWarn = false;\n        datasets.forEach(function (dataset) {\n          if (!dataset.label) {\n            shouldWarn = true;\n          }\n        });\n\n        if (shouldWarn) {\n          console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the \"label\" property on each dataset is used. Alternatively, you may provide a \"datasetKeyProvider\" as a prop that returns a unique key.');\n        }\n      }\n    }\n  }, {\n    key: \"getCurrentDatasets\",\n    value: function getCurrentDatasets() {\n      return this.chartInstance && this.chartInstance.config.data && this.chartInstance.config.data.datasets || [];\n    }\n  }, {\n    key: \"saveCurrentDatasets\",\n    value: function saveCurrentDatasets() {\n      var _this2 = this;\n\n      this.datasets = this.datasets || {};\n      var currentDatasets = this.getCurrentDatasets();\n      currentDatasets.forEach(function (d) {\n        _this2.datasets[_this2.props.datasetKeyProvider(d)] = d;\n      });\n    }\n  }, {\n    key: \"updateChart\",\n    value: function updateChart() {\n      var _this3 = this;\n\n      var options = this.props.options;\n      var data = this.memoizeDataProps(this.props);\n      if (!this.chartInstance) return;\n\n      if (options) {\n        this.chartInstance.options = _chart[\"default\"].helpers.configMerge(this.chartInstance.options, options);\n      } // Pipe datasets to chart instance datasets enabling\n      // seamless transitions\n\n\n      var currentDatasets = this.getCurrentDatasets();\n      var nextDatasets = data.datasets || [];\n      this.checkDatasets(currentDatasets);\n      var currentDatasetsIndexed = (0, _keyBy[\"default\"])(currentDatasets, this.props.datasetKeyProvider); // We can safely replace the dataset array, as long as we retain the _meta property\n      // on each dataset.\n\n      this.chartInstance.config.data.datasets = nextDatasets.map(function (next) {\n        var current = currentDatasetsIndexed[_this3.props.datasetKeyProvider(next)];\n\n        if (current && current.type === next.type && next.data) {\n          // Be robust to no data. Relevant for other update mechanisms as in chartjs-plugin-streaming.\n          // The data array must be edited in place. As chart.js adds listeners to it.\n          current.data.splice(next.data.length);\n          next.data.forEach(function (point, pid) {\n            current.data[pid] = next.data[pid];\n          });\n\n          var _data = next.data,\n              otherProps = _objectWithoutProperties(next, [\"data\"]); // Merge properties. Notice a weakness here. If a property is removed\n          // from next, it will be retained by current and never disappears.\n          // Workaround is to set value to null or undefined in next.\n\n\n          return _objectSpread(_objectSpread({}, current), otherProps);\n        } else {\n          return next;\n        }\n      });\n\n      var datasets = data.datasets,\n          rest = _objectWithoutProperties(data, [\"datasets\"]);\n\n      this.chartInstance.config.data = _objectSpread(_objectSpread({}, this.chartInstance.config.data), rest);\n      this.chartInstance.update();\n    }\n  }, {\n    key: \"renderChart\",\n    value: function renderChart() {\n      var _this$props3 = this.props,\n          options = _this$props3.options,\n          legend = _this$props3.legend,\n          type = _this$props3.type,\n          plugins = _this$props3.plugins;\n      var node = this.element;\n      var data = this.memoizeDataProps();\n\n      if (typeof legend !== 'undefined' && !(0, _isEqual[\"default\"])(ChartComponent.defaultProps.legend, legend)) {\n        options.legend = legend;\n      }\n\n      this.chartInstance = new _chart[\"default\"](node, {\n        type: type,\n        data: data,\n        options: options,\n        plugins: plugins\n      });\n    }\n  }, {\n    key: \"destroyChart\",\n    value: function destroyChart() {\n      if (!this.chartInstance) {\n        return;\n      } // Put all of the datasets that have existed in the chart back on the chart\n      // so that the metadata associated with this chart get destroyed.\n      // This allows the datasets to be used in another chart. This can happen,\n      // for example, in a tabbed UI where the chart gets created each time the\n      // tab gets switched to the chart and uses the same data).\n\n\n      this.saveCurrentDatasets();\n      var datasets = Object.values(this.datasets);\n      this.chartInstance.config.data.datasets = datasets;\n      this.chartInstance.destroy();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n          height = _this$props4.height,\n          width = _this$props4.width,\n          id = _this$props4.id;\n      return /*#__PURE__*/_react[\"default\"].createElement(\"canvas\", {\n        ref: this.ref,\n        height: height,\n        width: width,\n        id: id,\n        onClick: this.handleOnClick\n      });\n    }\n  }]);\n\n  return ChartComponent;\n}(_react[\"default\"].Component);\n\n_defineProperty(ChartComponent, \"getLabelAsKey\", function (d) {\n  return d.label;\n});\n\n_defineProperty(ChartComponent, \"propTypes\", {\n  data: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]).isRequired,\n  getDatasetAtEvent: _propTypes[\"default\"].func,\n  getElementAtEvent: _propTypes[\"default\"].func,\n  getElementsAtEvent: _propTypes[\"default\"].func,\n  height: _propTypes[\"default\"].number,\n  legend: _propTypes[\"default\"].object,\n  onElementsClick: _propTypes[\"default\"].func,\n  options: _propTypes[\"default\"].object,\n  plugins: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n  redraw: _propTypes[\"default\"].bool,\n  type: function type(props, propName, componentName) {\n    if (!_chart[\"default\"].controllers[props[propName]]) {\n      return new Error('Invalid chart type `' + props[propName] + '` supplied to' + ' `' + componentName + '`.');\n    }\n  },\n  width: _propTypes[\"default\"].number,\n  datasetKeyProvider: _propTypes[\"default\"].func\n});\n\n_defineProperty(ChartComponent, \"defaultProps\", {\n  legend: {\n    display: true,\n    position: 'bottom'\n  },\n  type: 'doughnut',\n  height: 150,\n  width: 300,\n  redraw: false,\n  options: {},\n  datasetKeyProvider: ChartComponent.getLabelAsKey\n});\n\nvar _default = ChartComponent;\nexports[\"default\"] = _default;\n\nvar Doughnut = /*#__PURE__*/function (_React$Component2) {\n  _inherits(Doughnut, _React$Component2);\n\n  var _super2 = _createSuper(Doughnut);\n\n  function Doughnut() {\n    _classCallCheck(this, Doughnut);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(Doughnut, [{\n    key: \"render\",\n    value: function render() {\n      var _this4 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref) {\n          return _this4.chartInstance = _ref && _ref.chartInstance;\n        },\n        type: \"doughnut\"\n      }));\n    }\n  }]);\n\n  return Doughnut;\n}(_react[\"default\"].Component);\n\nexports.Doughnut = Doughnut;\n\nvar Pie = /*#__PURE__*/function (_React$Component3) {\n  _inherits(Pie, _React$Component3);\n\n  var _super3 = _createSuper(Pie);\n\n  function Pie() {\n    _classCallCheck(this, Pie);\n\n    return _super3.apply(this, arguments);\n  }\n\n  _createClass(Pie, [{\n    key: \"render\",\n    value: function render() {\n      var _this5 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref2) {\n          return _this5.chartInstance = _ref2 && _ref2.chartInstance;\n        },\n        type: \"pie\"\n      }));\n    }\n  }]);\n\n  return Pie;\n}(_react[\"default\"].Component);\n\nexports.Pie = Pie;\n\nvar Line = /*#__PURE__*/function (_React$Component4) {\n  _inherits(Line, _React$Component4);\n\n  var _super4 = _createSuper(Line);\n\n  function Line() {\n    _classCallCheck(this, Line);\n\n    return _super4.apply(this, arguments);\n  }\n\n  _createClass(Line, [{\n    key: \"render\",\n    value: function render() {\n      var _this6 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref3) {\n          return _this6.chartInstance = _ref3 && _ref3.chartInstance;\n        },\n        type: \"line\"\n      }));\n    }\n  }]);\n\n  return Line;\n}(_react[\"default\"].Component);\n\nexports.Line = Line;\n\nvar Bar = /*#__PURE__*/function (_React$Component5) {\n  _inherits(Bar, _React$Component5);\n\n  var _super5 = _createSuper(Bar);\n\n  function Bar() {\n    _classCallCheck(this, Bar);\n\n    return _super5.apply(this, arguments);\n  }\n\n  _createClass(Bar, [{\n    key: \"render\",\n    value: function render() {\n      var _this7 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref4) {\n          return _this7.chartInstance = _ref4 && _ref4.chartInstance;\n        },\n        type: \"bar\"\n      }));\n    }\n  }]);\n\n  return Bar;\n}(_react[\"default\"].Component);\n\nexports.Bar = Bar;\n\nvar HorizontalBar = /*#__PURE__*/function (_React$Component6) {\n  _inherits(HorizontalBar, _React$Component6);\n\n  var _super6 = _createSuper(HorizontalBar);\n\n  function HorizontalBar() {\n    _classCallCheck(this, HorizontalBar);\n\n    return _super6.apply(this, arguments);\n  }\n\n  _createClass(HorizontalBar, [{\n    key: \"render\",\n    value: function render() {\n      var _this8 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref5) {\n          return _this8.chartInstance = _ref5 && _ref5.chartInstance;\n        },\n        type: \"horizontalBar\"\n      }));\n    }\n  }]);\n\n  return HorizontalBar;\n}(_react[\"default\"].Component);\n\nexports.HorizontalBar = HorizontalBar;\n\nvar Radar = /*#__PURE__*/function (_React$Component7) {\n  _inherits(Radar, _React$Component7);\n\n  var _super7 = _createSuper(Radar);\n\n  function Radar() {\n    _classCallCheck(this, Radar);\n\n    return _super7.apply(this, arguments);\n  }\n\n  _createClass(Radar, [{\n    key: \"render\",\n    value: function render() {\n      var _this9 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref6) {\n          return _this9.chartInstance = _ref6 && _ref6.chartInstance;\n        },\n        type: \"radar\"\n      }));\n    }\n  }]);\n\n  return Radar;\n}(_react[\"default\"].Component);\n\nexports.Radar = Radar;\n\nvar Polar = /*#__PURE__*/function (_React$Component8) {\n  _inherits(Polar, _React$Component8);\n\n  var _super8 = _createSuper(Polar);\n\n  function Polar() {\n    _classCallCheck(this, Polar);\n\n    return _super8.apply(this, arguments);\n  }\n\n  _createClass(Polar, [{\n    key: \"render\",\n    value: function render() {\n      var _this10 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref7) {\n          return _this10.chartInstance = _ref7 && _ref7.chartInstance;\n        },\n        type: \"polarArea\"\n      }));\n    }\n  }]);\n\n  return Polar;\n}(_react[\"default\"].Component);\n\nexports.Polar = Polar;\n\nvar Bubble = /*#__PURE__*/function (_React$Component9) {\n  _inherits(Bubble, _React$Component9);\n\n  var _super9 = _createSuper(Bubble);\n\n  function Bubble() {\n    _classCallCheck(this, Bubble);\n\n    return _super9.apply(this, arguments);\n  }\n\n  _createClass(Bubble, [{\n    key: \"render\",\n    value: function render() {\n      var _this11 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref8) {\n          return _this11.chartInstance = _ref8 && _ref8.chartInstance;\n        },\n        type: \"bubble\"\n      }));\n    }\n  }]);\n\n  return Bubble;\n}(_react[\"default\"].Component);\n\nexports.Bubble = Bubble;\n\nvar Scatter = /*#__PURE__*/function (_React$Component10) {\n  _inherits(Scatter, _React$Component10);\n\n  var _super10 = _createSuper(Scatter);\n\n  function Scatter() {\n    _classCallCheck(this, Scatter);\n\n    return _super10.apply(this, arguments);\n  }\n\n  _createClass(Scatter, [{\n    key: \"render\",\n    value: function render() {\n      var _this12 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref9) {\n          return _this12.chartInstance = _ref9 && _ref9.chartInstance;\n        },\n        type: \"scatter\"\n      }));\n    }\n  }]);\n\n  return Scatter;\n}(_react[\"default\"].Component);\n\nexports.Scatter = Scatter;\nvar defaults = _chart[\"default\"].defaults;\nexports.defaults = defaults;","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","import React, {Component} from \"react\";\n\nimport { Line, } from 'react-chartjs-2';\n\nclass LineChart extends Component {\n   state = {\n        lineChartData: this.props.lineChartData,\n    }\n\n    static defaultProps = {\n        displayLegend: true,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Line\n                    data={this.state.lineChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                    \n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }]\n\n                        },\n                        legend:{\n                            labels : {\n                                fontColor: \"white\"\n                            },\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                    }}\n                />\n                \n            </div>\n        )\n    }\n}\n\nexport default LineChart;","import React, {Component} from \"react\";\n\nimport { Bar } from 'react-chartjs-2';\n\nclass BarChart extends Component {\n    state = {\n        barChartData: this.props.barChartData,\n    }\n    \n    static defaultProps = {\n        displayLegend: false,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Bar\n                    data={this.state.barChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: false,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 4,\n                                    padding:2,\n                                    beginAtZero: true\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                }\n                            }]\n\n                        },\n                        legend:{\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                      }}\n                />                \n            </div>\n        )\n    }\n}\n\nexport default BarChart;","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\nimport LineChart from \"../components/lineChart\";\nimport BarChart from \"../components/barChart\";\nconst PerformanceCard = ({ children, primary, graphData, heading, chartType, xAxis, yAxis }) => {\n    if (chartType === \"line\") {\n      return (\n          <div\n            sx={{\n              boxShadow: primary ? \"cardShadow\" : null,\n              borderRadius: \"card\",\n              backgroundColor: \"primary\",\n              color: \"white\",\n              marginY: 5,\n              marginX: 1,\n              width:\"18rem\",\n              display: \"flex\",\n              flexDirection: \"column\",\n              justifyContent: \"center\",\n              alignItems: \"center\",\n            }}\n          >\n            <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1.5rem 0.5rem 1.5rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n            <LineChart lineChartData={graphData} legendPosition=\"bottom\" xAxis={xAxis} yAxis={yAxis}/>\n            <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"0.35rem solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n\n              }}\n            >\n              {children}\n            </div>\n          </div>\n        );\n    } else {\n        return (\n          <div\n            sx={{\n      \n              boxShadow: primary ? \"cardShadow\" : null,\n              borderRadius: \"card\",\n              backgroundColor: \"primary\",\n              color: \"white\",\n              marginY: 5,\n              marginX: 1,\n              width:\"18rem\",\n              display: \"flex\",\n              flexDirection: \"column\",\n              justifyContent: \"center\",\n              alignItems: \"center\",\n            }}\n          >\n            <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1rem 0.5rem 1rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n            <BarChart barChartData={graphData} yAxis={yAxis}/>\n            <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"0.35rem solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n              }}\n            >\n              {children}\n            </div>\n          </div>  \n        );\n    }\n};\n\nexport default PerformanceCard;\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\n\nconst Testimonials = ({ children, source, link }) => {\n    return (\n                \n        <blockquote \n          sx={{\n            display: [\"block\", \"block\", \"block\", \"grid\"],\n            gridGap:'0.5rem',\n            gridTemplateColumns:'repeat(1, 1fr)',\n            gridTemplateRows: \"5rem 1.5rem 1.5rem\",\n            color: \"#0b4237\",\n            boxSizing: \"border-box\",\n            marginBottom:\"2rem\"\n          }}\n        >\n          <p \n            sx={{\n              fontFamily: \"'Gelasio', serif\",\n              fontStyle: \"italic\",\n              fontSize: \"1.3rem\",\n              lineHeight:\"1.5rem\",\n            }}\n          >\n            {children}\n          </p>\n\n          <cite\n            sx={{\n              display: \"flex\",\n              justifyContent: \"flex-start\",\n            }}\n          >\n            <a sx={{\n                color: \"black\",\n                textDecoration: \"none\",           \n                \"&:hover\": {\n                  color: \"#0b4237\",\n                  textDecoration: \"none\",\n                  fontWeight:\"bold\"\n                }\n                }} \n                href={link} rel=\"noopener noreferrer\" target=\"_blank\">{source}&nbsp;<i className=\"fas fa-external-link-alt fa-xs\"></i></a>\n          </cite>\n        </blockquote>\n    );\n}\n\nexport default Testimonials;","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nimport {Component} from \"react\";\n\nimport PerformanceCard from \"../components/performanceCard\";\nimport Testimonials from \"../components/testimonials\";\n\nclass performance extends Component {\n  state = {\n    barChartJDK8Startup:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.58,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    barChartJDK8Footprint:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.34,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    lineChartJK8FasterRampupInTheCloud:{ \n      labels: [0, 150, 300, 450, 600, 750, 900, 1050, 1200, 1350],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            8.5,\n            1064,\n            1063,\n            1133,\n            1188.5,\n            1071,\n            1125.5,\n            1084.5,\n            1095,\n            1104.5,\n          \n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            10.5,\n            529.5,\n            700.5,\n            832.5,\n            796,\n            829.5,\n            698.5,\n            791.5,\n            1017,\n            1175.5,\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n    lineChartJK8FootprintDuringLoad:{ \n      labels: [0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            232,\n            488,\n            505,\n            511,\n            516,\n            517,\n            520,\n            521,\n            521,\n            522\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            563,\n            902,\n            1023,\n            1140,\n            1200,\n            1218,\n            1220,\n            1289,\n            1359,\n            1368\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n    barChartJDK11Startup:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.49,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    barChartJDK11Footprint:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.50,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    lineChartJK11FasterRampupInTheCloud:{ \n      labels: [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            606,\n            2483,\n            2621,\n            2805,\n            2853,\n            2924,\n            3049,\n            3103,\n            3122,\n            3043,\n            3069,\n            3092,\n            3167\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            139,\n            1208,\n            1620,\n            1952,\n            2157,\n            2551,\n            2696,\n            2879,\n            3264,\n            3337,\n            3392,\n            3436,\n            3479\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n    lineChartJK11FootprintDuringLoad:{ \n      labels: [0, 100, 200, 300, 400, 500, 600],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            267,\n            630,\n            674,\n            680,\n            688,\n            688,\n            691,\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            500,\n            786,\n            945,\n            975,\n            985,\n            1001,\n            1011,\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n\n    barChartJDK11QuarkusStartup:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.34,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n\n    barChartJDK11QuarkusFootprint:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.82,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n\n    lineChartJK11QuarkusFasterRampupInTheCloud:{ \n      labels: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            2,\n            4233,\n            4311,\n            4307,\n            4312,\n            4347,\n            4432,\n            4468,\n            4564,\n            4601,\n            4627,\n            4606,\n            4657\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            1,\n            1426,\n            1959,\n            3603,\n            5545,\n            5609,\n            5616,\n            5601,\n            5583,\n            5619,\n            5560,\n            5354,\n            5639\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n\n    barChartJK11QuarkusFootprintDuringLoad:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            147,              \n            178\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n  } \n  \n  render (){\n    return(\n      <Layout isHome={false} title=\"Eclipse OpenJ9 performance\" description=\"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot.\">\n      <section sx={{ backgroundColor: \"#F5F9FC\",  paddingX: \"7%\", paddingTop: \"4rem\", paddingBottom: \"0.1rem\" }}>\n        <Styled.h1 sx={{marginBottom:\"1rem\"}}>Performance Overview</Styled.h1>\n          <Styled.p>\n            Application performance can be measured using many different metrics, including startup time,\n            ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all\n            of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be\n            optimized for different workloads. We regularly test and optimize OpenJ9 performance when running the most popular \n            Java frameworks such as Open Liberty, Quarkus, SpringBoot, and Micronaut. We're proud of our results. \n          </Styled.p>\n      </section>\n\n      <section id=\"openjdk11\"\n        sx={{\n          backgroundColor: \"#F5F9FC\",\n          paddingX: \"7%\",\n          paddingTop: \"0.1rem\",\n          paddingBottom: \"4rem\"\n        }}\n      >\n        <Styled.h2>OpenJDK 11 performance with Eclipse OpenJ9</Styled.h2>\n        <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          OpenJDK 11 with OpenJ9 significantly outperforms HotSpot on Liberty startup, ramp up, and footprint.\n        </Styled.p>\n    \n        \n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"space-around\",\n            flexWrap: \"wrap\"\n          }}\n        >\n          <PerformanceCard graphData={this.state.barChartJDK11Startup} heading=\"51% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative startup time\"> \n            <p>By using shared classes cache and AOT technology, OpenJ9 starts in roughly half the time it takes HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.barChartJDK11Footprint} heading=\"50% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n            <p>After startup, the OpenJ9 footprint is half the size of HotSpot, which makes it ideal for cloud workloads.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK11FasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput (pages/s)\"> \n            <p>OpenJ9 reaches peak throughput much faster than HotSpot making it especially suitable for running short-lived applications.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK11FootprintDuringLoad} heading=\"33% smaller footprint during load\" primary={true} chartType=\"line\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n            <p>Consistent with the footprint results after startup, the OpenJ9 footprint remains much smaller than HotSpot when load is applied.</p>\n          </PerformanceCard>\n        </div>\n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n          }}\n        >\n          <a sx={{\n              variant: \"buttons.secondary\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              textDecoration: \"none\",\n              width:\"16rem\",\n              marginTop:\"7rem\"\n              }} \n              href=\"https://github.com/eclipse/openj9-website/blob/master/benchmark/openjdk11-daytrader7.md\" rel=\"noopener noreferrer\" target=\"_blank\">Show me performance details</a>\n        </div>\n\n        <div\n            sx={{\n                display: \"grid\",\n                gridGap:'3rem',\n                gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n                paddingTop:\"4rem\"\n            }}\n        >\n          <Testimonials source=\"Open Liberty blog\" link=\"https://openliberty.io/blog/2019/10/30/faster-startup-open-liberty.html\">\n            With version 19.0.0.9 of Open Liberty and OpenJ9, Open Liberty managed to cut the startup time to their goal of almost exactly one second.\n          </Testimonials>\n\n          <Testimonials source=\"Payara Enterprise\" link=\"https://blog.payara.fish/faster-payara-micro-startup-times-with-openj9\">\n            Payara found that with datagrid enabled, Payara Micro with class data sharing, booted in about 6 seconds, improving startup time by almost 40%.\n          </Testimonials>\n        </div>\t\n        </section>\n\n        <section id=\"openjdk11quarkus\"\n          sx={{\n            backgroundColor: \"#F5F9FC\",\n            paddingX: \"7%\",\n            paddingTop: \"0.1rem\",\n            paddingBottom: \"4rem\"\n          }}\n        >\n          <Styled.h2>OpenJDK 11 performance with Quarkus and Eclipse OpenJ9</Styled.h2>\n          <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          Using Quarkus with OpenJ9 instead of HotSpot makes Java even more supersonic and subatomic!\n          </Styled.p>\n          \n          <div\n            sx={{\n              display: \"flex\",\n              justifyContent: \"space-around\",\n              flexWrap: \"wrap\"\n            }}\n          >\n            <PerformanceCard graphData={this.state.barChartJDK11QuarkusStartup} heading=\"66% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative startup time\"> \n              <p>Quarkus might be supersonic, but running it with OpenJ9 instead of HotSpot reduces startup time by a further 66%.</p>\n            </PerformanceCard>\n            <PerformanceCard graphData={this.state.barChartJDK11QuarkusFootprint} heading=\"18% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n              <p>The ultra-supersonic startup time comes at some tradeoff to footprint, but OpenJ9 still has an edge over HotSpot.</p>\n            </PerformanceCard>\n            <PerformanceCard graphData={this.state.lineChartJK11QuarkusFasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput (pages/s)\"> \n              <p>For short-lived cloud workloads running on Quarkus, OpenJ9 delivers excellent ramp-up performance compared to HotSpot.</p>\n            </PerformanceCard>\n            <PerformanceCard graphData={this.state.barChartJK11QuarkusFootprintDuringLoad} heading=\"18% smaller footprint during load\" primary={true} chartType=\"bar\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n              <p>When ramp-up completes, as well as getting there faster, OpenJ9 still retains a smaller footprint than HotSpot.</p>\n            </PerformanceCard>\n          </div>\n          <div\n            sx={{\n              display: \"flex\",\n              justifyContent: \"center\",\n            }}\n          >\n            <a sx={{\n                variant: \"buttons.secondary\",\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n                textDecoration: \"none\",\n                width:\"16rem\",\n                marginTop:\"7rem\"\n                }} \n                href=\"https://github.com/eclipse/openj9-website/blob/master/benchmark/quarkus.md\" rel=\"noopener noreferrer\" target=\"_blank\">Show me performance details</a>\n          </div>\n\n          <div\n            sx={{\n                display: \"grid\",\n                gridGap:'3rem',\n                gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n                paddingTop:\"4rem\"\n            }}\n          >\n            <Testimonials source=\"Trendyol Tech blog\" link=\"https://medium.com/trendyol-tech/how-trendyol-jvm-applications-consume-less-memory-in-the-production-environment-87e419dd18a0\">\n              Trendyol Tech found 40% faster startup time and 73 MB less memory footprint when they ran Undertow + Rest + Couchbase Client with OpenJ9.\n            </Testimonials>\n\n            <Testimonials source=\"Graeme Rocher, Micronaut\" link=\"https://twitter.com/graemerocher/status/1090204088065802240?lang=en\">\n              As reported on twitter, Micronautfw startup with OpenJ9 is as fast as Node.js.\n            </Testimonials>\n          </div>\t  \n      </section>\n\n      <section id=\"openjdk8\"\n        sx={{\n          backgroundColor: \"#F5F9FC\",\n          paddingX: \"7%\",\n          paddingTop: \"0.1rem\",\n          paddingBottom: \"4rem\"\n        }}\n      >\n        <Styled.h2>OpenJDK 8 performance with Eclipse OpenJ9</Styled.h2>\n        <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          Testing shows similar results for OpenJDK 8; OpenJ9 demonstrates significantly better performance than OpenJDK 8 with HotSpot\n        </Styled.p>\n    \n        \n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"space-around\",\n            flexWrap: \"wrap\"\n          }}\n        >\n          <PerformanceCard graphData={this.state.barChartJDK8Startup} heading=\"42% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative startup time\"> \n            <p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well,\n              you can reduce startup time by up to 42%.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.barChartJDK8Footprint} heading=\"66% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n            <p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important.\n              Out of the box, the footprint is 66% smaller than HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK8FasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput (pages/s)\"> \n            <p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot.\n              Ideal for short-lived VMs running in the cloud.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK8FootprintDuringLoad} heading=\"63% smaller footprint during load\" primary={true} chartType=\"line\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n            <p>Memory footprint increases rapidly when load is applied. However, at steady state,\n              OpenJ9 consistently used around 63% less physical memory than HotSpot.</p>\n          </PerformanceCard>\n        </div>\n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n          }}\n        >\n          <a sx={{\n              variant: \"buttons.secondary\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              textDecoration: \"none\",\n              width:\"16rem\",\n              marginTop:\"7rem\"\n              }} \n              href=\"https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md\" rel=\"noopener noreferrer\" target=\"_blank\">Show me performance details</a>\n        </div>\n\n        <div\n            sx={{\n                display: \"grid\",\n                gridGap:'3rem',\n                gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n                paddingTop:\"4rem\"\n            }}\n        >\n          <Testimonials source=\"Eclipse Vert.x how-to guide\" link=\"https://how-to.vertx.io/openj9-howto/\">\n            Vert.x found that OpenJ9 was very efficient with respect to memory consumption, without compromising the latency.\n          </Testimonials>\n\n          <Testimonials source=\"AMIS technology blog\" link=\"https://technology.amis.nl/2019/09/03/microservice-framework-startup-time-on-different-jvms-aot-and-jit/\">\n            As reported on the Amis technology blog, when testing a number of JVMs, OpenJDK with OpenJ9 was the fastest to start for every framework.\n          </Testimonials>\n        </div>\t \n      </section>\n    </Layout>\n    )\n  }\n}\n\nexport default performance;\n \n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","//! moment.js\n//! version : 2.27.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n;\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n  'use strict';\n\n  var hookCallback;\n\n  function hooks() {\n    return hookCallback.apply(null, arguments);\n  } // This is done to register the method called with moment()\n  // without creating circular dependencies.\n\n\n  function setHookCallback(callback) {\n    hookCallback = callback;\n  }\n\n  function isArray(input) {\n    return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n  }\n\n  function isObject(input) {\n    // IE8 will treat undefined and null as object if it wasn't for\n    // input != null\n    return input != null && Object.prototype.toString.call(input) === '[object Object]';\n  }\n\n  function hasOwnProp(a, b) {\n    return Object.prototype.hasOwnProperty.call(a, b);\n  }\n\n  function isObjectEmpty(obj) {\n    if (Object.getOwnPropertyNames) {\n      return Object.getOwnPropertyNames(obj).length === 0;\n    } else {\n      var k;\n\n      for (k in obj) {\n        if (hasOwnProp(obj, k)) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n  }\n\n  function isUndefined(input) {\n    return input === void 0;\n  }\n\n  function isNumber(input) {\n    return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n  }\n\n  function isDate(input) {\n    return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n  }\n\n  function map(arr, fn) {\n    var res = [],\n        i;\n\n    for (i = 0; i < arr.length; ++i) {\n      res.push(fn(arr[i], i));\n    }\n\n    return res;\n  }\n\n  function extend(a, b) {\n    for (var i in b) {\n      if (hasOwnProp(b, i)) {\n        a[i] = b[i];\n      }\n    }\n\n    if (hasOwnProp(b, 'toString')) {\n      a.toString = b.toString;\n    }\n\n    if (hasOwnProp(b, 'valueOf')) {\n      a.valueOf = b.valueOf;\n    }\n\n    return a;\n  }\n\n  function createUTC(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, true).utc();\n  }\n\n  function defaultParsingFlags() {\n    // We need to deep clone this object.\n    return {\n      empty: false,\n      unusedTokens: [],\n      unusedInput: [],\n      overflow: -2,\n      charsLeftOver: 0,\n      nullInput: false,\n      invalidEra: null,\n      invalidMonth: null,\n      invalidFormat: false,\n      userInvalidated: false,\n      iso: false,\n      parsedDateParts: [],\n      era: null,\n      meridiem: null,\n      rfc2822: false,\n      weekdayMismatch: false\n    };\n  }\n\n  function getParsingFlags(m) {\n    if (m._pf == null) {\n      m._pf = defaultParsingFlags();\n    }\n\n    return m._pf;\n  }\n\n  var some;\n\n  if (Array.prototype.some) {\n    some = Array.prototype.some;\n  } else {\n    some = function some(fun) {\n      var t = Object(this),\n          len = t.length >>> 0,\n          i;\n\n      for (i = 0; i < len; i++) {\n        if (i in t && fun.call(this, t[i], i, t)) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n  }\n\n  function isValid(m) {\n    if (m._isValid == null) {\n      var flags = getParsingFlags(m),\n          parsedParts = some.call(flags.parsedDateParts, function (i) {\n        return i != null;\n      }),\n          isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n      if (m._strict) {\n        isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n      }\n\n      if (Object.isFrozen == null || !Object.isFrozen(m)) {\n        m._isValid = isNowValid;\n      } else {\n        return isNowValid;\n      }\n    }\n\n    return m._isValid;\n  }\n\n  function createInvalid(flags) {\n    var m = createUTC(NaN);\n\n    if (flags != null) {\n      extend(getParsingFlags(m), flags);\n    } else {\n      getParsingFlags(m).userInvalidated = true;\n    }\n\n    return m;\n  } // Plugins that add properties should also add the key here (null value),\n  // so we can properly clone ourselves.\n\n\n  var momentProperties = hooks.momentProperties = [],\n      updateInProgress = false;\n\n  function copyConfig(to, from) {\n    var i, prop, val;\n\n    if (!isUndefined(from._isAMomentObject)) {\n      to._isAMomentObject = from._isAMomentObject;\n    }\n\n    if (!isUndefined(from._i)) {\n      to._i = from._i;\n    }\n\n    if (!isUndefined(from._f)) {\n      to._f = from._f;\n    }\n\n    if (!isUndefined(from._l)) {\n      to._l = from._l;\n    }\n\n    if (!isUndefined(from._strict)) {\n      to._strict = from._strict;\n    }\n\n    if (!isUndefined(from._tzm)) {\n      to._tzm = from._tzm;\n    }\n\n    if (!isUndefined(from._isUTC)) {\n      to._isUTC = from._isUTC;\n    }\n\n    if (!isUndefined(from._offset)) {\n      to._offset = from._offset;\n    }\n\n    if (!isUndefined(from._pf)) {\n      to._pf = getParsingFlags(from);\n    }\n\n    if (!isUndefined(from._locale)) {\n      to._locale = from._locale;\n    }\n\n    if (momentProperties.length > 0) {\n      for (i = 0; i < momentProperties.length; i++) {\n        prop = momentProperties[i];\n        val = from[prop];\n\n        if (!isUndefined(val)) {\n          to[prop] = val;\n        }\n      }\n    }\n\n    return to;\n  } // Moment prototype object\n\n\n  function Moment(config) {\n    copyConfig(this, config);\n    this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\n    if (!this.isValid()) {\n      this._d = new Date(NaN);\n    } // Prevent infinite loop in case updateOffset creates new moment\n    // objects.\n\n\n    if (updateInProgress === false) {\n      updateInProgress = true;\n      hooks.updateOffset(this);\n      updateInProgress = false;\n    }\n  }\n\n  function isMoment(obj) {\n    return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n  }\n\n  function warn(msg) {\n    if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n      console.warn('Deprecation warning: ' + msg);\n    }\n  }\n\n  function deprecate(msg, fn) {\n    var firstTime = true;\n    return extend(function () {\n      if (hooks.deprecationHandler != null) {\n        hooks.deprecationHandler(null, msg);\n      }\n\n      if (firstTime) {\n        var args = [],\n            arg,\n            i,\n            key;\n\n        for (i = 0; i < arguments.length; i++) {\n          arg = '';\n\n          if (typeof arguments[i] === 'object') {\n            arg += '\\n[' + i + '] ';\n\n            for (key in arguments[0]) {\n              if (hasOwnProp(arguments[0], key)) {\n                arg += key + ': ' + arguments[0][key] + ', ';\n              }\n            }\n\n            arg = arg.slice(0, -2); // Remove trailing comma and space\n          } else {\n            arg = arguments[i];\n          }\n\n          args.push(arg);\n        }\n\n        warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n        firstTime = false;\n      }\n\n      return fn.apply(this, arguments);\n    }, fn);\n  }\n\n  var deprecations = {};\n\n  function deprecateSimple(name, msg) {\n    if (hooks.deprecationHandler != null) {\n      hooks.deprecationHandler(name, msg);\n    }\n\n    if (!deprecations[name]) {\n      warn(msg);\n      deprecations[name] = true;\n    }\n  }\n\n  hooks.suppressDeprecationWarnings = false;\n  hooks.deprecationHandler = null;\n\n  function isFunction(input) {\n    return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n  }\n\n  function set(config) {\n    var prop, i;\n\n    for (i in config) {\n      if (hasOwnProp(config, i)) {\n        prop = config[i];\n\n        if (isFunction(prop)) {\n          this[i] = prop;\n        } else {\n          this['_' + i] = prop;\n        }\n      }\n    }\n\n    this._config = config; // Lenient ordinal parsing accepts just a number in addition to\n    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n\n    this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n  }\n\n  function mergeConfigs(parentConfig, childConfig) {\n    var res = extend({}, parentConfig),\n        prop;\n\n    for (prop in childConfig) {\n      if (hasOwnProp(childConfig, prop)) {\n        if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n          res[prop] = {};\n          extend(res[prop], parentConfig[prop]);\n          extend(res[prop], childConfig[prop]);\n        } else if (childConfig[prop] != null) {\n          res[prop] = childConfig[prop];\n        } else {\n          delete res[prop];\n        }\n      }\n    }\n\n    for (prop in parentConfig) {\n      if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n        // make sure changes to properties don't modify parent config\n        res[prop] = extend({}, res[prop]);\n      }\n    }\n\n    return res;\n  }\n\n  function Locale(config) {\n    if (config != null) {\n      this.set(config);\n    }\n  }\n\n  var keys;\n\n  if (Object.keys) {\n    keys = Object.keys;\n  } else {\n    keys = function keys(obj) {\n      var i,\n          res = [];\n\n      for (i in obj) {\n        if (hasOwnProp(obj, i)) {\n          res.push(i);\n        }\n      }\n\n      return res;\n    };\n  }\n\n  var defaultCalendar = {\n    sameDay: '[Today at] LT',\n    nextDay: '[Tomorrow at] LT',\n    nextWeek: 'dddd [at] LT',\n    lastDay: '[Yesterday at] LT',\n    lastWeek: '[Last] dddd [at] LT',\n    sameElse: 'L'\n  };\n\n  function calendar(key, mom, now) {\n    var output = this._calendar[key] || this._calendar['sameElse'];\n    return isFunction(output) ? output.call(mom, now) : output;\n  }\n\n  function zeroFill(number, targetLength, forceSign) {\n    var absNumber = '' + Math.abs(number),\n        zerosToFill = targetLength - absNumber.length,\n        sign = number >= 0;\n    return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n  }\n\n  var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n      localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n      formatFunctions = {},\n      formatTokenFunctions = {}; // token:    'M'\n  // padded:   ['MM', 2]\n  // ordinal:  'Mo'\n  // callback: function () { this.month() + 1 }\n\n  function addFormatToken(token, padded, ordinal, callback) {\n    var func = callback;\n\n    if (typeof callback === 'string') {\n      func = function func() {\n        return this[callback]();\n      };\n    }\n\n    if (token) {\n      formatTokenFunctions[token] = func;\n    }\n\n    if (padded) {\n      formatTokenFunctions[padded[0]] = function () {\n        return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n      };\n    }\n\n    if (ordinal) {\n      formatTokenFunctions[ordinal] = function () {\n        return this.localeData().ordinal(func.apply(this, arguments), token);\n      };\n    }\n  }\n\n  function removeFormattingTokens(input) {\n    if (input.match(/\\[[\\s\\S]/)) {\n      return input.replace(/^\\[|\\]$/g, '');\n    }\n\n    return input.replace(/\\\\/g, '');\n  }\n\n  function makeFormatFunction(format) {\n    var array = format.match(formattingTokens),\n        i,\n        length;\n\n    for (i = 0, length = array.length; i < length; i++) {\n      if (formatTokenFunctions[array[i]]) {\n        array[i] = formatTokenFunctions[array[i]];\n      } else {\n        array[i] = removeFormattingTokens(array[i]);\n      }\n    }\n\n    return function (mom) {\n      var output = '',\n          i;\n\n      for (i = 0; i < length; i++) {\n        output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n      }\n\n      return output;\n    };\n  } // format date using native date object\n\n\n  function formatMoment(m, format) {\n    if (!m.isValid()) {\n      return m.localeData().invalidDate();\n    }\n\n    format = expandFormat(format, m.localeData());\n    formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n    return formatFunctions[format](m);\n  }\n\n  function expandFormat(format, locale) {\n    var i = 5;\n\n    function replaceLongDateFormatTokens(input) {\n      return locale.longDateFormat(input) || input;\n    }\n\n    localFormattingTokens.lastIndex = 0;\n\n    while (i >= 0 && localFormattingTokens.test(format)) {\n      format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n      localFormattingTokens.lastIndex = 0;\n      i -= 1;\n    }\n\n    return format;\n  }\n\n  var defaultLongDateFormat = {\n    LTS: 'h:mm:ss A',\n    LT: 'h:mm A',\n    L: 'MM/DD/YYYY',\n    LL: 'MMMM D, YYYY',\n    LLL: 'MMMM D, YYYY h:mm A',\n    LLLL: 'dddd, MMMM D, YYYY h:mm A'\n  };\n\n  function longDateFormat(key) {\n    var format = this._longDateFormat[key],\n        formatUpper = this._longDateFormat[key.toUpperCase()];\n\n    if (format || !formatUpper) {\n      return format;\n    }\n\n    this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n      if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n        return tok.slice(1);\n      }\n\n      return tok;\n    }).join('');\n    return this._longDateFormat[key];\n  }\n\n  var defaultInvalidDate = 'Invalid date';\n\n  function invalidDate() {\n    return this._invalidDate;\n  }\n\n  var defaultOrdinal = '%d',\n      defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n  function ordinal(number) {\n    return this._ordinal.replace('%d', number);\n  }\n\n  var defaultRelativeTime = {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    ss: '%d seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    w: 'a week',\n    ww: '%d weeks',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  };\n\n  function relativeTime(number, withoutSuffix, string, isFuture) {\n    var output = this._relativeTime[string];\n    return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n  }\n\n  function pastFuture(diff, output) {\n    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n    return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n  }\n\n  var aliases = {};\n\n  function addUnitAlias(unit, shorthand) {\n    var lowerCase = unit.toLowerCase();\n    aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n  }\n\n  function normalizeUnits(units) {\n    return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n  }\n\n  function normalizeObjectUnits(inputObject) {\n    var normalizedInput = {},\n        normalizedProp,\n        prop;\n\n    for (prop in inputObject) {\n      if (hasOwnProp(inputObject, prop)) {\n        normalizedProp = normalizeUnits(prop);\n\n        if (normalizedProp) {\n          normalizedInput[normalizedProp] = inputObject[prop];\n        }\n      }\n    }\n\n    return normalizedInput;\n  }\n\n  var priorities = {};\n\n  function addUnitPriority(unit, priority) {\n    priorities[unit] = priority;\n  }\n\n  function getPrioritizedUnits(unitsObj) {\n    var units = [],\n        u;\n\n    for (u in unitsObj) {\n      if (hasOwnProp(unitsObj, u)) {\n        units.push({\n          unit: u,\n          priority: priorities[u]\n        });\n      }\n    }\n\n    units.sort(function (a, b) {\n      return a.priority - b.priority;\n    });\n    return units;\n  }\n\n  function isLeapYear(year) {\n    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n  }\n\n  function absFloor(number) {\n    if (number < 0) {\n      // -0 -> 0\n      return Math.ceil(number) || 0;\n    } else {\n      return Math.floor(number);\n    }\n  }\n\n  function toInt(argumentForCoercion) {\n    var coercedNumber = +argumentForCoercion,\n        value = 0;\n\n    if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n      value = absFloor(coercedNumber);\n    }\n\n    return value;\n  }\n\n  function makeGetSet(unit, keepTime) {\n    return function (value) {\n      if (value != null) {\n        set$1(this, unit, value);\n        hooks.updateOffset(this, keepTime);\n        return this;\n      } else {\n        return get(this, unit);\n      }\n    };\n  }\n\n  function get(mom, unit) {\n    return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n  }\n\n  function set$1(mom, unit, value) {\n    if (mom.isValid() && !isNaN(value)) {\n      if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n        value = toInt(value);\n\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n      } else {\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n      }\n    }\n  } // MOMENTS\n\n\n  function stringGet(units) {\n    units = normalizeUnits(units);\n\n    if (isFunction(this[units])) {\n      return this[units]();\n    }\n\n    return this;\n  }\n\n  function stringSet(units, value) {\n    if (typeof units === 'object') {\n      units = normalizeObjectUnits(units);\n      var prioritized = getPrioritizedUnits(units),\n          i;\n\n      for (i = 0; i < prioritized.length; i++) {\n        this[prioritized[i].unit](units[prioritized[i].unit]);\n      }\n    } else {\n      units = normalizeUnits(units);\n\n      if (isFunction(this[units])) {\n        return this[units](value);\n      }\n    }\n\n    return this;\n  }\n\n  var match1 = /\\d/,\n      //       0 - 9\n  match2 = /\\d\\d/,\n      //      00 - 99\n  match3 = /\\d{3}/,\n      //     000 - 999\n  match4 = /\\d{4}/,\n      //    0000 - 9999\n  match6 = /[+-]?\\d{6}/,\n      // -999999 - 999999\n  match1to2 = /\\d\\d?/,\n      //       0 - 99\n  match3to4 = /\\d\\d\\d\\d?/,\n      //     999 - 9999\n  match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n      //   99999 - 999999\n  match1to3 = /\\d{1,3}/,\n      //       0 - 999\n  match1to4 = /\\d{1,4}/,\n      //       0 - 9999\n  match1to6 = /[+-]?\\d{1,6}/,\n      // -999999 - 999999\n  matchUnsigned = /\\d+/,\n      //       0 - inf\n  matchSigned = /[+-]?\\d+/,\n      //    -inf - inf\n  matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n      // +00:00 -00:00 +0000 -0000 or Z\n  matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n      // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n  matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n      // 123456789 123456789.123\n  // any word (or two) characters or numbers including two/three word month in arabic.\n  // includes scottish gaelic two word and hyphenated months\n  matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n      regexes;\n  regexes = {};\n\n  function addRegexToken(token, regex, strictRegex) {\n    regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n      return isStrict && strictRegex ? strictRegex : regex;\n    };\n  }\n\n  function getParseRegexForToken(token, config) {\n    if (!hasOwnProp(regexes, token)) {\n      return new RegExp(unescapeFormat(token));\n    }\n\n    return regexes[token](config._strict, config._locale);\n  } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\n\n  function unescapeFormat(s) {\n    return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n      return p1 || p2 || p3 || p4;\n    }));\n  }\n\n  function regexEscape(s) {\n    return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n  }\n\n  var tokens = {};\n\n  function addParseToken(token, callback) {\n    var i,\n        func = callback;\n\n    if (typeof token === 'string') {\n      token = [token];\n    }\n\n    if (isNumber(callback)) {\n      func = function func(input, array) {\n        array[callback] = toInt(input);\n      };\n    }\n\n    for (i = 0; i < token.length; i++) {\n      tokens[token[i]] = func;\n    }\n  }\n\n  function addWeekParseToken(token, callback) {\n    addParseToken(token, function (input, array, config, token) {\n      config._w = config._w || {};\n      callback(input, config._w, config, token);\n    });\n  }\n\n  function addTimeToArrayFromToken(token, input, config) {\n    if (input != null && hasOwnProp(tokens, token)) {\n      tokens[token](input, config._a, config, token);\n    }\n  }\n\n  var YEAR = 0,\n      MONTH = 1,\n      DATE = 2,\n      HOUR = 3,\n      MINUTE = 4,\n      SECOND = 5,\n      MILLISECOND = 6,\n      WEEK = 7,\n      WEEKDAY = 8;\n\n  function mod(n, x) {\n    return (n % x + x) % x;\n  }\n\n  var indexOf;\n\n  if (Array.prototype.indexOf) {\n    indexOf = Array.prototype.indexOf;\n  } else {\n    indexOf = function indexOf(o) {\n      // I know\n      var i;\n\n      for (i = 0; i < this.length; ++i) {\n        if (this[i] === o) {\n          return i;\n        }\n      }\n\n      return -1;\n    };\n  }\n\n  function daysInMonth(year, month) {\n    if (isNaN(year) || isNaN(month)) {\n      return NaN;\n    }\n\n    var modMonth = mod(month, 12);\n    year += (month - modMonth) / 12;\n    return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n  } // FORMATTING\n\n\n  addFormatToken('M', ['MM', 2], 'Mo', function () {\n    return this.month() + 1;\n  });\n  addFormatToken('MMM', 0, 0, function (format) {\n    return this.localeData().monthsShort(this, format);\n  });\n  addFormatToken('MMMM', 0, 0, function (format) {\n    return this.localeData().months(this, format);\n  }); // ALIASES\n\n  addUnitAlias('month', 'M'); // PRIORITY\n\n  addUnitPriority('month', 8); // PARSING\n\n  addRegexToken('M', match1to2);\n  addRegexToken('MM', match1to2, match2);\n  addRegexToken('MMM', function (isStrict, locale) {\n    return locale.monthsShortRegex(isStrict);\n  });\n  addRegexToken('MMMM', function (isStrict, locale) {\n    return locale.monthsRegex(isStrict);\n  });\n  addParseToken(['M', 'MM'], function (input, array) {\n    array[MONTH] = toInt(input) - 1;\n  });\n  addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n    var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.\n\n\n    if (month != null) {\n      array[MONTH] = month;\n    } else {\n      getParsingFlags(config).invalidMonth = input;\n    }\n  }); // LOCALES\n\n  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n      defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n      MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n      defaultMonthsShortRegex = matchWord,\n      defaultMonthsRegex = matchWord;\n\n  function localeMonths(m, format) {\n    if (!m) {\n      return isArray(this._months) ? this._months : this._months['standalone'];\n    }\n\n    return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  function localeMonthsShort(m, format) {\n    if (!m) {\n      return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n    }\n\n    return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  function handleStrictParse(monthName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = monthName.toLocaleLowerCase();\n\n    if (!this._monthsParse) {\n      // this is not used\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n\n      for (i = 0; i < 12; ++i) {\n        mom = createUTC([2000, i]);\n        this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n        this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeMonthsParse(monthName, format, strict) {\n    var i, mom, regex;\n\n    if (this._monthsParseExact) {\n      return handleStrictParse.call(this, monthName, format, strict);\n    }\n\n    if (!this._monthsParse) {\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n    } // TODO: add sorting\n    // Sorting makes sure if one month (or abbr) is a prefix of another\n    // see sorting in computeMonthsParse\n\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n\n      if (strict && !this._longMonthsParse[i]) {\n        this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n        this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n      }\n\n      if (!strict && !this._monthsParse[i]) {\n        regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (!strict && this._monthsParse[i].test(monthName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function setMonth(mom, value) {\n    var dayOfMonth;\n\n    if (!mom.isValid()) {\n      // No op\n      return mom;\n    }\n\n    if (typeof value === 'string') {\n      if (/^\\d+$/.test(value)) {\n        value = toInt(value);\n      } else {\n        value = mom.localeData().monthsParse(value); // TODO: Another silent failure?\n\n        if (!isNumber(value)) {\n          return mom;\n        }\n      }\n    }\n\n    dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\n    mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\n    return mom;\n  }\n\n  function getSetMonth(value) {\n    if (value != null) {\n      setMonth(this, value);\n      hooks.updateOffset(this, true);\n      return this;\n    } else {\n      return get(this, 'Month');\n    }\n  }\n\n  function getDaysInMonth() {\n    return daysInMonth(this.year(), this.month());\n  }\n\n  function monthsShortRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsShortStrictRegex;\n      } else {\n        return this._monthsShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsShortRegex')) {\n        this._monthsShortRegex = defaultMonthsShortRegex;\n      }\n\n      return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n    }\n  }\n\n  function monthsRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsStrictRegex;\n      } else {\n        return this._monthsRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        this._monthsRegex = defaultMonthsRegex;\n      }\n\n      return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n    }\n  }\n\n  function computeMonthsParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom;\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n      shortPieces.push(this.monthsShort(mom, ''));\n      longPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.monthsShort(mom, ''));\n    } // Sorting makes sure if one month (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    for (i = 0; i < 12; i++) {\n      shortPieces[i] = regexEscape(shortPieces[i]);\n      longPieces[i] = regexEscape(longPieces[i]);\n    }\n\n    for (i = 0; i < 24; i++) {\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\n    }\n\n    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._monthsShortRegex = this._monthsRegex;\n    this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  addFormatToken('Y', 0, 0, function () {\n    var y = this.year();\n    return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n  });\n  addFormatToken(0, ['YY', 2], 0, function () {\n    return this.year() % 100;\n  });\n  addFormatToken(0, ['YYYY', 4], 0, 'year');\n  addFormatToken(0, ['YYYYY', 5], 0, 'year');\n  addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES\n\n  addUnitAlias('year', 'y'); // PRIORITIES\n\n  addUnitPriority('year', 1); // PARSING\n\n  addRegexToken('Y', matchSigned);\n  addRegexToken('YY', match1to2, match2);\n  addRegexToken('YYYY', match1to4, match4);\n  addRegexToken('YYYYY', match1to6, match6);\n  addRegexToken('YYYYYY', match1to6, match6);\n  addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n  addParseToken('YYYY', function (input, array) {\n    array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n  });\n  addParseToken('YY', function (input, array) {\n    array[YEAR] = hooks.parseTwoDigitYear(input);\n  });\n  addParseToken('Y', function (input, array) {\n    array[YEAR] = parseInt(input, 10);\n  }); // HELPERS\n\n  function daysInYear(year) {\n    return isLeapYear(year) ? 366 : 365;\n  } // HOOKS\n\n\n  hooks.parseTwoDigitYear = function (input) {\n    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n  }; // MOMENTS\n\n\n  var getSetYear = makeGetSet('FullYear', true);\n\n  function getIsLeapYear() {\n    return isLeapYear(this.year());\n  }\n\n  function createDate(y, m, d, h, M, s, ms) {\n    // can't just apply() to create a date:\n    // https://stackoverflow.com/q/181348\n    var date; // the date constructor remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      date = new Date(y + 400, m, d, h, M, s, ms);\n\n      if (isFinite(date.getFullYear())) {\n        date.setFullYear(y);\n      }\n    } else {\n      date = new Date(y, m, d, h, M, s, ms);\n    }\n\n    return date;\n  }\n\n  function createUTCDate(y) {\n    var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset\n\n      args[0] = y + 400;\n      date = new Date(Date.UTC.apply(null, args));\n\n      if (isFinite(date.getUTCFullYear())) {\n        date.setUTCFullYear(y);\n      }\n    } else {\n      date = new Date(Date.UTC.apply(null, arguments));\n    }\n\n    return date;\n  } // start-of-first-week - start-of-year\n\n\n  function firstWeekOffset(year, dow, doy) {\n    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n    fwd = 7 + dow - doy,\n        // first-week day local weekday -- which local weekday is fwd\n    fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n    return -fwdlw + fwd - 1;\n  } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\n\n  function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n    var localWeekday = (7 + weekday - dow) % 7,\n        weekOffset = firstWeekOffset(year, dow, doy),\n        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n        resYear,\n        resDayOfYear;\n\n    if (dayOfYear <= 0) {\n      resYear = year - 1;\n      resDayOfYear = daysInYear(resYear) + dayOfYear;\n    } else if (dayOfYear > daysInYear(year)) {\n      resYear = year + 1;\n      resDayOfYear = dayOfYear - daysInYear(year);\n    } else {\n      resYear = year;\n      resDayOfYear = dayOfYear;\n    }\n\n    return {\n      year: resYear,\n      dayOfYear: resDayOfYear\n    };\n  }\n\n  function weekOfYear(mom, dow, doy) {\n    var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n        resWeek,\n        resYear;\n\n    if (week < 1) {\n      resYear = mom.year() - 1;\n      resWeek = week + weeksInYear(resYear, dow, doy);\n    } else if (week > weeksInYear(mom.year(), dow, doy)) {\n      resWeek = week - weeksInYear(mom.year(), dow, doy);\n      resYear = mom.year() + 1;\n    } else {\n      resYear = mom.year();\n      resWeek = week;\n    }\n\n    return {\n      week: resWeek,\n      year: resYear\n    };\n  }\n\n  function weeksInYear(year, dow, doy) {\n    var weekOffset = firstWeekOffset(year, dow, doy),\n        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n  } // FORMATTING\n\n\n  addFormatToken('w', ['ww', 2], 'wo', 'week');\n  addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES\n\n  addUnitAlias('week', 'w');\n  addUnitAlias('isoWeek', 'W'); // PRIORITIES\n\n  addUnitPriority('week', 5);\n  addUnitPriority('isoWeek', 5); // PARSING\n\n  addRegexToken('w', match1to2);\n  addRegexToken('ww', match1to2, match2);\n  addRegexToken('W', match1to2);\n  addRegexToken('WW', match1to2, match2);\n  addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n    week[token.substr(0, 1)] = toInt(input);\n  }); // HELPERS\n  // LOCALES\n\n  function localeWeek(mom) {\n    return weekOfYear(mom, this._week.dow, this._week.doy).week;\n  }\n\n  var defaultLocaleWeek = {\n    dow: 0,\n    // Sunday is the first day of the week.\n    doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n  };\n\n  function localeFirstDayOfWeek() {\n    return this._week.dow;\n  }\n\n  function localeFirstDayOfYear() {\n    return this._week.doy;\n  } // MOMENTS\n\n\n  function getSetWeek(input) {\n    var week = this.localeData().week(this);\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  }\n\n  function getSetISOWeek(input) {\n    var week = weekOfYear(this, 1, 4).week;\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('d', 0, 'do', 'day');\n  addFormatToken('dd', 0, 0, function (format) {\n    return this.localeData().weekdaysMin(this, format);\n  });\n  addFormatToken('ddd', 0, 0, function (format) {\n    return this.localeData().weekdaysShort(this, format);\n  });\n  addFormatToken('dddd', 0, 0, function (format) {\n    return this.localeData().weekdays(this, format);\n  });\n  addFormatToken('e', 0, 0, 'weekday');\n  addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES\n\n  addUnitAlias('day', 'd');\n  addUnitAlias('weekday', 'e');\n  addUnitAlias('isoWeekday', 'E'); // PRIORITY\n\n  addUnitPriority('day', 11);\n  addUnitPriority('weekday', 11);\n  addUnitPriority('isoWeekday', 11); // PARSING\n\n  addRegexToken('d', match1to2);\n  addRegexToken('e', match1to2);\n  addRegexToken('E', match1to2);\n  addRegexToken('dd', function (isStrict, locale) {\n    return locale.weekdaysMinRegex(isStrict);\n  });\n  addRegexToken('ddd', function (isStrict, locale) {\n    return locale.weekdaysShortRegex(isStrict);\n  });\n  addRegexToken('dddd', function (isStrict, locale) {\n    return locale.weekdaysRegex(isStrict);\n  });\n  addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n    var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid\n\n\n    if (weekday != null) {\n      week.d = weekday;\n    } else {\n      getParsingFlags(config).invalidWeekday = input;\n    }\n  });\n  addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n    week[token] = toInt(input);\n  }); // HELPERS\n\n  function parseWeekday(input, locale) {\n    if (typeof input !== 'string') {\n      return input;\n    }\n\n    if (!isNaN(input)) {\n      return parseInt(input, 10);\n    }\n\n    input = locale.weekdaysParse(input);\n\n    if (typeof input === 'number') {\n      return input;\n    }\n\n    return null;\n  }\n\n  function parseIsoWeekday(input, locale) {\n    if (typeof input === 'string') {\n      return locale.weekdaysParse(input) % 7 || 7;\n    }\n\n    return isNaN(input) ? null : input;\n  } // LOCALES\n\n\n  function shiftWeekdays(ws, n) {\n    return ws.slice(n, 7).concat(ws.slice(0, n));\n  }\n\n  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n      defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n      defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n      defaultWeekdaysRegex = matchWord,\n      defaultWeekdaysShortRegex = matchWord,\n      defaultWeekdaysMinRegex = matchWord;\n\n  function localeWeekdays(m, format) {\n    var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n    return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n  }\n\n  function localeWeekdaysShort(m) {\n    return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n  }\n\n  function localeWeekdaysMin(m) {\n    return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n  }\n\n  function handleStrictParse$1(weekdayName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = weekdayName.toLocaleLowerCase();\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._minWeekdaysParse = [];\n\n      for (i = 0; i < 7; ++i) {\n        mom = createUTC([2000, 1]).day(i);\n        this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n        this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n        this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeWeekdaysParse(weekdayName, format, strict) {\n    var i, mom, regex;\n\n    if (this._weekdaysParseExact) {\n      return handleStrictParse$1.call(this, weekdayName, format, strict);\n    }\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._minWeekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._fullWeekdaysParse = [];\n    }\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n\n      if (strict && !this._fullWeekdaysParse[i]) {\n        this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n      }\n\n      if (!this._weekdaysParse[i]) {\n        regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function getSetDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\n    if (input != null) {\n      input = parseWeekday(input, this.localeData());\n      return this.add(input - day, 'd');\n    } else {\n      return day;\n    }\n  }\n\n  function getSetLocaleDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n    return input == null ? weekday : this.add(input - weekday, 'd');\n  }\n\n  function getSetISODayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    } // behaves the same as moment#day except\n    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n    // as a setter, sunday should belong to the previous week.\n\n\n    if (input != null) {\n      var weekday = parseIsoWeekday(input, this.localeData());\n      return this.day(this.day() % 7 ? weekday : weekday - 7);\n    } else {\n      return this.day() || 7;\n    }\n  }\n\n  function weekdaysRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysStrictRegex;\n      } else {\n        return this._weekdaysRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        this._weekdaysRegex = defaultWeekdaysRegex;\n      }\n\n      return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n    }\n  }\n\n  function weekdaysShortRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysShortStrictRegex;\n      } else {\n        return this._weekdaysShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n        this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n      }\n\n      return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n    }\n  }\n\n  function weekdaysMinRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysMinStrictRegex;\n      } else {\n        return this._weekdaysMinRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n        this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n      }\n\n      return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n    }\n  }\n\n  function computeWeekdaysParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var minPieces = [],\n        shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom,\n        minp,\n        shortp,\n        longp;\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n      minp = regexEscape(this.weekdaysMin(mom, ''));\n      shortp = regexEscape(this.weekdaysShort(mom, ''));\n      longp = regexEscape(this.weekdays(mom, ''));\n      minPieces.push(minp);\n      shortPieces.push(shortp);\n      longPieces.push(longp);\n      mixedPieces.push(minp);\n      mixedPieces.push(shortp);\n      mixedPieces.push(longp);\n    } // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    minPieces.sort(cmpLenRev);\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._weekdaysShortRegex = this._weekdaysRegex;\n    this._weekdaysMinRegex = this._weekdaysRegex;\n    this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  function hFormat() {\n    return this.hours() % 12 || 12;\n  }\n\n  function kFormat() {\n    return this.hours() || 24;\n  }\n\n  addFormatToken('H', ['HH', 2], 0, 'hour');\n  addFormatToken('h', ['hh', 2], 0, hFormat);\n  addFormatToken('k', ['kk', 2], 0, kFormat);\n  addFormatToken('hmm', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('hmmss', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n  addFormatToken('Hmm', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('Hmmss', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n\n  function meridiem(token, lowercase) {\n    addFormatToken(token, 0, 0, function () {\n      return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n    });\n  }\n\n  meridiem('a', true);\n  meridiem('A', false); // ALIASES\n\n  addUnitAlias('hour', 'h'); // PRIORITY\n\n  addUnitPriority('hour', 13); // PARSING\n\n  function matchMeridiem(isStrict, locale) {\n    return locale._meridiemParse;\n  }\n\n  addRegexToken('a', matchMeridiem);\n  addRegexToken('A', matchMeridiem);\n  addRegexToken('H', match1to2);\n  addRegexToken('h', match1to2);\n  addRegexToken('k', match1to2);\n  addRegexToken('HH', match1to2, match2);\n  addRegexToken('hh', match1to2, match2);\n  addRegexToken('kk', match1to2, match2);\n  addRegexToken('hmm', match3to4);\n  addRegexToken('hmmss', match5to6);\n  addRegexToken('Hmm', match3to4);\n  addRegexToken('Hmmss', match5to6);\n  addParseToken(['H', 'HH'], HOUR);\n  addParseToken(['k', 'kk'], function (input, array, config) {\n    var kInput = toInt(input);\n    array[HOUR] = kInput === 24 ? 0 : kInput;\n  });\n  addParseToken(['a', 'A'], function (input, array, config) {\n    config._isPm = config._locale.isPM(input);\n    config._meridiem = input;\n  });\n  addParseToken(['h', 'hh'], function (input, array, config) {\n    array[HOUR] = toInt(input);\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmmss', function (input, array, config) {\n    var pos1 = input.length - 4,\n        pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('Hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n  });\n  addParseToken('Hmmss', function (input, array, config) {\n    var pos1 = input.length - 4,\n        pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n  }); // LOCALES\n\n  function localeIsPM(input) {\n    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n    // Using charAt should be more compatible.\n    return (input + '').toLowerCase().charAt(0) === 'p';\n  }\n\n  var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n      // Setting the hour should keep the time, because the user explicitly\n  // specified which hour they want. So trying to maintain the same hour (in\n  // a new timezone) makes sense. Adding/subtracting hours does not follow\n  // this rule.\n  getSetHour = makeGetSet('Hours', true);\n\n  function localeMeridiem(hours, minutes, isLower) {\n    if (hours > 11) {\n      return isLower ? 'pm' : 'PM';\n    } else {\n      return isLower ? 'am' : 'AM';\n    }\n  }\n\n  var baseConfig = {\n    calendar: defaultCalendar,\n    longDateFormat: defaultLongDateFormat,\n    invalidDate: defaultInvalidDate,\n    ordinal: defaultOrdinal,\n    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n    relativeTime: defaultRelativeTime,\n    months: defaultLocaleMonths,\n    monthsShort: defaultLocaleMonthsShort,\n    week: defaultLocaleWeek,\n    weekdays: defaultLocaleWeekdays,\n    weekdaysMin: defaultLocaleWeekdaysMin,\n    weekdaysShort: defaultLocaleWeekdaysShort,\n    meridiemParse: defaultLocaleMeridiemParse\n  }; // internal storage for locale config files\n\n  var locales = {},\n      localeFamilies = {},\n      globalLocale;\n\n  function commonPrefix(arr1, arr2) {\n    var i,\n        minl = Math.min(arr1.length, arr2.length);\n\n    for (i = 0; i < minl; i += 1) {\n      if (arr1[i] !== arr2[i]) {\n        return i;\n      }\n    }\n\n    return minl;\n  }\n\n  function normalizeLocale(key) {\n    return key ? key.toLowerCase().replace('_', '-') : key;\n  } // pick the locale from the array\n  // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n  // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n\n\n  function chooseLocale(names) {\n    var i = 0,\n        j,\n        next,\n        locale,\n        split;\n\n    while (i < names.length) {\n      split = normalizeLocale(names[i]).split('-');\n      j = split.length;\n      next = normalizeLocale(names[i + 1]);\n      next = next ? next.split('-') : null;\n\n      while (j > 0) {\n        locale = loadLocale(split.slice(0, j).join('-'));\n\n        if (locale) {\n          return locale;\n        }\n\n        if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n          //the next array item is better than a shallower substring of this one\n          break;\n        }\n\n        j--;\n      }\n\n      i++;\n    }\n\n    return globalLocale;\n  }\n\n  function loadLocale(name) {\n    var oldLocale = null,\n        aliasedRequire; // TODO: Find a better way to register and load all the locales in Node\n\n    if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports) {\n      try {\n        oldLocale = globalLocale._abbr;\n        aliasedRequire = require;\n        aliasedRequire('./locale/' + name);\n        getSetGlobalLocale(oldLocale);\n      } catch (e) {\n        // mark as not found to avoid repeating expensive file require call causing high CPU\n        // when trying to find en-US, en_US, en-us for every format call\n        locales[name] = null; // null means not found\n      }\n    }\n\n    return locales[name];\n  } // This function will load locale and then set the global locale.  If\n  // no arguments are passed in, it will simply return the current global\n  // locale key.\n\n\n  function getSetGlobalLocale(key, values) {\n    var data;\n\n    if (key) {\n      if (isUndefined(values)) {\n        data = getLocale(key);\n      } else {\n        data = defineLocale(key, values);\n      }\n\n      if (data) {\n        // moment.duration._locale = moment._locale = data;\n        globalLocale = data;\n      } else {\n        if (typeof console !== 'undefined' && console.warn) {\n          //warn user if arguments are passed but the locale could not be set\n          console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n        }\n      }\n    }\n\n    return globalLocale._abbr;\n  }\n\n  function defineLocale(name, config) {\n    if (config !== null) {\n      var locale,\n          parentConfig = baseConfig;\n      config.abbr = name;\n\n      if (locales[name] != null) {\n        deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n        parentConfig = locales[name]._config;\n      } else if (config.parentLocale != null) {\n        if (locales[config.parentLocale] != null) {\n          parentConfig = locales[config.parentLocale]._config;\n        } else {\n          locale = loadLocale(config.parentLocale);\n\n          if (locale != null) {\n            parentConfig = locale._config;\n          } else {\n            if (!localeFamilies[config.parentLocale]) {\n              localeFamilies[config.parentLocale] = [];\n            }\n\n            localeFamilies[config.parentLocale].push({\n              name: name,\n              config: config\n            });\n            return null;\n          }\n        }\n      }\n\n      locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n      if (localeFamilies[name]) {\n        localeFamilies[name].forEach(function (x) {\n          defineLocale(x.name, x.config);\n        });\n      } // backwards compat for now: also set the locale\n      // make sure we set the locale AFTER all child locales have been\n      // created, so we won't end up with the child locale set.\n\n\n      getSetGlobalLocale(name);\n      return locales[name];\n    } else {\n      // useful for testing\n      delete locales[name];\n      return null;\n    }\n  }\n\n  function updateLocale(name, config) {\n    if (config != null) {\n      var locale,\n          tmpLocale,\n          parentConfig = baseConfig;\n\n      if (locales[name] != null && locales[name].parentLocale != null) {\n        // Update existing child locale in-place to avoid memory-leaks\n        locales[name].set(mergeConfigs(locales[name]._config, config));\n      } else {\n        // MERGE\n        tmpLocale = loadLocale(name);\n\n        if (tmpLocale != null) {\n          parentConfig = tmpLocale._config;\n        }\n\n        config = mergeConfigs(parentConfig, config);\n\n        if (tmpLocale == null) {\n          // updateLocale is called for creating a new locale\n          // Set abbr so it will have a name (getters return\n          // undefined otherwise).\n          config.abbr = name;\n        }\n\n        locale = new Locale(config);\n        locale.parentLocale = locales[name];\n        locales[name] = locale;\n      } // backwards compat for now: also set the locale\n\n\n      getSetGlobalLocale(name);\n    } else {\n      // pass null for config to unupdate, useful for tests\n      if (locales[name] != null) {\n        if (locales[name].parentLocale != null) {\n          locales[name] = locales[name].parentLocale;\n\n          if (name === getSetGlobalLocale()) {\n            getSetGlobalLocale(name);\n          }\n        } else if (locales[name] != null) {\n          delete locales[name];\n        }\n      }\n    }\n\n    return locales[name];\n  } // returns locale data\n\n\n  function getLocale(key) {\n    var locale;\n\n    if (key && key._locale && key._locale._abbr) {\n      key = key._locale._abbr;\n    }\n\n    if (!key) {\n      return globalLocale;\n    }\n\n    if (!isArray(key)) {\n      //short-circuit everything else\n      locale = loadLocale(key);\n\n      if (locale) {\n        return locale;\n      }\n\n      key = [key];\n    }\n\n    return chooseLocale(key);\n  }\n\n  function listLocales() {\n    return keys(locales);\n  }\n\n  function checkOverflow(m) {\n    var overflow,\n        a = m._a;\n\n    if (a && getParsingFlags(m).overflow === -2) {\n      overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n      if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n        overflow = DATE;\n      }\n\n      if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n        overflow = WEEK;\n      }\n\n      if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n        overflow = WEEKDAY;\n      }\n\n      getParsingFlags(m).overflow = overflow;\n    }\n\n    return m;\n  } // iso 8601 regex\n  // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n\n\n  var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n      basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n      tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n      isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n      // iso time formats and regexes\n  isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n      aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n      // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n  rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n      obsOffsets = {\n    UT: 0,\n    GMT: 0,\n    EDT: -4 * 60,\n    EST: -5 * 60,\n    CDT: -5 * 60,\n    CST: -6 * 60,\n    MDT: -6 * 60,\n    MST: -7 * 60,\n    PDT: -7 * 60,\n    PST: -8 * 60\n  }; // date from iso format\n\n  function configFromISO(config) {\n    var i,\n        l,\n        string = config._i,\n        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n        allowTime,\n        dateFormat,\n        timeFormat,\n        tzFormat;\n\n    if (match) {\n      getParsingFlags(config).iso = true;\n\n      for (i = 0, l = isoDates.length; i < l; i++) {\n        if (isoDates[i][1].exec(match[1])) {\n          dateFormat = isoDates[i][0];\n          allowTime = isoDates[i][2] !== false;\n          break;\n        }\n      }\n\n      if (dateFormat == null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[3]) {\n        for (i = 0, l = isoTimes.length; i < l; i++) {\n          if (isoTimes[i][1].exec(match[3])) {\n            // match[2] should be 'T' or space\n            timeFormat = (match[2] || ' ') + isoTimes[i][0];\n            break;\n          }\n        }\n\n        if (timeFormat == null) {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      if (!allowTime && timeFormat != null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[4]) {\n        if (tzRegex.exec(match[4])) {\n          tzFormat = 'Z';\n        } else {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n      configFromStringAndFormat(config);\n    } else {\n      config._isValid = false;\n    }\n  }\n\n  function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n    var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n\n    if (secondStr) {\n      result.push(parseInt(secondStr, 10));\n    }\n\n    return result;\n  }\n\n  function untruncateYear(yearStr) {\n    var year = parseInt(yearStr, 10);\n\n    if (year <= 49) {\n      return 2000 + year;\n    } else if (year <= 999) {\n      return 1900 + year;\n    }\n\n    return year;\n  }\n\n  function preprocessRFC2822(s) {\n    // Remove comments and folding whitespace and replace multiple-spaces with a single space\n    return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n  }\n\n  function checkWeekday(weekdayStr, parsedInput, config) {\n    if (weekdayStr) {\n      // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n      var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n          weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n\n      if (weekdayProvided !== weekdayActual) {\n        getParsingFlags(config).weekdayMismatch = true;\n        config._isValid = false;\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  function calculateOffset(obsOffset, militaryOffset, numOffset) {\n    if (obsOffset) {\n      return obsOffsets[obsOffset];\n    } else if (militaryOffset) {\n      // the only allowed military tz is Z\n      return 0;\n    } else {\n      var hm = parseInt(numOffset, 10),\n          m = hm % 100,\n          h = (hm - m) / 100;\n      return h * 60 + m;\n    }\n  } // date and time from ref 2822 format\n\n\n  function configFromRFC2822(config) {\n    var match = rfc2822.exec(preprocessRFC2822(config._i)),\n        parsedArray;\n\n    if (match) {\n      parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n\n      if (!checkWeekday(match[1], parsedArray, config)) {\n        return;\n      }\n\n      config._a = parsedArray;\n      config._tzm = calculateOffset(match[8], match[9], match[10]);\n      config._d = createUTCDate.apply(null, config._a);\n\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n      getParsingFlags(config).rfc2822 = true;\n    } else {\n      config._isValid = false;\n    }\n  } // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n\n\n  function configFromString(config) {\n    var matched = aspNetJsonRegex.exec(config._i);\n\n    if (matched !== null) {\n      config._d = new Date(+matched[1]);\n      return;\n    }\n\n    configFromISO(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    }\n\n    configFromRFC2822(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    }\n\n    if (config._strict) {\n      config._isValid = false;\n    } else {\n      // Final attempt, use Input Fallback\n      hooks.createFromInputFallback(config);\n    }\n  }\n\n  hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged and will be removed in an upcoming major release. Please refer to ' + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n    config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n  }); // Pick the first defined of two or three arguments.\n\n  function defaults(a, b, c) {\n    if (a != null) {\n      return a;\n    }\n\n    if (b != null) {\n      return b;\n    }\n\n    return c;\n  }\n\n  function currentDateArray(config) {\n    // hooks is actually the exported moment object\n    var nowValue = new Date(hooks.now());\n\n    if (config._useUTC) {\n      return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n    }\n\n    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n  } // convert an array to a date.\n  // the array should mirror the parameters below\n  // note: all values past the year are optional and will default to the lowest possible value.\n  // [year, month, day , hour, minute, second, millisecond]\n\n\n  function configFromArray(config) {\n    var i,\n        date,\n        input = [],\n        currentDate,\n        expectedWeekday,\n        yearToUse;\n\n    if (config._d) {\n      return;\n    }\n\n    currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays\n\n    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n      dayOfYearFromWeekInfo(config);\n    } //if the day of the year is set, figure out what it is\n\n\n    if (config._dayOfYear != null) {\n      yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n      if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n        getParsingFlags(config)._overflowDayOfYear = true;\n      }\n\n      date = createUTCDate(yearToUse, 0, config._dayOfYear);\n      config._a[MONTH] = date.getUTCMonth();\n      config._a[DATE] = date.getUTCDate();\n    } // Default to current date.\n    // * if no year, month, day of month are given, default to today\n    // * if day of month is given, default month and year\n    // * if month is given, default only year\n    // * if year is given, don't default anything\n\n\n    for (i = 0; i < 3 && config._a[i] == null; ++i) {\n      config._a[i] = input[i] = currentDate[i];\n    } // Zero out whatever was not defaulted, including time\n\n\n    for (; i < 7; i++) {\n      config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n    } // Check for 24:00:00.000\n\n\n    if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n      config._nextDay = true;\n      config._a[HOUR] = 0;\n    }\n\n    config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n    expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed\n    // with parseZone.\n\n    if (config._tzm != null) {\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n    }\n\n    if (config._nextDay) {\n      config._a[HOUR] = 24;\n    } // check for mismatching day of week\n\n\n    if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n      getParsingFlags(config).weekdayMismatch = true;\n    }\n  }\n\n  function dayOfYearFromWeekInfo(config) {\n    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n    w = config._w;\n\n    if (w.GG != null || w.W != null || w.E != null) {\n      dow = 1;\n      doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on\n      // how we interpret now (local, utc, fixed offset). So create\n      // a now version of current config (take local/utc/offset flags, and\n      // create now).\n\n      weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n      week = defaults(w.W, 1);\n      weekday = defaults(w.E, 1);\n\n      if (weekday < 1 || weekday > 7) {\n        weekdayOverflow = true;\n      }\n    } else {\n      dow = config._locale._week.dow;\n      doy = config._locale._week.doy;\n      curWeek = weekOfYear(createLocal(), dow, doy);\n      weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.\n\n      week = defaults(w.w, curWeek.week);\n\n      if (w.d != null) {\n        // weekday -- low day numbers are considered next week\n        weekday = w.d;\n\n        if (weekday < 0 || weekday > 6) {\n          weekdayOverflow = true;\n        }\n      } else if (w.e != null) {\n        // local weekday -- counting starts from beginning of week\n        weekday = w.e + dow;\n\n        if (w.e < 0 || w.e > 6) {\n          weekdayOverflow = true;\n        }\n      } else {\n        // default to beginning of week\n        weekday = dow;\n      }\n    }\n\n    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n      getParsingFlags(config)._overflowWeeks = true;\n    } else if (weekdayOverflow != null) {\n      getParsingFlags(config)._overflowWeekday = true;\n    } else {\n      temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n      config._a[YEAR] = temp.year;\n      config._dayOfYear = temp.dayOfYear;\n    }\n  } // constant that refers to the ISO standard\n\n\n  hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form\n\n\n  hooks.RFC_2822 = function () {}; // date from string and format string\n\n\n  function configFromStringAndFormat(config) {\n    // TODO: Move this to another part of the creation flow to prevent circular deps\n    if (config._f === hooks.ISO_8601) {\n      configFromISO(config);\n      return;\n    }\n\n    if (config._f === hooks.RFC_2822) {\n      configFromRFC2822(config);\n      return;\n    }\n\n    config._a = [];\n    getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n    var string = '' + config._i,\n        i,\n        parsedInput,\n        tokens,\n        token,\n        skipped,\n        stringLength = string.length,\n        totalParsedInputLength = 0,\n        era;\n    tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n    for (i = 0; i < tokens.length; i++) {\n      token = tokens[i];\n      parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n\n      if (parsedInput) {\n        skipped = string.substr(0, string.indexOf(parsedInput));\n\n        if (skipped.length > 0) {\n          getParsingFlags(config).unusedInput.push(skipped);\n        }\n\n        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n        totalParsedInputLength += parsedInput.length;\n      } // don't parse if it's not a known token\n\n\n      if (formatTokenFunctions[token]) {\n        if (parsedInput) {\n          getParsingFlags(config).empty = false;\n        } else {\n          getParsingFlags(config).unusedTokens.push(token);\n        }\n\n        addTimeToArrayFromToken(token, parsedInput, config);\n      } else if (config._strict && !parsedInput) {\n        getParsingFlags(config).unusedTokens.push(token);\n      }\n    } // add remaining unparsed input length to the string\n\n\n    getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n\n    if (string.length > 0) {\n      getParsingFlags(config).unusedInput.push(string);\n    } // clear _12h flag if hour is <= 12\n\n\n    if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n      getParsingFlags(config).bigHour = undefined;\n    }\n\n    getParsingFlags(config).parsedDateParts = config._a.slice(0);\n    getParsingFlags(config).meridiem = config._meridiem; // handle meridiem\n\n    config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); // handle era\n\n    era = getParsingFlags(config).era;\n\n    if (era !== null) {\n      config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n    }\n\n    configFromArray(config);\n    checkOverflow(config);\n  }\n\n  function meridiemFixWrap(locale, hour, meridiem) {\n    var isPm;\n\n    if (meridiem == null) {\n      // nothing to do\n      return hour;\n    }\n\n    if (locale.meridiemHour != null) {\n      return locale.meridiemHour(hour, meridiem);\n    } else if (locale.isPM != null) {\n      // Fallback\n      isPm = locale.isPM(meridiem);\n\n      if (isPm && hour < 12) {\n        hour += 12;\n      }\n\n      if (!isPm && hour === 12) {\n        hour = 0;\n      }\n\n      return hour;\n    } else {\n      // this is not supposed to happen\n      return hour;\n    }\n  } // date from string and array of format strings\n\n\n  function configFromStringAndArray(config) {\n    var tempConfig,\n        bestMoment,\n        scoreToBeat,\n        i,\n        currentScore,\n        validFormatFound,\n        bestFormatIsValid = false;\n\n    if (config._f.length === 0) {\n      getParsingFlags(config).invalidFormat = true;\n      config._d = new Date(NaN);\n      return;\n    }\n\n    for (i = 0; i < config._f.length; i++) {\n      currentScore = 0;\n      validFormatFound = false;\n      tempConfig = copyConfig({}, config);\n\n      if (config._useUTC != null) {\n        tempConfig._useUTC = config._useUTC;\n      }\n\n      tempConfig._f = config._f[i];\n      configFromStringAndFormat(tempConfig);\n\n      if (isValid(tempConfig)) {\n        validFormatFound = true;\n      } // if there is any input that was not parsed add a penalty for that format\n\n\n      currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens\n\n      currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n      getParsingFlags(tempConfig).score = currentScore;\n\n      if (!bestFormatIsValid) {\n        if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n          scoreToBeat = currentScore;\n          bestMoment = tempConfig;\n\n          if (validFormatFound) {\n            bestFormatIsValid = true;\n          }\n        }\n      } else {\n        if (currentScore < scoreToBeat) {\n          scoreToBeat = currentScore;\n          bestMoment = tempConfig;\n        }\n      }\n    }\n\n    extend(config, bestMoment || tempConfig);\n  }\n\n  function configFromObject(config) {\n    if (config._d) {\n      return;\n    }\n\n    var i = normalizeObjectUnits(config._i),\n        dayOrDate = i.day === undefined ? i.date : i.day;\n    config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n      return obj && parseInt(obj, 10);\n    });\n    configFromArray(config);\n  }\n\n  function createFromConfig(config) {\n    var res = new Moment(checkOverflow(prepareConfig(config)));\n\n    if (res._nextDay) {\n      // Adding is smart enough around DST\n      res.add(1, 'd');\n      res._nextDay = undefined;\n    }\n\n    return res;\n  }\n\n  function prepareConfig(config) {\n    var input = config._i,\n        format = config._f;\n    config._locale = config._locale || getLocale(config._l);\n\n    if (input === null || format === undefined && input === '') {\n      return createInvalid({\n        nullInput: true\n      });\n    }\n\n    if (typeof input === 'string') {\n      config._i = input = config._locale.preparse(input);\n    }\n\n    if (isMoment(input)) {\n      return new Moment(checkOverflow(input));\n    } else if (isDate(input)) {\n      config._d = input;\n    } else if (isArray(format)) {\n      configFromStringAndArray(config);\n    } else if (format) {\n      configFromStringAndFormat(config);\n    } else {\n      configFromInput(config);\n    }\n\n    if (!isValid(config)) {\n      config._d = null;\n    }\n\n    return config;\n  }\n\n  function configFromInput(config) {\n    var input = config._i;\n\n    if (isUndefined(input)) {\n      config._d = new Date(hooks.now());\n    } else if (isDate(input)) {\n      config._d = new Date(input.valueOf());\n    } else if (typeof input === 'string') {\n      configFromString(config);\n    } else if (isArray(input)) {\n      config._a = map(input.slice(0), function (obj) {\n        return parseInt(obj, 10);\n      });\n      configFromArray(config);\n    } else if (isObject(input)) {\n      configFromObject(config);\n    } else if (isNumber(input)) {\n      // from milliseconds\n      config._d = new Date(input);\n    } else {\n      hooks.createFromInputFallback(config);\n    }\n  }\n\n  function createLocalOrUTC(input, format, locale, strict, isUTC) {\n    var c = {};\n\n    if (format === true || format === false) {\n      strict = format;\n      format = undefined;\n    }\n\n    if (locale === true || locale === false) {\n      strict = locale;\n      locale = undefined;\n    }\n\n    if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n      input = undefined;\n    } // object construction must be done this way.\n    // https://github.com/moment/moment/issues/1423\n\n\n    c._isAMomentObject = true;\n    c._useUTC = c._isUTC = isUTC;\n    c._l = locale;\n    c._i = input;\n    c._f = format;\n    c._strict = strict;\n    return createFromConfig(c);\n  }\n\n  function createLocal(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, false);\n  }\n\n  var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other < this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  }),\n      prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other > this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  }); // Pick a moment m from moments so that m[fn](other) is true for all\n  // other. This relies on the function fn to be transitive.\n  //\n  // moments should either be an array of moment objects or an array, whose\n  // first element is an array of moment objects.\n\n  function pickBy(fn, moments) {\n    var res, i;\n\n    if (moments.length === 1 && isArray(moments[0])) {\n      moments = moments[0];\n    }\n\n    if (!moments.length) {\n      return createLocal();\n    }\n\n    res = moments[0];\n\n    for (i = 1; i < moments.length; ++i) {\n      if (!moments[i].isValid() || moments[i][fn](res)) {\n        res = moments[i];\n      }\n    }\n\n    return res;\n  } // TODO: Use [].sort instead?\n\n\n  function min() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isBefore', args);\n  }\n\n  function max() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isAfter', args);\n  }\n\n  var now = function now() {\n    return Date.now ? Date.now() : +new Date();\n  };\n\n  var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n  function isDurationValid(m) {\n    var key,\n        unitHasDecimal = false,\n        i;\n\n    for (key in m) {\n      if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n        return false;\n      }\n    }\n\n    for (i = 0; i < ordering.length; ++i) {\n      if (m[ordering[i]]) {\n        if (unitHasDecimal) {\n          return false; // only allow non-integers for smallest unit\n        }\n\n        if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n          unitHasDecimal = true;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  function isValid$1() {\n    return this._isValid;\n  }\n\n  function createInvalid$1() {\n    return createDuration(NaN);\n  }\n\n  function Duration(duration) {\n    var normalizedInput = normalizeObjectUnits(duration),\n        years = normalizedInput.year || 0,\n        quarters = normalizedInput.quarter || 0,\n        months = normalizedInput.month || 0,\n        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n        days = normalizedInput.day || 0,\n        hours = normalizedInput.hour || 0,\n        minutes = normalizedInput.minute || 0,\n        seconds = normalizedInput.second || 0,\n        milliseconds = normalizedInput.millisecond || 0;\n    this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove\n\n    this._milliseconds = +milliseconds + seconds * 1e3 + // 1000\n    minutes * 6e4 + // 1000 * 60\n    hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n    // Because of dateAddRemove treats 24 hours as different from a\n    // day when working around DST, we need to store them separately\n\n    this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing\n    // which months you are are talking about, so we have to store\n    // it separately.\n\n    this._months = +months + quarters * 3 + years * 12;\n    this._data = {};\n    this._locale = getLocale();\n\n    this._bubble();\n  }\n\n  function isDuration(obj) {\n    return obj instanceof Duration;\n  }\n\n  function absRound(number) {\n    if (number < 0) {\n      return Math.round(-1 * number) * -1;\n    } else {\n      return Math.round(number);\n    }\n  } // compare two arrays, return the number of differences\n\n\n  function compareArrays(array1, array2, dontConvert) {\n    var len = Math.min(array1.length, array2.length),\n        lengthDiff = Math.abs(array1.length - array2.length),\n        diffs = 0,\n        i;\n\n    for (i = 0; i < len; i++) {\n      if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n        diffs++;\n      }\n    }\n\n    return diffs + lengthDiff;\n  } // FORMATTING\n\n\n  function offset(token, separator) {\n    addFormatToken(token, 0, 0, function () {\n      var offset = this.utcOffset(),\n          sign = '+';\n\n      if (offset < 0) {\n        offset = -offset;\n        sign = '-';\n      }\n\n      return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n    });\n  }\n\n  offset('Z', ':');\n  offset('ZZ', ''); // PARSING\n\n  addRegexToken('Z', matchShortOffset);\n  addRegexToken('ZZ', matchShortOffset);\n  addParseToken(['Z', 'ZZ'], function (input, array, config) {\n    config._useUTC = true;\n    config._tzm = offsetFromString(matchShortOffset, input);\n  }); // HELPERS\n  // timezone chunker\n  // '+10:00' > ['10',  '00']\n  // '-1530'  > ['-15', '30']\n\n  var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n  function offsetFromString(matcher, string) {\n    var matches = (string || '').match(matcher),\n        chunk,\n        parts,\n        minutes;\n\n    if (matches === null) {\n      return null;\n    }\n\n    chunk = matches[matches.length - 1] || [];\n    parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n    minutes = +(parts[1] * 60) + toInt(parts[2]);\n    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n  } // Return a moment from input, that is local/utc/zone equivalent to model.\n\n\n  function cloneWithOffset(input, model) {\n    var res, diff;\n\n    if (model._isUTC) {\n      res = model.clone();\n      diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.\n\n      res._d.setTime(res._d.valueOf() + diff);\n\n      hooks.updateOffset(res, false);\n      return res;\n    } else {\n      return createLocal(input).local();\n    }\n  }\n\n  function getDateOffset(m) {\n    // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n    // https://github.com/moment/moment/pull/1871\n    return -Math.round(m._d.getTimezoneOffset());\n  } // HOOKS\n  // This function will be called whenever a moment is mutated.\n  // It is intended to keep the offset in sync with the timezone.\n\n\n  hooks.updateOffset = function () {}; // MOMENTS\n  // keepLocalTime = true means only change the timezone, without\n  // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n  // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n  // +0200, so we adjust the time as needed, to be valid.\n  //\n  // Keeping the time actually adds/subtracts (one hour)\n  // from the actual represented time. That is why we call updateOffset\n  // a second time. In case it wants us to change the offset again\n  // _changeInProgress == true case, then we have to adjust, because\n  // there is no such time in the given timezone.\n\n\n  function getSetOffset(input, keepLocalTime, keepMinutes) {\n    var offset = this._offset || 0,\n        localAdjust;\n\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    if (input != null) {\n      if (typeof input === 'string') {\n        input = offsetFromString(matchShortOffset, input);\n\n        if (input === null) {\n          return this;\n        }\n      } else if (Math.abs(input) < 16 && !keepMinutes) {\n        input = input * 60;\n      }\n\n      if (!this._isUTC && keepLocalTime) {\n        localAdjust = getDateOffset(this);\n      }\n\n      this._offset = input;\n      this._isUTC = true;\n\n      if (localAdjust != null) {\n        this.add(localAdjust, 'm');\n      }\n\n      if (offset !== input) {\n        if (!keepLocalTime || this._changeInProgress) {\n          addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n        } else if (!this._changeInProgress) {\n          this._changeInProgress = true;\n          hooks.updateOffset(this, true);\n          this._changeInProgress = null;\n        }\n      }\n\n      return this;\n    } else {\n      return this._isUTC ? offset : getDateOffset(this);\n    }\n  }\n\n  function getSetZone(input, keepLocalTime) {\n    if (input != null) {\n      if (typeof input !== 'string') {\n        input = -input;\n      }\n\n      this.utcOffset(input, keepLocalTime);\n      return this;\n    } else {\n      return -this.utcOffset();\n    }\n  }\n\n  function setOffsetToUTC(keepLocalTime) {\n    return this.utcOffset(0, keepLocalTime);\n  }\n\n  function setOffsetToLocal(keepLocalTime) {\n    if (this._isUTC) {\n      this.utcOffset(0, keepLocalTime);\n      this._isUTC = false;\n\n      if (keepLocalTime) {\n        this.subtract(getDateOffset(this), 'm');\n      }\n    }\n\n    return this;\n  }\n\n  function setOffsetToParsedOffset() {\n    if (this._tzm != null) {\n      this.utcOffset(this._tzm, false, true);\n    } else if (typeof this._i === 'string') {\n      var tZone = offsetFromString(matchOffset, this._i);\n\n      if (tZone != null) {\n        this.utcOffset(tZone);\n      } else {\n        this.utcOffset(0, true);\n      }\n    }\n\n    return this;\n  }\n\n  function hasAlignedHourOffset(input) {\n    if (!this.isValid()) {\n      return false;\n    }\n\n    input = input ? createLocal(input).utcOffset() : 0;\n    return (this.utcOffset() - input) % 60 === 0;\n  }\n\n  function isDaylightSavingTime() {\n    return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n  }\n\n  function isDaylightSavingTimeShifted() {\n    if (!isUndefined(this._isDSTShifted)) {\n      return this._isDSTShifted;\n    }\n\n    var c = {},\n        other;\n    copyConfig(c, this);\n    c = prepareConfig(c);\n\n    if (c._a) {\n      other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n      this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n    } else {\n      this._isDSTShifted = false;\n    }\n\n    return this._isDSTShifted;\n  }\n\n  function isLocal() {\n    return this.isValid() ? !this._isUTC : false;\n  }\n\n  function isUtcOffset() {\n    return this.isValid() ? this._isUTC : false;\n  }\n\n  function isUtc() {\n    return this.isValid() ? this._isUTC && this._offset === 0 : false;\n  } // ASP.NET json date format regex\n\n\n  var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n      // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n  // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n  // and further modified to allow for strings containing both week and day\n  isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n  function createDuration(input, key) {\n    var duration = input,\n        // matching against regexp is expensive, do it on demand\n    match = null,\n        sign,\n        ret,\n        diffRes;\n\n    if (isDuration(input)) {\n      duration = {\n        ms: input._milliseconds,\n        d: input._days,\n        M: input._months\n      };\n    } else if (isNumber(input) || !isNaN(+input)) {\n      duration = {};\n\n      if (key) {\n        duration[key] = +input;\n      } else {\n        duration.milliseconds = +input;\n      }\n    } else if (match = aspNetRegex.exec(input)) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: 0,\n        d: toInt(match[DATE]) * sign,\n        h: toInt(match[HOUR]) * sign,\n        m: toInt(match[MINUTE]) * sign,\n        s: toInt(match[SECOND]) * sign,\n        ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n\n      };\n    } else if (match = isoRegex.exec(input)) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: parseIso(match[2], sign),\n        M: parseIso(match[3], sign),\n        w: parseIso(match[4], sign),\n        d: parseIso(match[5], sign),\n        h: parseIso(match[6], sign),\n        m: parseIso(match[7], sign),\n        s: parseIso(match[8], sign)\n      };\n    } else if (duration == null) {\n      // checks for null or undefined\n      duration = {};\n    } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n      diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n      duration = {};\n      duration.ms = diffRes.milliseconds;\n      duration.M = diffRes.months;\n    }\n\n    ret = new Duration(duration);\n\n    if (isDuration(input) && hasOwnProp(input, '_locale')) {\n      ret._locale = input._locale;\n    }\n\n    if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n      ret._isValid = input._isValid;\n    }\n\n    return ret;\n  }\n\n  createDuration.fn = Duration.prototype;\n  createDuration.invalid = createInvalid$1;\n\n  function parseIso(inp, sign) {\n    // We'd normally use ~~inp for this, but unfortunately it also\n    // converts floats to ints.\n    // inp may be undefined, so careful calling replace on it.\n    var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it\n\n    return (isNaN(res) ? 0 : res) * sign;\n  }\n\n  function positiveMomentsDifference(base, other) {\n    var res = {};\n    res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n\n    if (base.clone().add(res.months, 'M').isAfter(other)) {\n      --res.months;\n    }\n\n    res.milliseconds = +other - +base.clone().add(res.months, 'M');\n    return res;\n  }\n\n  function momentsDifference(base, other) {\n    var res;\n\n    if (!(base.isValid() && other.isValid())) {\n      return {\n        milliseconds: 0,\n        months: 0\n      };\n    }\n\n    other = cloneWithOffset(other, base);\n\n    if (base.isBefore(other)) {\n      res = positiveMomentsDifference(base, other);\n    } else {\n      res = positiveMomentsDifference(other, base);\n      res.milliseconds = -res.milliseconds;\n      res.months = -res.months;\n    }\n\n    return res;\n  } // TODO: remove 'name' arg after deprecation is removed\n\n\n  function createAdder(direction, name) {\n    return function (val, period) {\n      var dur, tmp; //invert the arguments, but complain about it\n\n      if (period !== null && !isNaN(+period)) {\n        deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n        tmp = val;\n        val = period;\n        period = tmp;\n      }\n\n      dur = createDuration(val, period);\n      addSubtract(this, dur, direction);\n      return this;\n    };\n  }\n\n  function addSubtract(mom, duration, isAdding, updateOffset) {\n    var milliseconds = duration._milliseconds,\n        days = absRound(duration._days),\n        months = absRound(duration._months);\n\n    if (!mom.isValid()) {\n      // No op\n      return;\n    }\n\n    updateOffset = updateOffset == null ? true : updateOffset;\n\n    if (months) {\n      setMonth(mom, get(mom, 'Month') + months * isAdding);\n    }\n\n    if (days) {\n      set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n    }\n\n    if (milliseconds) {\n      mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n    }\n\n    if (updateOffset) {\n      hooks.updateOffset(mom, days || months);\n    }\n  }\n\n  var add = createAdder(1, 'add'),\n      subtract = createAdder(-1, 'subtract');\n\n  function isString(input) {\n    return typeof input === 'string' || input instanceof String;\n  } // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n\n\n  function isMomentInput(input) {\n    return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n  }\n\n  function isMomentInputObject(input) {\n    var objectTest = isObject(input) && !isObjectEmpty(input),\n        propertyTest = false,\n        properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n        i,\n        property;\n\n    for (i = 0; i < properties.length; i += 1) {\n      property = properties[i];\n      propertyTest = propertyTest || hasOwnProp(input, property);\n    }\n\n    return objectTest && propertyTest;\n  }\n\n  function isNumberOrStringArray(input) {\n    var arrayTest = isArray(input),\n        dataTypeTest = false;\n\n    if (arrayTest) {\n      dataTypeTest = input.filter(function (item) {\n        return !isNumber(item) && isString(input);\n      }).length === 0;\n    }\n\n    return arrayTest && dataTypeTest;\n  }\n\n  function isCalendarSpec(input) {\n    var objectTest = isObject(input) && !isObjectEmpty(input),\n        propertyTest = false,\n        properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n        i,\n        property;\n\n    for (i = 0; i < properties.length; i += 1) {\n      property = properties[i];\n      propertyTest = propertyTest || hasOwnProp(input, property);\n    }\n\n    return objectTest && propertyTest;\n  }\n\n  function getCalendarFormat(myMoment, now) {\n    var diff = myMoment.diff(now, 'days', true);\n    return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n  }\n\n  function calendar$1(time, formats) {\n    // Support for single parameter, formats only overload to the calendar function\n    if (arguments.length === 1) {\n      if (isMomentInput(arguments[0])) {\n        time = arguments[0];\n        formats = undefined;\n      } else if (isCalendarSpec(arguments[0])) {\n        formats = arguments[0];\n        time = undefined;\n      }\n    } // We want to compare the start of today, vs this.\n    // Getting start-of-today depends on whether we're local/utc/offset or not.\n\n\n    var now = time || createLocal(),\n        sod = cloneWithOffset(now, this).startOf('day'),\n        format = hooks.calendarFormat(this, sod) || 'sameElse',\n        output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n    return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n  }\n\n  function clone() {\n    return new Moment(this);\n  }\n\n  function isAfter(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() > localInput.valueOf();\n    } else {\n      return localInput.valueOf() < this.clone().startOf(units).valueOf();\n    }\n  }\n\n  function isBefore(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() < localInput.valueOf();\n    } else {\n      return this.clone().endOf(units).valueOf() < localInput.valueOf();\n    }\n  }\n\n  function isBetween(from, to, units, inclusivity) {\n    var localFrom = isMoment(from) ? from : createLocal(from),\n        localTo = isMoment(to) ? to : createLocal(to);\n\n    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n      return false;\n    }\n\n    inclusivity = inclusivity || '()';\n    return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n  }\n\n  function isSame(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input),\n        inputMs;\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() === localInput.valueOf();\n    } else {\n      inputMs = localInput.valueOf();\n      return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n    }\n  }\n\n  function isSameOrAfter(input, units) {\n    return this.isSame(input, units) || this.isAfter(input, units);\n  }\n\n  function isSameOrBefore(input, units) {\n    return this.isSame(input, units) || this.isBefore(input, units);\n  }\n\n  function diff(input, units, asFloat) {\n    var that, zoneDelta, output;\n\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    that = cloneWithOffset(input, this);\n\n    if (!that.isValid()) {\n      return NaN;\n    }\n\n    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n    units = normalizeUnits(units);\n\n    switch (units) {\n      case 'year':\n        output = monthDiff(this, that) / 12;\n        break;\n\n      case 'month':\n        output = monthDiff(this, that);\n        break;\n\n      case 'quarter':\n        output = monthDiff(this, that) / 3;\n        break;\n\n      case 'second':\n        output = (this - that) / 1e3;\n        break;\n      // 1000\n\n      case 'minute':\n        output = (this - that) / 6e4;\n        break;\n      // 1000 * 60\n\n      case 'hour':\n        output = (this - that) / 36e5;\n        break;\n      // 1000 * 60 * 60\n\n      case 'day':\n        output = (this - that - zoneDelta) / 864e5;\n        break;\n      // 1000 * 60 * 60 * 24, negate dst\n\n      case 'week':\n        output = (this - that - zoneDelta) / 6048e5;\n        break;\n      // 1000 * 60 * 60 * 24 * 7, negate dst\n\n      default:\n        output = this - that;\n    }\n\n    return asFloat ? output : absFloor(output);\n  }\n\n  function monthDiff(a, b) {\n    if (a.date() < b.date()) {\n      // end-of-month calculations work correct when the start month has more\n      // days than the end month.\n      return -monthDiff(b, a);\n    } // difference in months\n\n\n    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n        // b is in (anchor - 1 month, anchor + 1 month)\n    anchor = a.clone().add(wholeMonthDiff, 'months'),\n        anchor2,\n        adjust;\n\n    if (b - anchor < 0) {\n      anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor - anchor2);\n    } else {\n      anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor2 - anchor);\n    } //check for negative zero, return zero if negative zero\n\n\n    return -(wholeMonthDiff + adjust) || 0;\n  }\n\n  hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n  hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n  function toString() {\n    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n  }\n\n  function toISOString(keepOffset) {\n    if (!this.isValid()) {\n      return null;\n    }\n\n    var utc = keepOffset !== true,\n        m = utc ? this.clone().utc() : this;\n\n    if (m.year() < 0 || m.year() > 9999) {\n      return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    if (isFunction(Date.prototype.toISOString)) {\n      // native implementation is ~50x faster, use it when we can\n      if (utc) {\n        return this.toDate().toISOString();\n      } else {\n        return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n      }\n    }\n\n    return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n  }\n  /**\n   * Return a human readable representation of a moment that can\n   * also be evaluated to get a new moment which is the same\n   *\n   * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n   */\n\n\n  function inspect() {\n    if (!this.isValid()) {\n      return 'moment.invalid(/* ' + this._i + ' */)';\n    }\n\n    var func = 'moment',\n        zone = '',\n        prefix,\n        year,\n        datetime,\n        suffix;\n\n    if (!this.isLocal()) {\n      func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n      zone = 'Z';\n    }\n\n    prefix = '[' + func + '(\"]';\n    year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n    datetime = '-MM-DD[T]HH:mm:ss.SSS';\n    suffix = zone + '[\")]';\n    return this.format(prefix + year + datetime + suffix);\n  }\n\n  function format(inputString) {\n    if (!inputString) {\n      inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n    }\n\n    var output = formatMoment(this, inputString);\n    return this.localeData().postformat(output);\n  }\n\n  function from(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        to: this,\n        from: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function fromNow(withoutSuffix) {\n    return this.from(createLocal(), withoutSuffix);\n  }\n\n  function to(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        from: this,\n        to: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function toNow(withoutSuffix) {\n    return this.to(createLocal(), withoutSuffix);\n  } // If passed a locale key, it will set the locale for this\n  // instance.  Otherwise, it will return the locale configuration\n  // variables for this instance.\n\n\n  function locale(key) {\n    var newLocaleData;\n\n    if (key === undefined) {\n      return this._locale._abbr;\n    } else {\n      newLocaleData = getLocale(key);\n\n      if (newLocaleData != null) {\n        this._locale = newLocaleData;\n      }\n\n      return this;\n    }\n  }\n\n  var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n    if (key === undefined) {\n      return this.localeData();\n    } else {\n      return this.locale(key);\n    }\n  });\n\n  function localeData() {\n    return this._locale;\n  }\n\n  var MS_PER_SECOND = 1000,\n      MS_PER_MINUTE = 60 * MS_PER_SECOND,\n      MS_PER_HOUR = 60 * MS_PER_MINUTE,\n      MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):\n\n  function mod$1(dividend, divisor) {\n    return (dividend % divisor + divisor) % divisor;\n  }\n\n  function localStartOfDate(y, m, d) {\n    // the date constructor remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return new Date(y, m, d).valueOf();\n    }\n  }\n\n  function utcStartOfDate(y, m, d) {\n    // Date.UTC remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return Date.UTC(y, m, d);\n    }\n  }\n\n  function startOf(units) {\n    var time, startOfDate;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year(), 0, 1);\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month(), 1);\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date());\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_MINUTE);\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_SECOND);\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function endOf(units) {\n    var time, startOfDate;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year() + 1, 0, 1) - 1;\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function valueOf() {\n    return this._d.valueOf() - (this._offset || 0) * 60000;\n  }\n\n  function unix() {\n    return Math.floor(this.valueOf() / 1000);\n  }\n\n  function toDate() {\n    return new Date(this.valueOf());\n  }\n\n  function toArray() {\n    var m = this;\n    return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n  }\n\n  function toObject() {\n    var m = this;\n    return {\n      years: m.year(),\n      months: m.month(),\n      date: m.date(),\n      hours: m.hours(),\n      minutes: m.minutes(),\n      seconds: m.seconds(),\n      milliseconds: m.milliseconds()\n    };\n  }\n\n  function toJSON() {\n    // new Date(NaN).toJSON() === null\n    return this.isValid() ? this.toISOString() : null;\n  }\n\n  function isValid$2() {\n    return isValid(this);\n  }\n\n  function parsingFlags() {\n    return extend({}, getParsingFlags(this));\n  }\n\n  function invalidAt() {\n    return getParsingFlags(this).overflow;\n  }\n\n  function creationData() {\n    return {\n      input: this._i,\n      format: this._f,\n      locale: this._locale,\n      isUTC: this._isUTC,\n      strict: this._strict\n    };\n  }\n\n  addFormatToken('N', 0, 0, 'eraAbbr');\n  addFormatToken('NN', 0, 0, 'eraAbbr');\n  addFormatToken('NNN', 0, 0, 'eraAbbr');\n  addFormatToken('NNNN', 0, 0, 'eraName');\n  addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n  addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n  addFormatToken('y', ['yy', 2], 0, 'eraYear');\n  addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n  addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n  addRegexToken('N', matchEraAbbr);\n  addRegexToken('NN', matchEraAbbr);\n  addRegexToken('NNN', matchEraAbbr);\n  addRegexToken('NNNN', matchEraName);\n  addRegexToken('NNNNN', matchEraNarrow);\n  addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n    var era = config._locale.erasParse(input, token, config._strict);\n\n    if (era) {\n      getParsingFlags(config).era = era;\n    } else {\n      getParsingFlags(config).invalidEra = input;\n    }\n  });\n  addRegexToken('y', matchUnsigned);\n  addRegexToken('yy', matchUnsigned);\n  addRegexToken('yyy', matchUnsigned);\n  addRegexToken('yyyy', matchUnsigned);\n  addRegexToken('yo', matchEraYearOrdinal);\n  addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n  addParseToken(['yo'], function (input, array, config, token) {\n    var match;\n\n    if (config._locale._eraYearOrdinalRegex) {\n      match = input.match(config._locale._eraYearOrdinalRegex);\n    }\n\n    if (config._locale.eraYearOrdinalParse) {\n      array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n    } else {\n      array[YEAR] = parseInt(input, 10);\n    }\n  });\n\n  function localeEras(m, format) {\n    var i,\n        l,\n        date,\n        eras = this._eras || getLocale('en')._eras;\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      switch (typeof eras[i].since) {\n        case 'string':\n          // truncate time\n          date = hooks(eras[i].since).startOf('day');\n          eras[i].since = date.valueOf();\n          break;\n      }\n\n      switch (typeof eras[i].until) {\n        case 'undefined':\n          eras[i].until = +Infinity;\n          break;\n\n        case 'string':\n          // truncate time\n          date = hooks(eras[i].until).startOf('day').valueOf();\n          eras[i].until = date.valueOf();\n          break;\n      }\n    }\n\n    return eras;\n  }\n\n  function localeErasParse(eraName, format, strict) {\n    var i,\n        l,\n        eras = this.eras(),\n        name,\n        abbr,\n        narrow;\n    eraName = eraName.toUpperCase();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      name = eras[i].name.toUpperCase();\n      abbr = eras[i].abbr.toUpperCase();\n      narrow = eras[i].narrow.toUpperCase();\n\n      if (strict) {\n        switch (format) {\n          case 'N':\n          case 'NN':\n          case 'NNN':\n            if (abbr === eraName) {\n              return eras[i];\n            }\n\n            break;\n\n          case 'NNNN':\n            if (name === eraName) {\n              return eras[i];\n            }\n\n            break;\n\n          case 'NNNNN':\n            if (narrow === eraName) {\n              return eras[i];\n            }\n\n            break;\n        }\n      } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n        return eras[i];\n      }\n    }\n  }\n\n  function localeErasConvertYear(era, year) {\n    var dir = era.since <= era.until ? +1 : -1;\n\n    if (year === undefined) {\n      return hooks(era.since).year();\n    } else {\n      return hooks(era.since).year() + (year - era.offset) * dir;\n    }\n  }\n\n  function getEraName() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      // truncate time\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until) {\n        return eras[i].name;\n      }\n\n      if (eras[i].until <= val && val <= eras[i].since) {\n        return eras[i].name;\n      }\n    }\n\n    return '';\n  }\n\n  function getEraNarrow() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      // truncate time\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until) {\n        return eras[i].narrow;\n      }\n\n      if (eras[i].until <= val && val <= eras[i].since) {\n        return eras[i].narrow;\n      }\n    }\n\n    return '';\n  }\n\n  function getEraAbbr() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      // truncate time\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until) {\n        return eras[i].abbr;\n      }\n\n      if (eras[i].until <= val && val <= eras[i].since) {\n        return eras[i].abbr;\n      }\n    }\n\n    return '';\n  }\n\n  function getEraYear() {\n    var i,\n        l,\n        dir,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      dir = eras[i].since <= eras[i].until ? +1 : -1; // truncate time\n\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n        return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n      }\n    }\n\n    return this.year();\n  }\n\n  function erasNameRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasNameRegex')) {\n      computeErasParse.call(this);\n    }\n\n    return isStrict ? this._erasNameRegex : this._erasRegex;\n  }\n\n  function erasAbbrRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasAbbrRegex')) {\n      computeErasParse.call(this);\n    }\n\n    return isStrict ? this._erasAbbrRegex : this._erasRegex;\n  }\n\n  function erasNarrowRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasNarrowRegex')) {\n      computeErasParse.call(this);\n    }\n\n    return isStrict ? this._erasNarrowRegex : this._erasRegex;\n  }\n\n  function matchEraAbbr(isStrict, locale) {\n    return locale.erasAbbrRegex(isStrict);\n  }\n\n  function matchEraName(isStrict, locale) {\n    return locale.erasNameRegex(isStrict);\n  }\n\n  function matchEraNarrow(isStrict, locale) {\n    return locale.erasNarrowRegex(isStrict);\n  }\n\n  function matchEraYearOrdinal(isStrict, locale) {\n    return locale._eraYearOrdinalRegex || matchUnsigned;\n  }\n\n  function computeErasParse() {\n    var abbrPieces = [],\n        namePieces = [],\n        narrowPieces = [],\n        mixedPieces = [],\n        i,\n        l,\n        eras = this.eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      namePieces.push(regexEscape(eras[i].name));\n      abbrPieces.push(regexEscape(eras[i].abbr));\n      narrowPieces.push(regexEscape(eras[i].narrow));\n      mixedPieces.push(regexEscape(eras[i].name));\n      mixedPieces.push(regexEscape(eras[i].abbr));\n      mixedPieces.push(regexEscape(eras[i].narrow));\n    }\n\n    this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n    this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n    this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  addFormatToken(0, ['gg', 2], 0, function () {\n    return this.weekYear() % 100;\n  });\n  addFormatToken(0, ['GG', 2], 0, function () {\n    return this.isoWeekYear() % 100;\n  });\n\n  function addWeekYearFormatToken(token, getter) {\n    addFormatToken(0, [token, token.length], 0, getter);\n  }\n\n  addWeekYearFormatToken('gggg', 'weekYear');\n  addWeekYearFormatToken('ggggg', 'weekYear');\n  addWeekYearFormatToken('GGGG', 'isoWeekYear');\n  addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES\n\n  addUnitAlias('weekYear', 'gg');\n  addUnitAlias('isoWeekYear', 'GG'); // PRIORITY\n\n  addUnitPriority('weekYear', 1);\n  addUnitPriority('isoWeekYear', 1); // PARSING\n\n  addRegexToken('G', matchSigned);\n  addRegexToken('g', matchSigned);\n  addRegexToken('GG', match1to2, match2);\n  addRegexToken('gg', match1to2, match2);\n  addRegexToken('GGGG', match1to4, match4);\n  addRegexToken('gggg', match1to4, match4);\n  addRegexToken('GGGGG', match1to6, match6);\n  addRegexToken('ggggg', match1to6, match6);\n  addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n    week[token.substr(0, 2)] = toInt(input);\n  });\n  addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n    week[token] = hooks.parseTwoDigitYear(input);\n  }); // MOMENTS\n\n  function getSetWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n  }\n\n  function getSetISOWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n  }\n\n  function getISOWeeksInYear() {\n    return weeksInYear(this.year(), 1, 4);\n  }\n\n  function getISOWeeksInISOWeekYear() {\n    return weeksInYear(this.isoWeekYear(), 1, 4);\n  }\n\n  function getWeeksInYear() {\n    var weekInfo = this.localeData()._week;\n\n    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n  }\n\n  function getWeeksInWeekYear() {\n    var weekInfo = this.localeData()._week;\n\n    return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n  }\n\n  function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n    var weeksTarget;\n\n    if (input == null) {\n      return weekOfYear(this, dow, doy).year;\n    } else {\n      weeksTarget = weeksInYear(input, dow, doy);\n\n      if (week > weeksTarget) {\n        week = weeksTarget;\n      }\n\n      return setWeekAll.call(this, input, week, weekday, dow, doy);\n    }\n  }\n\n  function setWeekAll(weekYear, week, weekday, dow, doy) {\n    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n    this.year(date.getUTCFullYear());\n    this.month(date.getUTCMonth());\n    this.date(date.getUTCDate());\n    return this;\n  } // FORMATTING\n\n\n  addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES\n\n  addUnitAlias('quarter', 'Q'); // PRIORITY\n\n  addUnitPriority('quarter', 7); // PARSING\n\n  addRegexToken('Q', match1);\n  addParseToken('Q', function (input, array) {\n    array[MONTH] = (toInt(input) - 1) * 3;\n  }); // MOMENTS\n\n  function getSetQuarter(input) {\n    return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n  } // FORMATTING\n\n\n  addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES\n\n  addUnitAlias('date', 'D'); // PRIORITY\n\n  addUnitPriority('date', 9); // PARSING\n\n  addRegexToken('D', match1to2);\n  addRegexToken('DD', match1to2, match2);\n  addRegexToken('Do', function (isStrict, locale) {\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n    return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n  });\n  addParseToken(['D', 'DD'], DATE);\n  addParseToken('Do', function (input, array) {\n    array[DATE] = toInt(input.match(match1to2)[0]);\n  }); // MOMENTS\n\n  var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING\n\n  addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES\n\n  addUnitAlias('dayOfYear', 'DDD'); // PRIORITY\n\n  addUnitPriority('dayOfYear', 4); // PARSING\n\n  addRegexToken('DDD', match1to3);\n  addRegexToken('DDDD', match3);\n  addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n    config._dayOfYear = toInt(input);\n  }); // HELPERS\n  // MOMENTS\n\n  function getSetDayOfYear(input) {\n    var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES\n\n  addUnitAlias('minute', 'm'); // PRIORITY\n\n  addUnitPriority('minute', 14); // PARSING\n\n  addRegexToken('m', match1to2);\n  addRegexToken('mm', match1to2, match2);\n  addParseToken(['m', 'mm'], MINUTE); // MOMENTS\n\n  var getSetMinute = makeGetSet('Minutes', false); // FORMATTING\n\n  addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES\n\n  addUnitAlias('second', 's'); // PRIORITY\n\n  addUnitPriority('second', 15); // PARSING\n\n  addRegexToken('s', match1to2);\n  addRegexToken('ss', match1to2, match2);\n  addParseToken(['s', 'ss'], SECOND); // MOMENTS\n\n  var getSetSecond = makeGetSet('Seconds', false); // FORMATTING\n\n  addFormatToken('S', 0, 0, function () {\n    return ~~(this.millisecond() / 100);\n  });\n  addFormatToken(0, ['SS', 2], 0, function () {\n    return ~~(this.millisecond() / 10);\n  });\n  addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n  addFormatToken(0, ['SSSS', 4], 0, function () {\n    return this.millisecond() * 10;\n  });\n  addFormatToken(0, ['SSSSS', 5], 0, function () {\n    return this.millisecond() * 100;\n  });\n  addFormatToken(0, ['SSSSSS', 6], 0, function () {\n    return this.millisecond() * 1000;\n  });\n  addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n    return this.millisecond() * 10000;\n  });\n  addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n    return this.millisecond() * 100000;\n  });\n  addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n    return this.millisecond() * 1000000;\n  }); // ALIASES\n\n  addUnitAlias('millisecond', 'ms'); // PRIORITY\n\n  addUnitPriority('millisecond', 16); // PARSING\n\n  addRegexToken('S', match1to3, match1);\n  addRegexToken('SS', match1to3, match2);\n  addRegexToken('SSS', match1to3, match3);\n  var token, getSetMillisecond;\n\n  for (token = 'SSSS'; token.length <= 9; token += 'S') {\n    addRegexToken(token, matchUnsigned);\n  }\n\n  function parseMs(input, array) {\n    array[MILLISECOND] = toInt(('0.' + input) * 1000);\n  }\n\n  for (token = 'S'; token.length <= 9; token += 'S') {\n    addParseToken(token, parseMs);\n  }\n\n  getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING\n\n  addFormatToken('z', 0, 0, 'zoneAbbr');\n  addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS\n\n  function getZoneAbbr() {\n    return this._isUTC ? 'UTC' : '';\n  }\n\n  function getZoneName() {\n    return this._isUTC ? 'Coordinated Universal Time' : '';\n  }\n\n  var proto = Moment.prototype;\n  proto.add = add;\n  proto.calendar = calendar$1;\n  proto.clone = clone;\n  proto.diff = diff;\n  proto.endOf = endOf;\n  proto.format = format;\n  proto.from = from;\n  proto.fromNow = fromNow;\n  proto.to = to;\n  proto.toNow = toNow;\n  proto.get = stringGet;\n  proto.invalidAt = invalidAt;\n  proto.isAfter = isAfter;\n  proto.isBefore = isBefore;\n  proto.isBetween = isBetween;\n  proto.isSame = isSame;\n  proto.isSameOrAfter = isSameOrAfter;\n  proto.isSameOrBefore = isSameOrBefore;\n  proto.isValid = isValid$2;\n  proto.lang = lang;\n  proto.locale = locale;\n  proto.localeData = localeData;\n  proto.max = prototypeMax;\n  proto.min = prototypeMin;\n  proto.parsingFlags = parsingFlags;\n  proto.set = stringSet;\n  proto.startOf = startOf;\n  proto.subtract = subtract;\n  proto.toArray = toArray;\n  proto.toObject = toObject;\n  proto.toDate = toDate;\n  proto.toISOString = toISOString;\n  proto.inspect = inspect;\n\n  if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n    proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n      return 'Moment<' + this.format() + '>';\n    };\n  }\n\n  proto.toJSON = toJSON;\n  proto.toString = toString;\n  proto.unix = unix;\n  proto.valueOf = valueOf;\n  proto.creationData = creationData;\n  proto.eraName = getEraName;\n  proto.eraNarrow = getEraNarrow;\n  proto.eraAbbr = getEraAbbr;\n  proto.eraYear = getEraYear;\n  proto.year = getSetYear;\n  proto.isLeapYear = getIsLeapYear;\n  proto.weekYear = getSetWeekYear;\n  proto.isoWeekYear = getSetISOWeekYear;\n  proto.quarter = proto.quarters = getSetQuarter;\n  proto.month = getSetMonth;\n  proto.daysInMonth = getDaysInMonth;\n  proto.week = proto.weeks = getSetWeek;\n  proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n  proto.weeksInYear = getWeeksInYear;\n  proto.weeksInWeekYear = getWeeksInWeekYear;\n  proto.isoWeeksInYear = getISOWeeksInYear;\n  proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n  proto.date = getSetDayOfMonth;\n  proto.day = proto.days = getSetDayOfWeek;\n  proto.weekday = getSetLocaleDayOfWeek;\n  proto.isoWeekday = getSetISODayOfWeek;\n  proto.dayOfYear = getSetDayOfYear;\n  proto.hour = proto.hours = getSetHour;\n  proto.minute = proto.minutes = getSetMinute;\n  proto.second = proto.seconds = getSetSecond;\n  proto.millisecond = proto.milliseconds = getSetMillisecond;\n  proto.utcOffset = getSetOffset;\n  proto.utc = setOffsetToUTC;\n  proto.local = setOffsetToLocal;\n  proto.parseZone = setOffsetToParsedOffset;\n  proto.hasAlignedHourOffset = hasAlignedHourOffset;\n  proto.isDST = isDaylightSavingTime;\n  proto.isLocal = isLocal;\n  proto.isUtcOffset = isUtcOffset;\n  proto.isUtc = isUtc;\n  proto.isUTC = isUtc;\n  proto.zoneAbbr = getZoneAbbr;\n  proto.zoneName = getZoneName;\n  proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n  proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n  proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n  proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n  proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n  function createUnix(input) {\n    return createLocal(input * 1000);\n  }\n\n  function createInZone() {\n    return createLocal.apply(null, arguments).parseZone();\n  }\n\n  function preParsePostFormat(string) {\n    return string;\n  }\n\n  var proto$1 = Locale.prototype;\n  proto$1.calendar = calendar;\n  proto$1.longDateFormat = longDateFormat;\n  proto$1.invalidDate = invalidDate;\n  proto$1.ordinal = ordinal;\n  proto$1.preparse = preParsePostFormat;\n  proto$1.postformat = preParsePostFormat;\n  proto$1.relativeTime = relativeTime;\n  proto$1.pastFuture = pastFuture;\n  proto$1.set = set;\n  proto$1.eras = localeEras;\n  proto$1.erasParse = localeErasParse;\n  proto$1.erasConvertYear = localeErasConvertYear;\n  proto$1.erasAbbrRegex = erasAbbrRegex;\n  proto$1.erasNameRegex = erasNameRegex;\n  proto$1.erasNarrowRegex = erasNarrowRegex;\n  proto$1.months = localeMonths;\n  proto$1.monthsShort = localeMonthsShort;\n  proto$1.monthsParse = localeMonthsParse;\n  proto$1.monthsRegex = monthsRegex;\n  proto$1.monthsShortRegex = monthsShortRegex;\n  proto$1.week = localeWeek;\n  proto$1.firstDayOfYear = localeFirstDayOfYear;\n  proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n  proto$1.weekdays = localeWeekdays;\n  proto$1.weekdaysMin = localeWeekdaysMin;\n  proto$1.weekdaysShort = localeWeekdaysShort;\n  proto$1.weekdaysParse = localeWeekdaysParse;\n  proto$1.weekdaysRegex = weekdaysRegex;\n  proto$1.weekdaysShortRegex = weekdaysShortRegex;\n  proto$1.weekdaysMinRegex = weekdaysMinRegex;\n  proto$1.isPM = localeIsPM;\n  proto$1.meridiem = localeMeridiem;\n\n  function get$1(format, index, field, setter) {\n    var locale = getLocale(),\n        utc = createUTC().set(setter, index);\n    return locale[field](utc, format);\n  }\n\n  function listMonthsImpl(format, index, field) {\n    if (isNumber(format)) {\n      index = format;\n      format = undefined;\n    }\n\n    format = format || '';\n\n    if (index != null) {\n      return get$1(format, index, field, 'month');\n    }\n\n    var i,\n        out = [];\n\n    for (i = 0; i < 12; i++) {\n      out[i] = get$1(format, i, field, 'month');\n    }\n\n    return out;\n  } // ()\n  // (5)\n  // (fmt, 5)\n  // (fmt)\n  // (true)\n  // (true, 5)\n  // (true, fmt, 5)\n  // (true, fmt)\n\n\n  function listWeekdaysImpl(localeSorted, format, index, field) {\n    if (typeof localeSorted === 'boolean') {\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    } else {\n      format = localeSorted;\n      index = format;\n      localeSorted = false;\n\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    }\n\n    var locale = getLocale(),\n        shift = localeSorted ? locale._week.dow : 0,\n        i,\n        out = [];\n\n    if (index != null) {\n      return get$1(format, (index + shift) % 7, field, 'day');\n    }\n\n    for (i = 0; i < 7; i++) {\n      out[i] = get$1(format, (i + shift) % 7, field, 'day');\n    }\n\n    return out;\n  }\n\n  function listMonths(format, index) {\n    return listMonthsImpl(format, index, 'months');\n  }\n\n  function listMonthsShort(format, index) {\n    return listMonthsImpl(format, index, 'monthsShort');\n  }\n\n  function listWeekdays(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n  }\n\n  function listWeekdaysShort(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n  }\n\n  function listWeekdaysMin(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n  }\n\n  getSetGlobalLocale('en', {\n    eras: [{\n      since: '0001-01-01',\n      until: +Infinity,\n      offset: 1,\n      name: 'Anno Domini',\n      narrow: 'AD',\n      abbr: 'AD'\n    }, {\n      since: '0000-12-31',\n      until: -Infinity,\n      offset: 1,\n      name: 'Before Christ',\n      narrow: 'BC',\n      abbr: 'BC'\n    }],\n    dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n    ordinal: function ordinal(number) {\n      var b = number % 10,\n          output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n      return number + output;\n    }\n  }); // Side effect imports\n\n  hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n  hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n  var mathAbs = Math.abs;\n\n  function abs() {\n    var data = this._data;\n    this._milliseconds = mathAbs(this._milliseconds);\n    this._days = mathAbs(this._days);\n    this._months = mathAbs(this._months);\n    data.milliseconds = mathAbs(data.milliseconds);\n    data.seconds = mathAbs(data.seconds);\n    data.minutes = mathAbs(data.minutes);\n    data.hours = mathAbs(data.hours);\n    data.months = mathAbs(data.months);\n    data.years = mathAbs(data.years);\n    return this;\n  }\n\n  function addSubtract$1(duration, input, value, direction) {\n    var other = createDuration(input, value);\n    duration._milliseconds += direction * other._milliseconds;\n    duration._days += direction * other._days;\n    duration._months += direction * other._months;\n    return duration._bubble();\n  } // supports only 2.0-style add(1, 's') or add(duration)\n\n\n  function add$1(input, value) {\n    return addSubtract$1(this, input, value, 1);\n  } // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\n\n  function subtract$1(input, value) {\n    return addSubtract$1(this, input, value, -1);\n  }\n\n  function absCeil(number) {\n    if (number < 0) {\n      return Math.floor(number);\n    } else {\n      return Math.ceil(number);\n    }\n  }\n\n  function bubble() {\n    var milliseconds = this._milliseconds,\n        days = this._days,\n        months = this._months,\n        data = this._data,\n        seconds,\n        minutes,\n        hours,\n        years,\n        monthsFromDays; // if we have a mix of positive and negative values, bubble down first\n    // check: https://github.com/moment/moment/issues/2166\n\n    if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n      milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n      days = 0;\n      months = 0;\n    } // The following code bubbles up values, see the tests for\n    // examples of what that means.\n\n\n    data.milliseconds = milliseconds % 1000;\n    seconds = absFloor(milliseconds / 1000);\n    data.seconds = seconds % 60;\n    minutes = absFloor(seconds / 60);\n    data.minutes = minutes % 60;\n    hours = absFloor(minutes / 60);\n    data.hours = hours % 24;\n    days += absFloor(hours / 24); // convert days to months\n\n    monthsFromDays = absFloor(daysToMonths(days));\n    months += monthsFromDays;\n    days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12;\n    data.days = days;\n    data.months = months;\n    data.years = years;\n    return this;\n  }\n\n  function daysToMonths(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    // 400 years have 12 months === 4800\n    return days * 4800 / 146097;\n  }\n\n  function monthsToDays(months) {\n    // the reverse of daysToMonths\n    return months * 146097 / 4800;\n  }\n\n  function as(units) {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    var days,\n        months,\n        milliseconds = this._milliseconds;\n    units = normalizeUnits(units);\n\n    if (units === 'month' || units === 'quarter' || units === 'year') {\n      days = this._days + milliseconds / 864e5;\n      months = this._months + daysToMonths(days);\n\n      switch (units) {\n        case 'month':\n          return months;\n\n        case 'quarter':\n          return months / 3;\n\n        case 'year':\n          return months / 12;\n      }\n    } else {\n      // handle milliseconds separately because of floating point math errors (issue #1867)\n      days = this._days + Math.round(monthsToDays(this._months));\n\n      switch (units) {\n        case 'week':\n          return days / 7 + milliseconds / 6048e5;\n\n        case 'day':\n          return days + milliseconds / 864e5;\n\n        case 'hour':\n          return days * 24 + milliseconds / 36e5;\n\n        case 'minute':\n          return days * 1440 + milliseconds / 6e4;\n\n        case 'second':\n          return days * 86400 + milliseconds / 1000;\n        // Math.floor prevents floating point math errors here\n\n        case 'millisecond':\n          return Math.floor(days * 864e5) + milliseconds;\n\n        default:\n          throw new Error('Unknown unit ' + units);\n      }\n    }\n  } // TODO: Use this.as('ms')?\n\n\n  function valueOf$1() {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n  }\n\n  function makeAs(alias) {\n    return function () {\n      return this.as(alias);\n    };\n  }\n\n  var asMilliseconds = makeAs('ms'),\n      asSeconds = makeAs('s'),\n      asMinutes = makeAs('m'),\n      asHours = makeAs('h'),\n      asDays = makeAs('d'),\n      asWeeks = makeAs('w'),\n      asMonths = makeAs('M'),\n      asQuarters = makeAs('Q'),\n      asYears = makeAs('y');\n\n  function clone$1() {\n    return createDuration(this);\n  }\n\n  function get$2(units) {\n    units = normalizeUnits(units);\n    return this.isValid() ? this[units + 's']() : NaN;\n  }\n\n  function makeGetter(name) {\n    return function () {\n      return this.isValid() ? this._data[name] : NaN;\n    };\n  }\n\n  var milliseconds = makeGetter('milliseconds'),\n      seconds = makeGetter('seconds'),\n      minutes = makeGetter('minutes'),\n      hours = makeGetter('hours'),\n      days = makeGetter('days'),\n      months = makeGetter('months'),\n      years = makeGetter('years');\n\n  function weeks() {\n    return absFloor(this.days() / 7);\n  }\n\n  var round = Math.round,\n      thresholds = {\n    ss: 44,\n    // a few seconds to seconds\n    s: 45,\n    // seconds to minute\n    m: 45,\n    // minutes to hour\n    h: 22,\n    // hours to day\n    d: 26,\n    // days to month/week\n    w: null,\n    // weeks to month\n    M: 11 // months to year\n\n  }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\n  function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n  }\n\n  function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n    var duration = createDuration(posNegDuration).abs(),\n        seconds = round(duration.as('s')),\n        minutes = round(duration.as('m')),\n        hours = round(duration.as('h')),\n        days = round(duration.as('d')),\n        months = round(duration.as('M')),\n        weeks = round(duration.as('w')),\n        years = round(duration.as('y')),\n        a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n\n    if (thresholds.w != null) {\n      a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n    }\n\n    a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n    a[2] = withoutSuffix;\n    a[3] = +posNegDuration > 0;\n    a[4] = locale;\n    return substituteTimeAgo.apply(null, a);\n  } // This function allows you to set the rounding function for relative time strings\n\n\n  function getSetRelativeTimeRounding(roundingFunction) {\n    if (roundingFunction === undefined) {\n      return round;\n    }\n\n    if (typeof roundingFunction === 'function') {\n      round = roundingFunction;\n      return true;\n    }\n\n    return false;\n  } // This function allows you to set a threshold for relative time strings\n\n\n  function getSetRelativeTimeThreshold(threshold, limit) {\n    if (thresholds[threshold] === undefined) {\n      return false;\n    }\n\n    if (limit === undefined) {\n      return thresholds[threshold];\n    }\n\n    thresholds[threshold] = limit;\n\n    if (threshold === 's') {\n      thresholds.ss = limit - 1;\n    }\n\n    return true;\n  }\n\n  function humanize(argWithSuffix, argThresholds) {\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var withSuffix = false,\n        th = thresholds,\n        locale,\n        output;\n\n    if (typeof argWithSuffix === 'object') {\n      argThresholds = argWithSuffix;\n      argWithSuffix = false;\n    }\n\n    if (typeof argWithSuffix === 'boolean') {\n      withSuffix = argWithSuffix;\n    }\n\n    if (typeof argThresholds === 'object') {\n      th = Object.assign({}, thresholds, argThresholds);\n\n      if (argThresholds.s != null && argThresholds.ss == null) {\n        th.ss = argThresholds.s - 1;\n      }\n    }\n\n    locale = this.localeData();\n    output = relativeTime$1(this, !withSuffix, th, locale);\n\n    if (withSuffix) {\n      output = locale.pastFuture(+this, output);\n    }\n\n    return locale.postformat(output);\n  }\n\n  var abs$1 = Math.abs;\n\n  function sign(x) {\n    return (x > 0) - (x < 0) || +x;\n  }\n\n  function toISOString$1() {\n    // for ISO strings we do not use the normal bubbling rules:\n    //  * milliseconds bubble up until they become hours\n    //  * days do not bubble at all\n    //  * months bubble up until they become years\n    // This is because there is no context-free conversion between hours and days\n    // (think of clock changes)\n    // and also not between days and months (28-31 days per month)\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var seconds = abs$1(this._milliseconds) / 1000,\n        days = abs$1(this._days),\n        months = abs$1(this._months),\n        minutes,\n        hours,\n        years,\n        s,\n        total = this.asSeconds(),\n        totalSign,\n        ymSign,\n        daysSign,\n        hmsSign;\n\n    if (!total) {\n      // this is the same as C#'s (Noda) and python (isodate)...\n      // but not other JS (goog.date)\n      return 'P0D';\n    } // 3600 seconds -> 60 minutes -> 1 hour\n\n\n    minutes = absFloor(seconds / 60);\n    hours = absFloor(minutes / 60);\n    seconds %= 60;\n    minutes %= 60; // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\n    s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n    totalSign = total < 0 ? '-' : '';\n    ymSign = sign(this._months) !== sign(total) ? '-' : '';\n    daysSign = sign(this._days) !== sign(total) ? '-' : '';\n    hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n    return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n  }\n\n  var proto$2 = Duration.prototype;\n  proto$2.isValid = isValid$1;\n  proto$2.abs = abs;\n  proto$2.add = add$1;\n  proto$2.subtract = subtract$1;\n  proto$2.as = as;\n  proto$2.asMilliseconds = asMilliseconds;\n  proto$2.asSeconds = asSeconds;\n  proto$2.asMinutes = asMinutes;\n  proto$2.asHours = asHours;\n  proto$2.asDays = asDays;\n  proto$2.asWeeks = asWeeks;\n  proto$2.asMonths = asMonths;\n  proto$2.asQuarters = asQuarters;\n  proto$2.asYears = asYears;\n  proto$2.valueOf = valueOf$1;\n  proto$2._bubble = bubble;\n  proto$2.clone = clone$1;\n  proto$2.get = get$2;\n  proto$2.milliseconds = milliseconds;\n  proto$2.seconds = seconds;\n  proto$2.minutes = minutes;\n  proto$2.hours = hours;\n  proto$2.days = days;\n  proto$2.weeks = weeks;\n  proto$2.months = months;\n  proto$2.years = years;\n  proto$2.humanize = humanize;\n  proto$2.toISOString = toISOString$1;\n  proto$2.toString = toISOString$1;\n  proto$2.toJSON = toISOString$1;\n  proto$2.locale = locale;\n  proto$2.localeData = localeData;\n  proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n  proto$2.lang = lang; // FORMATTING\n\n  addFormatToken('X', 0, 0, 'unix');\n  addFormatToken('x', 0, 0, 'valueOf'); // PARSING\n\n  addRegexToken('x', matchSigned);\n  addRegexToken('X', matchTimestamp);\n  addParseToken('X', function (input, array, config) {\n    config._d = new Date(parseFloat(input) * 1000);\n  });\n  addParseToken('x', function (input, array, config) {\n    config._d = new Date(toInt(input));\n  }); //! moment.js\n\n  hooks.version = '2.27.0';\n  setHookCallback(createLocal);\n  hooks.fn = proto;\n  hooks.min = min;\n  hooks.max = max;\n  hooks.now = now;\n  hooks.utc = createUTC;\n  hooks.unix = createUnix;\n  hooks.months = listMonths;\n  hooks.isDate = isDate;\n  hooks.locale = getSetGlobalLocale;\n  hooks.invalid = createInvalid;\n  hooks.duration = createDuration;\n  hooks.isMoment = isMoment;\n  hooks.weekdays = listWeekdays;\n  hooks.parseZone = createInZone;\n  hooks.localeData = getLocale;\n  hooks.isDuration = isDuration;\n  hooks.monthsShort = listMonthsShort;\n  hooks.weekdaysMin = listWeekdaysMin;\n  hooks.defineLocale = defineLocale;\n  hooks.updateLocale = updateLocale;\n  hooks.locales = listLocales;\n  hooks.weekdaysShort = listWeekdaysShort;\n  hooks.normalizeUnits = normalizeUnits;\n  hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n  hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n  hooks.calendarFormat = getCalendarFormat;\n  hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats\n\n  hooks.HTML5_FMT = {\n    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n    // <input type=\"datetime-local\" />\n    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n    // <input type=\"datetime-local\" step=\"1\" />\n    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n    // <input type=\"datetime-local\" step=\"0.001\" />\n    DATE: 'YYYY-MM-DD',\n    // <input type=\"date\" />\n    TIME: 'HH:mm',\n    // <input type=\"time\" />\n    TIME_SECONDS: 'HH:mm:ss',\n    // <input type=\"time\" step=\"1\" />\n    TIME_MS: 'HH:mm:ss.SSS',\n    // <input type=\"time\" step=\"0.001\" />\n    WEEK: 'GGGG-[W]WW',\n    // <input type=\"week\" />\n    MONTH: 'YYYY-MM' // <input type=\"month\" />\n\n  };\n  return hooks;\n});","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/keyBy.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/react-chartjs-2/es/index.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./src/components/lineChart.js","webpack:///./src/components/barChart.js","webpack:///./src/components/performanceCard.js","webpack:///./src/components/testimonials.js","webpack:///./src/pages/performance.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/_baseToString.js"],"names":["assocIndexOf","module","exports","key","this","__data__","baseProperty","basePropertyDeep","isKey","toKey","path","baseGetTag","isObjectLike","value","baseIsArguments","objectProto","Object","prototype","hasOwnProperty","propertyIsEnumerable","isArguments","arguments","call","ListCache","Map","MapCache","data","pairs","length","LARGE_ARRAY_SIZE","push","size","set","setCacheAdd","setCacheHas","SetCache","values","index","add","has","coreJsData","funcToString","Function","toString","func","e","baseGet","object","memoize","resolver","TypeError","memoized","args","apply","cache","get","result","Cache","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","clear","entry","castPath","isArray","isIndex","isLength","hasFunc","stringToPath","Ctor","constructor","undefined","arrayLikeKeys","baseKeys","isArrayLike","map","Array","forEach","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","i","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","isSymbol","reIsDeepProp","reIsPlainProp","type","test","isPrototype","nativeKeys","Symbol","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","offset","isObject","baseIsNative","getValue","stubFalse","freeExports","nodeType","freeModule","Buffer","root","isBuffer","uid","maskSrcKey","exec","keys","IE_PROTO","baseIsEqual","hasIn","isStrictComparable","matchesStrictComparable","srcValue","objValue","COMPARE_PARTIAL_FLAG","memoizeCapped","rePropName","reEscapeChar","string","charCodeAt","replace","match","number","quote","subString","getMapData","Uint8Array","eq","equalArrays","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","other","bitmask","customizer","equalFunc","stack","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","Promise","getNative","baseFor","iteratee","baseEach","collection","setter","accumulator","nativeCreate","freeGlobal","freeSelf","self","predicate","resIndex","isFunction","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","getRawTag","objectToString","defineProperty","WeakMap","baseAssignValue","keyBy","createAggregator","isKeyable","DataView","Set","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","baseForOwn","createBaseEach","enumerable","_chart","defaults","Scatter","Bubble","Polar","Radar","HorizontalBar","Bar","Line","Pie","Doughnut","_react","_interopRequireDefault","_propTypes","_isEqual","_keyBy","obj","__esModule","default","_extends","assign","target","source","_typeof","iterator","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","ownKeys","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","getPrototypeOf","NODE_ENV","ChartComponent","_React$Component","_super","_this","event","chartInstance","_this$props","getDatasetAtEvent","getElementAtEvent","getElementsAtEvent","onElementsClick","element","renderChart","redraw","destroyChart","updateChart","nextProps","_this$props2","options","plugins","legend","height","width","nextData","transformDataProp","shadowDataProp","datasets","saveCurrentDatasets","isDev","usingCustomKeyProvider","datasetKeyProvider","getLabelAsKey","multipleDatasets","shouldWarn","dataset","label","console","error","config","_this2","getCurrentDatasets","d","_this3","memoizeDataProps","helpers","configMerge","currentDatasets","nextDatasets","checkDatasets","currentDatasetsIndexed","next","current","splice","point","pid","otherProps","rest","update","_this$props3","node","defaultProps","destroy","_this$props4","id","createElement","ref","onClick","handleOnClick","Component","oneOfType","isRequired","arrayOf","bool","propName","componentName","controllers","display","position","_default","_React$Component2","_super2","_this4","_ref","_React$Component3","_super3","_this5","_ref2","_React$Component4","_super4","_this6","_ref3","_React$Component5","_super5","_this7","_ref4","_React$Component6","_super6","_this8","_ref5","_React$Component7","_super7","_this9","_ref6","_React$Component8","_super8","_this10","_ref7","_React$Component9","_super9","_this11","_ref8","_React$Component10","_super10","_this12","_ref9","arrayAggregator","baseAggregator","baseIteratee","initializer","n","overArg","global","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","webpackPolyfill","deprecate","paths","children","l","baseIsMatch","getMatchData","matchData","pop","baseTimes","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","createBaseFor","typedArrayTags","baseToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Stack","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","arrayPush","keysFunc","symbolsFunc","stackClear","stackDelete","stackGet","stackHas","stackSet","baseHasIn","hasPath","transform","arg","eachFunc","fromRight","iterable","noCustomizer","freeProcess","types","require","defaultValue","arraySome","cacheHas","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","LineChart","state","lineChartData","render","scales","xAxes","ticks","fontColor","maxTicksLimit","gridLines","color","scaleLabel","labelString","xAxis","yAxes","yAxis","labels","displayLegend","legendPosition","animation","duration","easing","BarChart","barChartData","padding","beginAtZero","PerformanceCard","primary","graphData","heading","chartType","sx","boxShadow","borderRadius","backgroundColor","marginY","marginX","flexDirection","justifyContent","alignItems","fontSize","margin","textAlign","boxShadowBottom","borderBottomRightRadius","borderBottomLeftRadius","borderTop","marginBottom","marginTop","Testimonials","link","gridGap","gridTemplateColumns","gridTemplateRows","boxSizing","fontFamily","fontStyle","lineHeight","textDecoration","fontWeight","href","rel","className","performance","barChartJDK8Startup","barChartJDK8Footprint","lineChartJK8FasterRampupInTheCloud","fill","borderColor","lineChartJK8FootprintDuringLoad","barChartJDK11Startup","barChartJDK11Footprint","lineChartJK11FasterRampupInTheCloud","lineChartJK11FootprintDuringLoad","barChartJDK11QuarkusStartup","barChartJDK11QuarkusFootprint","lineChartJK11QuarkusFasterRampupInTheCloud","barChartJK11QuarkusFootprintDuringLoad","isHome","description","paddingX","paddingTop","paddingBottom","h1","h2","flexWrap","variant","baseGetAllKeys","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseMatches","baseMatchesProperty","identity","property","baseIsEqualDeep","reIsUint","hookCallback","some","hooks","input","hasOwnProp","a","b","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","arr","fn","res","extend","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","t","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","slice","join","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","localeData","formatMoment","expandFormat","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","matched","p1","p2","p3","p4","s","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","names","j","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","isMomentInput","arrayTest","dataTypeTest","item","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","arrayMap","symbolToString"],"mappings":"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CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,IACA,GAEFyhB,gBAAgB,CACd,UACA,cAKRgC,mCAAmC,CACjClD,OAAQ,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MACtDjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,IACA,KACA,KACA,KACA,OACA,KACA,OACA,OACA,KACA,QAGF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,KACA,MACA,MACA,MACA,IACA,MACA,MACA,MACA,KACA,QAEF0jB,MAAM,EACNC,YAAY,UACZlC,gBAAgB,aAItBmC,gCAAgC,CAC9BrD,OAAQ,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAM,KAAM,KAAM,KAAM,MACxDjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF0jB,MAAM,EACNC,YAAY,UACZlC,gBAAgB,aAItBoC,qBAAqB,CACnBtD,OAAQ,CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,IACA,GAEFyhB,gBAAgB,CACd,UACA,cAKRqC,uBAAuB,CACrBvD,OAAQ,CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,GACA,GAEFyhB,gBAAgB,CACd,UACA,cAKRsC,oCAAoC,CAClCxD,OAAQ,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF0jB,MAAM,EACNC,YAAY,UACZlC,gBAAgB,aAItBuC,iCAAiC,CAC/BzD,OAAQ,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,KACrCjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,IACA,IACA,IACA,IACA,IACA,IACA,KAEF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,IACA,IACA,IACA,IACA,IACA,KACA,MAEF0jB,MAAM,EACNC,YAAY,UACZlC,gBAAgB,aAKtBwC,4BAA4B,CAC1B1D,OAAQ,CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,IACA,GAEFyhB,gBAAgB,CACd,UACA,cAMRyC,8BAA8B,CAC5B3D,OAAQ,CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,IACA,GAEFyhB,gBAAgB,CACd,UACA,cAMR0C,2CAA2C,CACzC5D,OAAQ,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1DjM,SAAS,CACP,CACES,MAAO,SACP/U,KAAK,CACH,EACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF0jB,MAAM,EACNC,YAAa,UACblC,gBAAgB,WAElB,CACE1M,MAAO,UACP/U,KAAK,CACH,EACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF0jB,MAAM,EACNC,YAAY,UACZlC,gBAAgB,aAKtB2C,uCAAuC,CACrC7D,OAAQ,CAAC,SAAU,WACnBjM,SAAS,CACP,CACEtU,KAAK,CACH,IACA,KAEFyhB,gBAAgB,CACd,UACA,e,sCAOV/B,OAAA,WACE,OACE,YAAC,IAAD,CAAQ2E,QAAQ,EAAOlf,MAAM,6BAA6Bmf,YAAY,mFACtE,uBAAShD,GAAI,CAAEG,gBAAiB,UAAY8C,SAAU,KAAMC,WAAY,OAAQC,cAAe,WAC7F,YAAC,IAAOC,GAAR,CAAWpD,GAAI,CAACgB,aAAa,SAA7B,wBACE,YAAC,IAAO9Q,EAAR,uiBASJ,uBAASmF,GAAG,YACV2K,GAAI,CACFG,gBAAiB,UACjB8C,SAAU,KACVC,WAAY,SACZC,cAAe,SAGjB,YAAC,IAAOE,GAAR,mDACA,YAAC,IAAOnT,EAAR,CAAU8P,GAAI,CAACgB,aAAa,WAA5B,wGAKA,mBACEhB,GAAI,CACF9J,QAAS,OACTqK,eAAgB,eAChB+C,SAAU,SAGZ,YAAC,EAAD,CAAiBzD,UAAWziB,KAAK8gB,MAAMqE,qBAAsBzC,QAAQ,0BAA0BF,SAAS,EAAMG,UAAU,MAAMf,MAAM,yBAClI,oIAEF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAMsE,uBAAwB1C,QAAQ,sCAAsCF,SAAS,EAAMG,UAAU,MAAMf,MAAM,8BAChJ,oIAEF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAMuE,oCAAqC3C,QAAQ,mCAAmCF,SAAS,EAAMG,UAAU,OAAOjB,MAAM,WAAWE,MAAM,wBAC5K,qJAEF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAMwE,iCAAkC5C,QAAQ,oCAAoCF,SAAS,EAAMG,UAAU,OAAOf,MAAM,yBAAyBF,MAAM,YACxL,4JAGJ,mBACEkB,GAAI,CACF9J,QAAS,OACTqK,eAAgB,WAGlB,iBAAGP,GAAI,CACHuD,QAAS,oBACTrN,QAAS,OACTsK,WAAY,SACZD,eAAgB,SAChBoB,eAAgB,OAChB/O,MAAM,QACNqO,UAAU,QAEVY,KAAK,iGAAiGC,IAAI,sBAAsBjU,OAAO,UAT3I,gCAYF,mBACImS,GAAI,CACA9J,QAAS,OACTkL,QAAQ,OACRC,oBAAoB,CAAC,iBAAkB,iBAAkB,iBAAkB,kBAC3E6B,WAAW,SAGjB,YAAC,EAAD,CAAcpV,OAAO,oBAAoBqT,KAAK,2EAA9C,8IAIA,YAAC,EAAD,CAAcrT,OAAO,oBAAoBqT,KAAK,0EAA9C,qJAMF,uBAAS9L,GAAG,mBACV2K,GAAI,CACFG,gBAAiB,UACjB8C,SAAU,KACVC,WAAY,SACZC,cAAe,SAGjB,YAAC,IAAOE,GAAR,+DACA,YAAC,IAAOnT,EAAR,CAAU8P,GAAI,CAACgB,aAAa,WAA5B,+FAIA,mBACEhB,GAAI,CACF9J,QAAS,OACTqK,eAAgB,eAChB+C,SAAU,SAGZ,YAAC,EAAD,CAAiBzD,UAAWziB,KAAK8gB,MAAMyE,4BAA6B7C,QAAQ,0BAA0BF,SAAS,EAAMG,UAAU,MAAMf,MAAM,yBACzI,2IAEF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAM0E,8BAA+B9C,QAAQ,sCAAsCF,SAAS,EAAMG,UAAU,MAAMf,MAAM,8BACvJ,2IAEF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAM2E,2CAA4C/C,QAAQ,mCAAmCF,SAAS,EAAMG,UAAU,OAAOjB,MAAM,WAAWE,MAAM,wBACnL,gJAEF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAM4E,uCAAwChD,QAAQ,oCAAoCF,SAAS,EAAMG,UAAU,MAAMf,MAAM,yBAAyBF,MAAM,YAC7L,0IAGJ,mBACEkB,GAAI,CACF9J,QAAS,OACTqK,eAAgB,WAGlB,iBAAGP,GAAI,CACHuD,QAAS,oBACTrN,QAAS,OACTsK,WAAY,SACZD,eAAgB,SAChBoB,eAAgB,OAChB/O,MAAM,QACNqO,UAAU,QAEVY,KAAK,oFAAoFC,IAAI,sBAAsBjU,OAAO,UAT9H,gCAYF,mBACEmS,GAAI,CACA9J,QAAS,OACTkL,QAAQ,OACRC,oBAAoB,CAAC,iBAAkB,iBAAkB,iBAAkB,kBAC3E6B,WAAW,SAGf,YAAC,EAAD,CAAcpV,OAAO,qBAAqBqT,KAAK,iIAA/C,6IAIA,YAAC,EAAD,CAAcrT,OAAO,2BAA2BqT,KAAK,uEAArD,oFAMN,uBAAS9L,GAAG,WACV2K,GAAI,CACFG,gBAAiB,UACjB8C,SAAU,KACVC,WAAY,SACZC,cAAe,SAGjB,YAAC,IAAOE,GAAR,kDACA,YAAC,IAAOnT,EAAR,CAAU8P,GAAI,CAACgB,aAAa,WAA5B,iIAKA,mBACEhB,GAAI,CACF9J,QAAS,OACTqK,eAAgB,eAChB+C,SAAU,SAGZ,YAAC,EAAD,CAAiBzD,UAAWziB,KAAK8gB,MAAM+D,oBAAqBnC,QAAQ,0BAA0BF,SAAS,EAAMG,UAAU,MAAMf,MAAM,yBACjI,0LAGF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAMgE,sBAAuBpC,QAAQ,sCAAsCF,SAAS,EAAMG,UAAU,MAAMf,MAAM,8BAC/I,oLAGF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAMiE,mCAAoCrC,QAAQ,mCAAmCF,SAAS,EAAMG,UAAU,OAAOjB,MAAM,WAAWE,MAAM,wBAC3K,kLAGF,YAAC,EAAD,CAAiBa,UAAWziB,KAAK8gB,MAAMoE,gCAAiCxC,QAAQ,oCAAoCF,SAAS,EAAMG,UAAU,OAAOf,MAAM,yBAAyBF,MAAM,YACvL,oLAIJ,mBACEkB,GAAI,CACF9J,QAAS,OACTqK,eAAgB,WAGlB,iBAAGP,GAAI,CACHuD,QAAS,oBACTrN,QAAS,OACTsK,WAAY,SACZD,eAAgB,SAChBoB,eAAgB,OAChB/O,MAAM,QACNqO,UAAU,QAEVY,KAAK,uFAAuFC,IAAI,sBAAsBjU,OAAO,UATjI,gCAYF,mBACImS,GAAI,CACA9J,QAAS,OACTkL,QAAQ,OACRC,oBAAoB,CAAC,iBAAkB,iBAAkB,iBAAkB,kBAC3E6B,WAAW,SAGjB,YAAC,EAAD,CAAcpV,OAAO,8BAA8BqT,KAAK,yCAAxD,qHAIA,YAAC,EAAD,CAAcrT,OAAO,uBAAuBqT,KAAK,4GAAjD,iJ,GAliBgBzL,aA4iBXsM,a,qBC3kBf,IAAI9Z,EAAa,EAAQ,QAezBjL,EAAOC,QAJP,SAAqBC,GACnB,OAAO+K,EAAW9K,KAAMD,GAAKoC,IAAIpC,K,qBCZnC,IAAIqmB,EAAiB,EAAQ,QACzB9Y,EAAa,EAAQ,QACrB3D,EAAO,EAAQ,QAanB9J,EAAOC,QAJP,SAAoB6C,GAClB,OAAOyjB,EAAezjB,EAAQgH,EAAM2D,K,mBCKtCzN,EAAOC,QAVP,SAAoB8B,GAClB,IAAIK,GAAS,EACTmB,EAASwB,MAAMhD,EAAID,MAKvB,OAHAC,EAAIiD,SAAQ,SAASpE,GACnB2C,IAASnB,GAASxB,KAEb2C,I,mBCDTvD,EAAOC,QANP,SAAmB0C,GACjB,OAAO,SAAS/B,GACd,OAAO+B,EAAK/B,M,qBCThB,IAAI4lB,EAAa,EAAQ,QASrBvlB,EAHcF,OAAOC,UAGQC,eAgFjCjB,EAAOC,QAjEP,SAAsB6C,EAAQ4I,EAAOC,EAASC,EAAYC,EAAWC,GACnE,IAAIM,EAtBqB,EAsBTT,EACZ8a,EAAWD,EAAW1jB,GACtB4jB,EAAYD,EAAS9kB,OAIzB,GAAI+kB,GAHWF,EAAW9a,GACD/J,SAEMyK,EAC7B,OAAO,EAGT,IADA,IAAIhK,EAAQskB,EACLtkB,KAAS,CACd,IAAIlC,EAAMumB,EAASrkB,GACnB,KAAMgK,EAAYlM,KAAOwL,EAAQzK,EAAeI,KAAKqK,EAAOxL,IAC1D,OAAO,EAIX,IAAIymB,EAAa7a,EAAMxI,IAAIR,GACvB4d,EAAa5U,EAAMxI,IAAIoI,GAC3B,GAAIib,GAAcjG,EAChB,OAAOiG,GAAcjb,GAASgV,GAAc5d,EAE9C,IAAIS,GAAS,EACbuI,EAAM/J,IAAIe,EAAQ4I,GAClBI,EAAM/J,IAAI2J,EAAO5I,GAGjB,IADA,IAAI8jB,EAAWxa,IACNhK,EAAQskB,GAAW,CAE1B,IAAIrc,EAAWvH,EADf5C,EAAMumB,EAASrkB,IAEXye,EAAWnV,EAAMxL,GAErB,GAAI0L,EACF,IAAIkV,EAAW1U,EACXR,EAAWiV,EAAUxW,EAAUnK,EAAKwL,EAAO5I,EAAQgJ,GACnDF,EAAWvB,EAAUwW,EAAU3gB,EAAK4C,EAAQ4I,EAAOI,GAGzD,UAAmBpH,IAAboc,EACGzW,IAAawW,GAAYhV,EAAUxB,EAAUwW,EAAUlV,EAASC,EAAYE,GAC7EgV,GACD,CACLvd,GAAS,EACT,MAEFqjB,IAAaA,EAAkB,eAAP1mB,GAE1B,GAAIqD,IAAWqjB,EAAU,CACvB,IAAIC,EAAU/jB,EAAO2B,YACjBqiB,EAAUpb,EAAMjH,YAGhBoiB,GAAWC,KACV,gBAAiBhkB,MAAU,gBAAiB4I,IACzB,mBAAXmb,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDvjB,GAAS,GAKb,OAFAuI,EAAc,OAAEhJ,GAChBgJ,EAAc,OAAEJ,GACTnI,I,mBCpDTvD,EAAOC,QALP,SAAkBW,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,mB,qBCDvB,IAAIb,EAAe,EAAQ,QAkB3BC,EAAOC,QAPP,SAAsBC,GACpB,IAAIuB,EAAOtB,KAAKC,SACZgC,EAAQrC,EAAa0B,EAAMvB,GAE/B,OAAOkC,EAAQ,OAAIsC,EAAYjD,EAAKW,GAAO,K,qBCf7C,IAIIqM,EAJY,EAAQ,OAITlC,CAHJ,EAAQ,QAGY,YAE/BvM,EAAOC,QAAUwO,G,qBCNjB,IAAI3B,EAAe,EAAQ,QASvB7L,EAHcF,OAAOC,UAGQC,eAoBjCjB,EAAOC,QATP,SAAiBC,GACf,IAAIuB,EAAOtB,KAAKC,SAChB,GAAI0M,EAAc,CAChB,IAAIvJ,EAAS9B,EAAKvB,GAClB,MArBiB,8BAqBVqD,OAA4BmB,EAAYnB,EAEjD,OAAOtC,EAAeI,KAAKI,EAAMvB,GAAOuB,EAAKvB,QAAOwE,I,uBC1BtD,IAAIqiB,EAAc,EAAQ,QACtBC,EAAsB,EAAQ,QAC9BC,EAAW,EAAQ,QACnB9iB,EAAU,EAAQ,QAClB+iB,EAAW,EAAQ,QA0BvBlnB,EAAOC,QAjBP,SAAsBW,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKqmB,EAEW,iBAATrmB,EACFuD,EAAQvD,GACXomB,EAAoBpmB,EAAM,GAAIA,EAAM,IACpCmmB,EAAYnmB,GAEXsmB,EAAStmB,K,uBC3BlB,IAAIumB,EAAkB,EAAQ,QAC1BxmB,EAAe,EAAQ,QA0B3BX,EAAOC,QAVP,SAAS+J,EAAYpJ,EAAO8K,EAAOC,EAASC,EAAYE,GACtD,OAAIlL,IAAU8K,IAGD,MAAT9K,GAA0B,MAAT8K,IAAmB/K,EAAaC,KAAWD,EAAa+K,GACpE9K,GAAUA,GAAS8K,GAAUA,EAE/Byb,EAAgBvmB,EAAO8K,EAAOC,EAASC,EAAY5B,EAAa8B,M,mBCvBzE,IAGIsb,EAAW,mBAoBfpnB,EAAOC,QAVP,SAAiBW,EAAOe,GACtB,IAAI0G,SAAczH,EAGlB,SAFAe,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAAR0G,GACU,UAARA,GAAoB+e,EAAS9e,KAAK1H,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQe,I,wBCrBjD,YAQiE3B,EAAOC,QAC/D,WACP,aAEA,IAAIonB,EAqHAC,EAnHJ,SAASC,IACP,OAAOF,EAAajkB,MAAM,KAAMhC,WASlC,SAAS+C,EAAQqjB,GACf,OAAOA,aAAiBziB,OAAmD,mBAA1ChE,OAAOC,UAAU0B,SAASrB,KAAKmmB,GAGlE,SAASve,EAASue,GAGhB,OAAgB,MAATA,GAA2D,oBAA1CzmB,OAAOC,UAAU0B,SAASrB,KAAKmmB,GAGzD,SAASC,EAAWC,EAAGC,GACrB,OAAO5mB,OAAOC,UAAUC,eAAeI,KAAKqmB,EAAGC,GAGjD,SAASC,EAAcrX,GACrB,GAAIxP,OAAO8mB,oBACT,OAAkD,IAA3C9mB,OAAO8mB,oBAAoBtX,GAAK5O,OAEvC,IAAImmB,EAEJ,IAAKA,KAAKvX,EACR,GAAIkX,EAAWlX,EAAKuX,GAClB,OAAO,EAIX,OAAO,EAIX,SAASC,EAAYP,GACnB,YAAiB,IAAVA,EAGT,SAASQ,EAASR,GAChB,MAAwB,iBAAVA,GAAgE,oBAA1CzmB,OAAOC,UAAU0B,SAASrB,KAAKmmB,GAGrE,SAASS,EAAOT,GACd,OAAOA,aAAiB7T,MAAkD,kBAA1C5S,OAAOC,UAAU0B,SAASrB,KAAKmmB,GAGjE,SAAS1iB,EAAIojB,EAAKC,GAChB,IACIxhB,EADAyhB,EAAM,GAGV,IAAKzhB,EAAI,EAAGA,EAAIuhB,EAAIvmB,SAAUgF,EAC5ByhB,EAAIvmB,KAAKsmB,EAAGD,EAAIvhB,GAAIA,IAGtB,OAAOyhB,EAGT,SAASC,EAAOX,EAAGC,GACjB,IAAK,IAAIhhB,KAAKghB,EACRF,EAAWE,EAAGhhB,KAChB+gB,EAAE/gB,GAAKghB,EAAEhhB,IAYb,OARI8gB,EAAWE,EAAG,cAChBD,EAAEhlB,SAAWilB,EAAEjlB,UAGb+kB,EAAWE,EAAG,aAChBD,EAAEjc,QAAUkc,EAAElc,SAGTic,EAGT,SAASY,EAAUd,EAAOe,EAAQC,EAAQC,GACxC,OAAOC,GAAiBlB,EAAOe,EAAQC,EAAQC,GAAQ,GAAME,MAyB/D,SAASC,EAAgBC,GAKvB,OAJa,MAATA,EAAEC,MACJD,EAAEC,IAtBG,CACLC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbC,UAAW,EACXC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,IASZjB,EAAEC,IAuBX,SAASiB,EAAQlB,GACf,GAAkB,MAAdA,EAAEmB,SAAkB,CACtB,IAAIC,EAAQrB,EAAgBC,GACxBqB,EAAc5C,EAAKjmB,KAAK4oB,EAAMP,iBAAiB,SAAU/iB,GAC3D,OAAY,MAALA,KAELwjB,GAAcC,MAAMvB,EAAEwB,GAAGC,YAAcL,EAAMf,SAAW,IAAMe,EAAMlB,QAAUkB,EAAMZ,aAAeY,EAAMX,eAAiBW,EAAMM,iBAAmBN,EAAMH,kBAAoBG,EAAMb,YAAca,EAAMV,gBAAkBU,EAAMT,mBAAqBS,EAAML,UAAYK,EAAML,UAAYM,GAM5R,GAJIrB,EAAE2B,UACJL,EAAaA,GAAsC,IAAxBF,EAAMd,eAAqD,IAA9Bc,EAAMjB,aAAarnB,aAAkC+C,IAAlBulB,EAAMQ,SAG5E,MAAnB1pB,OAAO2pB,UAAqB3pB,OAAO2pB,SAAS7B,GAG9C,OAAOsB,EAFPtB,EAAEmB,SAAWG,EAMjB,OAAOtB,EAAEmB,SAGX,SAASW,EAAcV,GACrB,IAAIpB,EAAIP,EAAUsC,KAQlB,OANa,MAATX,EACF5B,EAAOO,EAAgBC,GAAIoB,GAE3BrB,EAAgBC,GAAGW,iBAAkB,EAGhCX,EAhDPvB,EADEviB,MAAM/D,UAAUsmB,KACXviB,MAAM/D,UAAUsmB,KAEhB,SAAc9hB,GACnB,IAEImB,EAFAkkB,EAAI9pB,OAAOZ,MACXgG,EAAM0kB,EAAElpB,SAAW,EAGvB,IAAKgF,EAAI,EAAGA,EAAIR,EAAKQ,IACnB,GAAIA,KAAKkkB,GAAKrlB,EAAInE,KAAKlB,KAAM0qB,EAAElkB,GAAIA,EAAGkkB,GACpC,OAAO,EAIX,OAAO,GAwCX,IAAIC,EAAmBvD,EAAMuD,iBAAmB,GAC5CC,GAAmB,EAEvB,SAASC,EAAWC,EAAIC,GACtB,IAAIvkB,EAAGwkB,EAAMC,EA0Cb,GAxCKrD,EAAYmD,EAAKG,oBACpBJ,EAAGI,iBAAmBH,EAAKG,kBAGxBtD,EAAYmD,EAAKI,MACpBL,EAAGK,GAAKJ,EAAKI,IAGVvD,EAAYmD,EAAKK,MACpBN,EAAGM,GAAKL,EAAKK,IAGVxD,EAAYmD,EAAKM,MACpBP,EAAGO,GAAKN,EAAKM,IAGVzD,EAAYmD,EAAKV,WACpBS,EAAGT,QAAUU,EAAKV,SAGfzC,EAAYmD,EAAKO,QACpBR,EAAGQ,KAAOP,EAAKO,MAGZ1D,EAAYmD,EAAKQ,UACpBT,EAAGS,OAASR,EAAKQ,QAGd3D,EAAYmD,EAAKS,WACpBV,EAAGU,QAAUT,EAAKS,SAGf5D,EAAYmD,EAAKpC,OACpBmC,EAAGnC,IAAMF,EAAgBsC,IAGtBnD,EAAYmD,EAAKU,WACpBX,EAAGW,QAAUV,EAAKU,SAGhBd,EAAiBnpB,OAAS,EAC5B,IAAKgF,EAAI,EAAGA,EAAImkB,EAAiBnpB,OAAQgF,IAIlCohB,EAFLqD,EAAMF,EADNC,EAAOL,EAAiBnkB,OAItBskB,EAAGE,GAAQC,GAKjB,OAAOH,EAIT,SAASY,EAAOlV,GACdqU,EAAW7qB,KAAMwW,GACjBxW,KAAKkqB,GAAK,IAAI1W,KAAkB,MAAbgD,EAAO0T,GAAa1T,EAAO0T,GAAGC,UAAYM,KAExDzqB,KAAK4pB,YACR5pB,KAAKkqB,GAAK,IAAI1W,KAAKiX,OAKI,IAArBG,IACFA,GAAmB,EACnBxD,EAAMuE,aAAa3rB,MACnB4qB,GAAmB,GAIvB,SAASgB,EAASxb,GAChB,OAAOA,aAAesb,GAAiB,MAAPtb,GAAuC,MAAxBA,EAAI8a,iBAGrD,SAASW,EAAKC,IAC8B,IAAtC1E,EAAM2E,6BAA4D,oBAAZzV,SAA2BA,QAAQuV,MAC3FvV,QAAQuV,KAAK,wBAA0BC,GAI3C,SAAS5P,EAAU4P,EAAK9D,GACtB,IAAIgE,GAAY,EAChB,OAAO9D,GAAO,WAKZ,GAJgC,MAA5Bd,EAAM6E,oBACR7E,EAAM6E,mBAAmB,KAAMH,GAG7BE,EAAW,CACb,IACIvM,EACAjZ,EACAzG,EAHAiD,EAAO,GAKX,IAAKwD,EAAI,EAAGA,EAAIvF,UAAUO,OAAQgF,IAAK,CAGrC,GAFAiZ,EAAM,GAEsB,iBAAjBxe,UAAUuF,GAAiB,CAGpC,IAAKzG,KAFL0f,GAAO,MAAQjZ,EAAI,KAEPvF,UAAU,GAChBqmB,EAAWrmB,UAAU,GAAIlB,KAC3B0f,GAAO1f,EAAM,KAAOkB,UAAU,GAAGlB,GAAO,MAI5C0f,EAAMA,EAAIyM,MAAM,GAAI,QAEpBzM,EAAMxe,UAAUuF,GAGlBxD,EAAKtB,KAAK+d,GAGZoM,EAAKC,EAAM,gBAAkBlnB,MAAM/D,UAAUqrB,MAAMhrB,KAAK8B,GAAMmpB,KAAK,IAAM,MAAO,IAAIjnB,OAAQyG,OAC5FqgB,GAAY,EAGd,OAAOhE,EAAG/kB,MAAMjD,KAAMiB,aACrB+mB,GAGL,IA4EIre,EA5EAyiB,EAAe,GAEnB,SAASC,EAAgB5kB,EAAMqkB,GACG,MAA5B1E,EAAM6E,oBACR7E,EAAM6E,mBAAmBxkB,EAAMqkB,GAG5BM,EAAa3kB,KAChBokB,EAAKC,GACLM,EAAa3kB,IAAQ,GAOzB,SAASwF,EAAWoa,GAClB,MAA2B,oBAAb/kB,UAA4B+kB,aAAiB/kB,UAAsD,sBAA1C1B,OAAOC,UAAU0B,SAASrB,KAAKmmB,GAyBxG,SAASiF,EAAaC,EAAcC,GAClC,IACIxB,EADA/C,EAAMC,EAAO,GAAIqE,GAGrB,IAAKvB,KAAQwB,EACPlF,EAAWkF,EAAaxB,KACtBliB,EAASyjB,EAAavB,KAAUliB,EAAS0jB,EAAYxB,KACvD/C,EAAI+C,GAAQ,GACZ9C,EAAOD,EAAI+C,GAAOuB,EAAavB,IAC/B9C,EAAOD,EAAI+C,GAAOwB,EAAYxB,KACA,MAArBwB,EAAYxB,GACrB/C,EAAI+C,GAAQwB,EAAYxB,UAEjB/C,EAAI+C,IAKjB,IAAKA,KAAQuB,EACPjF,EAAWiF,EAAcvB,KAAU1D,EAAWkF,EAAaxB,IAASliB,EAASyjB,EAAavB,MAE5F/C,EAAI+C,GAAQ9C,EAAO,GAAID,EAAI+C,KAI/B,OAAO/C,EAGT,SAASwE,EAAOjW,GACA,MAAVA,GACFxW,KAAK4B,IAAI4U,GAqCb,SAASkW,EAAS/hB,EAAQgiB,EAAcC,GACtC,IAAIC,EAAY,GAAKC,KAAKC,IAAIpiB,GAC1BqiB,EAAcL,EAAeE,EAAUrrB,OAE3C,OADWmJ,GAAU,EACNiiB,EAAY,IAAM,GAAK,KAAOE,KAAKG,IAAI,GAAIH,KAAKI,IAAI,EAAGF,IAAczqB,WAAW4qB,OAAO,GAAKN,EApG7GzF,EAAM2E,6BAA8B,EACpC3E,EAAM6E,mBAAqB,KAiEzBtiB,EADE/I,OAAO+I,KACF/I,OAAO+I,KAEP,SAAcyG,GACnB,IAAI5J,EACAyhB,EAAM,GAEV,IAAKzhB,KAAK4J,EACJkX,EAAWlX,EAAK5J,IAClByhB,EAAIvmB,KAAK8E,GAIb,OAAOyhB,GAyBX,IAAImF,EAAmB,yMACnBC,EAAwB,6CACxBC,EAAkB,GAClBC,EAAuB,GAK3B,SAASC,EAAeC,EAAOC,EAAQC,EAASC,GAC9C,IAAIprB,EAAOorB,EAEa,iBAAbA,IACTprB,EAAO,WACL,OAAOxC,KAAK4tB,OAIZH,IACFF,EAAqBE,GAASjrB,GAG5BkrB,IACFH,EAAqBG,EAAO,IAAM,WAChC,OAAOhB,EAASlqB,EAAKS,MAAMjD,KAAMiB,WAAYysB,EAAO,GAAIA,EAAO,MAI/DC,IACFJ,EAAqBI,GAAW,WAC9B,OAAO3tB,KAAK6tB,aAAaF,QAAQnrB,EAAKS,MAAMjD,KAAMiB,WAAYwsB,KAuCpE,SAASK,EAAapF,EAAGN,GACvB,OAAKM,EAAEkB,WAIPxB,EAAS2F,EAAa3F,EAAQM,EAAEmF,cAChCP,EAAgBlF,GAAUkF,EAAgBlF,IAhC5C,SAA4BA,GAC1B,IACI5hB,EACAhF,EAX0B6lB,EAS1BhhB,EAAQ+hB,EAAO1d,MAAM0iB,GAIzB,IAAK5mB,EAAI,EAAGhF,EAAS6E,EAAM7E,OAAQgF,EAAIhF,EAAQgF,IACzC+mB,EAAqBlnB,EAAMG,IAC7BH,EAAMG,GAAK+mB,EAAqBlnB,EAAMG,IAEtCH,EAAMG,IAjBoB6gB,EAiBQhhB,EAAMG,IAhBlCkE,MAAM,YACP2c,EAAM5c,QAAQ,WAAY,IAG5B4c,EAAM5c,QAAQ,MAAO,IAgB5B,OAAO,SAAUujB,GACf,IACIxnB,EADAynB,EAAS,GAGb,IAAKznB,EAAI,EAAGA,EAAIhF,EAAQgF,IACtBynB,GAAUhhB,EAAW5G,EAAMG,IAAMH,EAAMG,GAAGtF,KAAK8sB,EAAK5F,GAAU/hB,EAAMG,GAGtE,OAAOynB,GAW4CC,CAAmB9F,GACjEkF,EAAgBlF,GAAQM,IALtBA,EAAEmF,aAAaM,cAQ1B,SAASJ,EAAa3F,EAAQC,GAC5B,IAAI7hB,EAAI,EAER,SAAS4nB,EAA4B/G,GACnC,OAAOgB,EAAOgG,eAAehH,IAAUA,EAKzC,IAFAgG,EAAsBiB,UAAY,EAE3B9nB,GAAK,GAAK6mB,EAAsBllB,KAAKigB,IAC1CA,EAASA,EAAO3d,QAAQ4iB,EAAuBe,GAC/Cf,EAAsBiB,UAAY,EAClC9nB,GAAK,EAGP,OAAO4hB,EAwET,IAAImG,EAAU,GAEd,SAASC,EAAaC,EAAMC,GAC1B,IAAIC,EAAYF,EAAKG,cACrBL,EAAQI,GAAaJ,EAAQI,EAAY,KAAOJ,EAAQG,GAAaD,EAGvE,SAASI,EAAeC,GACtB,MAAwB,iBAAVA,EAAqBP,EAAQO,IAAUP,EAAQO,EAAMF,oBAAiBrqB,EAGtF,SAASwqB,EAAqBC,GAC5B,IACIC,EACAjE,EAFAkE,EAAkB,GAItB,IAAKlE,KAAQgE,EACP1H,EAAW0H,EAAahE,KAC1BiE,EAAiBJ,EAAe7D,MAG9BkE,EAAgBD,GAAkBD,EAAYhE,IAKpD,OAAOkE,EAGT,IAAIC,EAAa,GAEjB,SAASC,EAAgBX,EAAMY,GAC7BF,EAAWV,GAAQY,EAsBrB,SAASC,EAAWC,GAClB,OAAOA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAKA,EAAO,KAAQ,EAG9D,SAASC,EAAS7kB,GAChB,OAAIA,EAAS,EAEJmiB,KAAK2C,KAAK9kB,IAAW,EAErBmiB,KAAK4C,MAAM/kB,GAItB,SAASglB,EAAMC,GACb,IAAIC,GAAiBD,EACjBnvB,EAAQ,EAMZ,OAJsB,IAAlBovB,GAAuBC,SAASD,KAClCpvB,EAAQ+uB,EAASK,IAGZpvB,EAGT,SAASsvB,EAAWtB,EAAMuB,GACxB,OAAO,SAAUvvB,GACf,OAAa,MAATA,GACFwvB,EAAMjwB,KAAMyuB,EAAMhuB,GAClB2mB,EAAMuE,aAAa3rB,KAAMgwB,GAClBhwB,MAEAmD,EAAInD,KAAMyuB,IAKvB,SAAStrB,EAAI6qB,EAAKS,GAChB,OAAOT,EAAIpE,UAAYoE,EAAI9D,GAAG,OAAS8D,EAAIzC,OAAS,MAAQ,IAAMkD,KAAUhE,IAG9E,SAASwF,EAAMjC,EAAKS,EAAMhuB,GACpButB,EAAIpE,YAAcK,MAAMxpB,KACb,aAATguB,GAAuBa,EAAWtB,EAAIuB,SAA2B,IAAhBvB,EAAIkC,SAAgC,KAAflC,EAAImC,QAC5E1vB,EAAQkvB,EAAMlvB,GAEdutB,EAAI9D,GAAG,OAAS8D,EAAIzC,OAAS,MAAQ,IAAMkD,GAAMhuB,EAAOutB,EAAIkC,QAASE,GAAY3vB,EAAOutB,EAAIkC,WAE5FlC,EAAI9D,GAAG,OAAS8D,EAAIzC,OAAS,MAAQ,IAAMkD,GAAMhuB,IAoCvD,IAmCI4vB,EAnCAC,EAAS,KAEbC,EAAS,OAETC,EAAS,QAETC,GAAS,QAETC,GAAS,aAETC,GAAY,QAEZC,GAAY,YAEZC,GAAY,gBAEZC,GAAY,UAEZC,GAAY,UAEZC,GAAY,eAEZC,GAAgB,MAEhBC,GAAc,WAEdC,GAAc,qBAEdC,GAAmB,0BAMnBC,GAAY,wJAIZ,SAASC,GAAc7D,EAAO8D,EAAOC,GACnCnB,EAAQ5C,GAASxgB,EAAWskB,GAASA,EAAQ,SAAUE,EAAU5D,GAC/D,OAAO4D,GAAYD,EAAcA,EAAcD,GAInD,SAASG,GAAsBjE,EAAOjX,GACpC,OAAK8Q,EAAW+I,EAAS5C,GAIlB4C,EAAQ5C,GAAOjX,EAAO6T,QAAS7T,EAAOiV,SAHpC,IAAI5d,OAQN8jB,GAR4BlE,EAQdhjB,QAAQ,KAAM,IAAIA,QAAQ,uCAAuC,SAAUmnB,EAASC,EAAIC,EAAIC,EAAIC,GACnH,OAAOH,GAAMC,GAAMC,GAAMC,OAI7B,SAASL,GAAYM,GACnB,OAAOA,EAAExnB,QAAQ,yBAA0B,QAxB7C4lB,EAAU,GA2BV,IAgDIrf,GAhDAkhB,GAAS,GAEb,SAASC,GAAc1E,EAAOG,GAC5B,IAAIpnB,EACAhE,EAAOorB,EAYX,IAVqB,iBAAVH,IACTA,EAAQ,CAACA,IAGP5F,EAAS+F,KACXprB,EAAO,SAAc6kB,EAAOhhB,GAC1BA,EAAMunB,GAAY+B,EAAMtI,KAIvB7gB,EAAI,EAAGA,EAAIinB,EAAMjsB,OAAQgF,IAC5B0rB,GAAOzE,EAAMjnB,IAAMhE,EAIvB,SAAS4vB,GAAkB3E,EAAOG,GAChCuE,GAAc1E,GAAO,SAAUpG,EAAOhhB,EAAOmQ,EAAQiX,GACnDjX,EAAO6b,GAAK7b,EAAO6b,IAAM,GACzBzE,EAASvG,EAAO7Q,EAAO6b,GAAI7b,EAAQiX,MAIvC,SAAS6E,GAAwB7E,EAAOpG,EAAO7Q,GAChC,MAAT6Q,GAAiBC,EAAW4K,GAAQzE,IACtCyE,GAAOzE,GAAOpG,EAAO7Q,EAAO+b,GAAI/b,EAAQiX,GAqC5C,SAAS2C,GAAYb,EAAMW,GACzB,GAAIjG,MAAMsF,IAAStF,MAAMiG,GACvB,OAAOzF,IAGT,IA5Bc+H,EA4BVC,GAAevC,GA5BLsC,EA4BY,IA3BVA,GAAKA,EA6BrB,OADAjD,IAASW,EAAQuC,GAAY,GACT,IAAbA,EAAiBnD,EAAWC,GAAQ,GAAK,GAAK,GAAKkD,EAAW,EAAI,EAvBzEzhB,GADEpM,MAAM/D,UAAUmQ,QACRpM,MAAM/D,UAAUmQ,QAEhB,SAAiB6B,GAEzB,IAAIrM,EAEJ,IAAKA,EAAI,EAAGA,EAAIxG,KAAKwB,SAAUgF,EAC7B,GAAIxG,KAAKwG,KAAOqM,EACd,OAAOrM,EAIX,OAAQ,GAeZgnB,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACnC,OAAOxtB,KAAKkwB,QAAU,KAExB1C,EAAe,MAAO,EAAG,GAAG,SAAUpF,GACpC,OAAOpoB,KAAK6tB,aAAa6E,YAAY1yB,KAAMooB,MAE7CoF,EAAe,OAAQ,EAAG,GAAG,SAAUpF,GACrC,OAAOpoB,KAAK6tB,aAAa8E,OAAO3yB,KAAMooB,MAGxCoG,EAAa,QAAS,KAEtBY,EAAgB,QAAS,GAEzBkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAO,SAAUG,EAAUpJ,GACvC,OAAOA,EAAOuK,iBAAiBnB,MAEjCH,GAAc,QAAQ,SAAUG,EAAUpJ,GACxC,OAAOA,EAAOwK,YAAYpB,MAE5BU,GAAc,CAAC,IAAK,OAAO,SAAU9K,EAAOhhB,GAC1CA,EAlEU,GAkEKspB,EAAMtI,GAAS,KAEhC8K,GAAc,CAAC,MAAO,SAAS,SAAU9K,EAAOhhB,EAAOmQ,EAAQiX,GAC7D,IAAIyC,EAAQ1Z,EAAOiV,QAAQqH,YAAYzL,EAAOoG,EAAOjX,EAAO6T,SAG/C,MAAT6F,EACF7pB,EAzEQ,GAyEO6pB,EAEfzH,EAAgBjS,GAAQ2S,aAAe9B,KAI3C,IAAI0L,GAAsB,wFAAwFC,MAAM,KACpHC,GAA2B,kDAAkDD,MAAM,KACnFE,GAAmB,gCACnBC,GAA0B9B,GAC1B+B,GAAqB/B,GAkBzB,SAASgC,GAAkBC,EAAWlL,EAAQE,GAC5C,IAAI9hB,EACA+sB,EACAvF,EACAwF,EAAMF,EAAUG,oBAEpB,IAAKzzB,KAAK0zB,aAMR,IAJA1zB,KAAK0zB,aAAe,GACpB1zB,KAAK2zB,iBAAmB,GACxB3zB,KAAK4zB,kBAAoB,GAEpBptB,EAAI,EAAGA,EAAI,KAAMA,EACpBwnB,EAAM7F,EAAU,CAAC,IAAM3hB,IACvBxG,KAAK4zB,kBAAkBptB,GAAKxG,KAAK0yB,YAAY1E,EAAK,IAAIyF,oBACtDzzB,KAAK2zB,iBAAiBntB,GAAKxG,KAAK2yB,OAAO3E,EAAK,IAAIyF,oBAIpD,OAAInL,EACa,QAAXF,GAEa,KADfmL,EAAKviB,GAAQ9P,KAAKlB,KAAK4zB,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAKviB,GAAQ9P,KAAKlB,KAAK2zB,iBAAkBH,IACtBD,EAAK,KAGX,QAAXnL,GAGU,KAFZmL,EAAKviB,GAAQ9P,KAAKlB,KAAK4zB,kBAAmBJ,MAO3B,KADfD,EAAKviB,GAAQ9P,KAAKlB,KAAK2zB,iBAAkBH,IAHhCD,EAIe,MAIZ,KAFZA,EAAKviB,GAAQ9P,KAAKlB,KAAK2zB,iBAAkBH,MAO1B,KADfD,EAAKviB,GAAQ9P,KAAKlB,KAAK4zB,kBAAmBJ,IAHjCD,EAIe,KA+C9B,SAASM,GAAS7F,EAAKvtB,GACrB,IAAIqzB,EAEJ,IAAK9F,EAAIpE,UAEP,OAAOoE,EAGT,GAAqB,iBAAVvtB,EACT,GAAI,QAAQ0H,KAAK1H,GACfA,EAAQkvB,EAAMlvB,QAId,IAAKonB,EAFLpnB,EAAQutB,EAAIH,aAAaiF,YAAYryB,IAGnC,OAAOutB,EASb,OAJA8F,EAAahH,KAAKiH,IAAI/F,EAAImC,OAAQC,GAAYpC,EAAIuB,OAAQ9uB,IAE1DutB,EAAI9D,GAAG,OAAS8D,EAAIzC,OAAS,MAAQ,IAAM,SAAS9qB,EAAOqzB,GAEpD9F,EAGT,SAASgG,GAAYvzB,GACnB,OAAa,MAATA,GACFozB,GAAS7zB,KAAMS,GACf2mB,EAAMuE,aAAa3rB,MAAM,GAClBA,MAEAmD,EAAInD,KAAM,SAgDrB,SAASi0B,KACP,SAASC,EAAU3M,EAAGC,GACpB,OAAOA,EAAEhmB,OAAS+lB,EAAE/lB,OAGtB,IAGIgF,EACAwnB,EAJAmG,EAAc,GACdC,EAAa,GACbC,EAAc,GAIlB,IAAK7tB,EAAI,EAAGA,EAAI,GAAIA,IAElBwnB,EAAM7F,EAAU,CAAC,IAAM3hB,IACvB2tB,EAAYzyB,KAAK1B,KAAK0yB,YAAY1E,EAAK,KACvCoG,EAAW1yB,KAAK1B,KAAK2yB,OAAO3E,EAAK,KACjCqG,EAAY3yB,KAAK1B,KAAK2yB,OAAO3E,EAAK,KAClCqG,EAAY3yB,KAAK1B,KAAK0yB,YAAY1E,EAAK,KASzC,IAJAmG,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GAEZ1tB,EAAI,EAAGA,EAAI,GAAIA,IAClB2tB,EAAY3tB,GAAKmrB,GAAYwC,EAAY3tB,IACzC4tB,EAAW5tB,GAAKmrB,GAAYyC,EAAW5tB,IAGzC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAClB6tB,EAAY7tB,GAAKmrB,GAAY0C,EAAY7tB,IAG3CxG,KAAKu0B,aAAe,IAAI1mB,OAAO,KAAOwmB,EAAYlI,KAAK,KAAO,IAAK,KACnEnsB,KAAKw0B,kBAAoBx0B,KAAKu0B,aAC9Bv0B,KAAKy0B,mBAAqB,IAAI5mB,OAAO,KAAOumB,EAAWjI,KAAK,KAAO,IAAK,KACxEnsB,KAAK00B,wBAA0B,IAAI7mB,OAAO,KAAOsmB,EAAYhI,KAAK,KAAO,IAAK,KAmChF,SAASwI,GAAWpF,GAClB,OAAOD,EAAWC,GAAQ,IAAM,IAhClC/B,EAAe,IAAK,EAAG,GAAG,WACxB,IAAIoH,EAAI50B,KAAKuvB,OACb,OAAOqF,GAAK,KAAOlI,EAASkI,EAAG,GAAK,IAAMA,KAE5CpH,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxtB,KAAKuvB,OAAS,OAEvB/B,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAE1CgB,EAAa,OAAQ,KAErBY,EAAgB,OAAQ,GAExBkC,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,IACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,SAAUN,GAAWN,IACnCyB,GAAc,CAAC,QAAS,UAjVb,GAkVXA,GAAc,QAAQ,SAAU9K,EAAOhhB,GACrCA,EAnVS,GAmVsB,IAAjBghB,EAAM7lB,OAAe4lB,EAAMyN,kBAAkBxN,GAASsI,EAAMtI,MAE5E8K,GAAc,MAAM,SAAU9K,EAAOhhB,GACnCA,EAtVS,GAsVK+gB,EAAMyN,kBAAkBxN,MAExC8K,GAAc,KAAK,SAAU9K,EAAOhhB,GAClCA,EAzVS,GAyVKyuB,SAASzN,EAAO,OAQhCD,EAAMyN,kBAAoB,SAAUxN,GAClC,OAAOsI,EAAMtI,IAAUsI,EAAMtI,GAAS,GAAK,KAAO,MAIpD,IAAI0N,GAAahF,EAAW,YAAY,GAMxC,SAASiF,GAAWJ,EAAGlM,EAAG/R,EAAGse,EAAGC,EAAGjD,EAAGkD,GAGpC,IAAIhF,EAaJ,OAXIyE,EAAI,KAAOA,GAAK,GAElBzE,EAAO,IAAI3c,KAAKohB,EAAI,IAAKlM,EAAG/R,EAAGse,EAAGC,EAAGjD,EAAGkD,GAEpCrF,SAASK,EAAKiF,gBAChBjF,EAAKkF,YAAYT,IAGnBzE,EAAO,IAAI3c,KAAKohB,EAAGlM,EAAG/R,EAAGse,EAAGC,EAAGjD,EAAGkD,GAG7BhF,EAGT,SAASmF,GAAcV,GACrB,IAAIzE,EAAMntB,EAeV,OAbI4xB,EAAI,KAAOA,GAAK,IAClB5xB,EAAO4B,MAAM/D,UAAUqrB,MAAMhrB,KAAKD,YAE7B,GAAK2zB,EAAI,IACdzE,EAAO,IAAI3c,KAAKA,KAAK+hB,IAAItyB,MAAM,KAAMD,IAEjC8sB,SAASK,EAAKqF,mBAChBrF,EAAKsF,eAAeb,IAGtBzE,EAAO,IAAI3c,KAAKA,KAAK+hB,IAAItyB,MAAM,KAAMhC,YAGhCkvB,EAIT,SAASuF,GAAgBnG,EAAMoG,EAAKC,GAClC,IACAC,EAAM,EAAIF,EAAMC,EAGhB,QADS,EAAIN,GAAc/F,EAAM,EAAGsG,GAAKC,YAAcH,GAAO,EAC9CE,EAAM,EAIxB,SAASE,GAAmBxG,EAAMyG,EAAMC,EAASN,EAAKC,GACpD,IAGIM,EACAC,EAFAC,EAAY,EAAI,GAAKJ,EAAO,IAFZ,EAAIC,EAAUN,GAAO,EACxBD,GAAgBnG,EAAMoG,EAAKC,GAgB5C,OAXIQ,GAAa,EAEfD,EAAexB,GADfuB,EAAU3G,EAAO,GACoB6G,EAC5BA,EAAYzB,GAAWpF,IAChC2G,EAAU3G,EAAO,EACjB4G,EAAeC,EAAYzB,GAAWpF,KAEtC2G,EAAU3G,EACV4G,EAAeC,GAGV,CACL7G,KAAM2G,EACNE,UAAWD,GAIf,SAASE,GAAWrI,EAAK2H,EAAKC,GAC5B,IAEIU,EACAJ,EAHAK,EAAab,GAAgB1H,EAAIuB,OAAQoG,EAAKC,GAC9CI,EAAOlJ,KAAK4C,OAAO1B,EAAIoI,YAAcG,EAAa,GAAK,GAAK,EAehE,OAXIP,EAAO,EAETM,EAAUN,EAAOQ,GADjBN,EAAUlI,EAAIuB,OAAS,EACeoG,EAAKC,GAClCI,EAAOQ,GAAYxI,EAAIuB,OAAQoG,EAAKC,IAC7CU,EAAUN,EAAOQ,GAAYxI,EAAIuB,OAAQoG,EAAKC,GAC9CM,EAAUlI,EAAIuB,OAAS,IAEvB2G,EAAUlI,EAAIuB,OACd+G,EAAUN,GAGL,CACLA,KAAMM,EACN/G,KAAM2G,GAIV,SAASM,GAAYjH,EAAMoG,EAAKC,GAC9B,IAAIW,EAAab,GAAgBnG,EAAMoG,EAAKC,GACxCa,EAAiBf,GAAgBnG,EAAO,EAAGoG,EAAKC,GACpD,OAAQjB,GAAWpF,GAAQgH,EAAaE,GAAkB,EA+H5D,SAASC,GAAcC,EAAIlb,GACzB,OAAOkb,EAAGzK,MAAMzQ,EAAG,GAAG5V,OAAO8wB,EAAGzK,MAAM,EAAGzQ,IA5H3C+R,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAErCgB,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAExBY,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAE3BkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B6B,GAAkB,CAAC,IAAK,KAAM,IAAK,OAAO,SAAU/K,EAAO2O,EAAMxf,EAAQiX,GACvEuI,EAAKvI,EAAMN,OAAO,EAAG,IAAMwC,EAAMtI,MAmCnCmG,EAAe,IAAK,EAAG,KAAM,OAC7BA,EAAe,KAAM,EAAG,GAAG,SAAUpF,GACnC,OAAOpoB,KAAK6tB,aAAa+I,YAAY52B,KAAMooB,MAE7CoF,EAAe,MAAO,EAAG,GAAG,SAAUpF,GACpC,OAAOpoB,KAAK6tB,aAAagJ,cAAc72B,KAAMooB,MAE/CoF,EAAe,OAAQ,EAAG,GAAG,SAAUpF,GACrC,OAAOpoB,KAAK6tB,aAAaiJ,SAAS92B,KAAMooB,MAE1CoF,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAE1BgB,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAE3BY,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAE9BkC,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,MAAM,SAAUG,EAAUpJ,GACtC,OAAOA,EAAO0O,iBAAiBtF,MAEjCH,GAAc,OAAO,SAAUG,EAAUpJ,GACvC,OAAOA,EAAO2O,mBAAmBvF,MAEnCH,GAAc,QAAQ,SAAUG,EAAUpJ,GACxC,OAAOA,EAAO4O,cAAcxF,MAE9BW,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAU/K,EAAO2O,EAAMxf,EAAQiX,GACtE,IAAIwI,EAAUzf,EAAOiV,QAAQyL,cAAc7P,EAAOoG,EAAOjX,EAAO6T,SAGjD,MAAX4L,EACFD,EAAKrf,EAAIsf,EAETxN,EAAgBjS,GAAQ4T,eAAiB/C,KAG7C+K,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAU/K,EAAO2O,EAAMxf,EAAQiX,GAChEuI,EAAKvI,GAASkC,EAAMtI,MAkCtB,IAAI8P,GAAwB,2DAA2DnE,MAAM,KACzFoE,GAA6B,8BAA8BpE,MAAM,KACjEqE,GAA2B,uBAAuBrE,MAAM,KACxDsE,GAAuBjG,GACvBkG,GAA4BlG,GAC5BmG,GAA0BnG,GAe9B,SAASoG,GAAoBC,EAAatP,EAAQE,GAChD,IAAI9hB,EACA+sB,EACAvF,EACAwF,EAAMkE,EAAYjE,oBAEtB,IAAKzzB,KAAK23B,eAKR,IAJA33B,KAAK23B,eAAiB,GACtB33B,KAAK43B,oBAAsB,GAC3B53B,KAAK63B,kBAAoB,GAEpBrxB,EAAI,EAAGA,EAAI,IAAKA,EACnBwnB,EAAM7F,EAAU,CAAC,IAAM,IAAI2P,IAAItxB,GAC/BxG,KAAK63B,kBAAkBrxB,GAAKxG,KAAK42B,YAAY5I,EAAK,IAAIyF,oBACtDzzB,KAAK43B,oBAAoBpxB,GAAKxG,KAAK62B,cAAc7I,EAAK,IAAIyF,oBAC1DzzB,KAAK23B,eAAenxB,GAAKxG,KAAK82B,SAAS9I,EAAK,IAAIyF,oBAIpD,OAAInL,EACa,SAAXF,GAEa,KADfmL,EAAKviB,GAAQ9P,KAAKlB,KAAK23B,eAAgBnE,IACpBD,EAAK,KACJ,QAAXnL,GAEM,KADfmL,EAAKviB,GAAQ9P,KAAKlB,KAAK43B,oBAAqBpE,IACzBD,EAAK,MAGT,KADfA,EAAKviB,GAAQ9P,KAAKlB,KAAK63B,kBAAmBrE,IACvBD,EAAK,KAGX,SAAXnL,GAGU,KAFZmL,EAAKviB,GAAQ9P,KAAKlB,KAAK23B,eAAgBnE,MAQ3B,KAFZD,EAAKviB,GAAQ9P,KAAKlB,KAAK43B,oBAAqBpE,MAO7B,KADfD,EAAKviB,GAAQ9P,KAAKlB,KAAK63B,kBAAmBrE,IATjCD,EAUe,KACJ,QAAXnL,GAGG,KAFZmL,EAAKviB,GAAQ9P,KAAKlB,KAAK43B,oBAAqBpE,MAQhC,KAFZD,EAAKviB,GAAQ9P,KAAKlB,KAAK23B,eAAgBnE,MAOxB,KADfD,EAAKviB,GAAQ9P,KAAKlB,KAAK63B,kBAAmBrE,IATjCD,EAUe,MAIZ,KAFZA,EAAKviB,GAAQ9P,KAAKlB,KAAK63B,kBAAmBrE,MAQ9B,KAFZD,EAAKviB,GAAQ9P,KAAKlB,KAAK23B,eAAgBnE,MAOxB,KADfD,EAAKviB,GAAQ9P,KAAKlB,KAAK43B,oBAAqBpE,IATnCD,EAUe,KAoJ9B,SAASwE,KACP,SAAS7D,EAAU3M,EAAGC,GACpB,OAAOA,EAAEhmB,OAAS+lB,EAAE/lB,OAGtB,IAIIgF,EACAwnB,EACAgK,EACAC,EACAC,EARAC,EAAY,GACZhE,EAAc,GACdC,EAAa,GACbC,EAAc,GAOlB,IAAK7tB,EAAI,EAAGA,EAAI,EAAGA,IAEjBwnB,EAAM7F,EAAU,CAAC,IAAM,IAAI2P,IAAItxB,GAC/BwxB,EAAOrG,GAAY3xB,KAAK42B,YAAY5I,EAAK,KACzCiK,EAAStG,GAAY3xB,KAAK62B,cAAc7I,EAAK,KAC7CkK,EAAQvG,GAAY3xB,KAAK82B,SAAS9I,EAAK,KACvCmK,EAAUz2B,KAAKs2B,GACf7D,EAAYzyB,KAAKu2B,GACjB7D,EAAW1yB,KAAKw2B,GAChB7D,EAAY3yB,KAAKs2B,GACjB3D,EAAY3yB,KAAKu2B,GACjB5D,EAAY3yB,KAAKw2B,GAKnBC,EAAU7D,KAAKJ,GACfC,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GACjBl0B,KAAKo4B,eAAiB,IAAIvqB,OAAO,KAAOwmB,EAAYlI,KAAK,KAAO,IAAK,KACrEnsB,KAAKq4B,oBAAsBr4B,KAAKo4B,eAChCp4B,KAAKs4B,kBAAoBt4B,KAAKo4B,eAC9Bp4B,KAAKu4B,qBAAuB,IAAI1qB,OAAO,KAAOumB,EAAWjI,KAAK,KAAO,IAAK,KAC1EnsB,KAAKw4B,0BAA4B,IAAI3qB,OAAO,KAAOsmB,EAAYhI,KAAK,KAAO,IAAK,KAChFnsB,KAAKy4B,wBAA0B,IAAI5qB,OAAO,KAAOsqB,EAAUhM,KAAK,KAAO,IAAK,KAI9E,SAASuM,KACP,OAAO14B,KAAK24B,QAAU,IAAM,GAuB9B,SAASlP,GAASgE,EAAOmL,GACvBpL,EAAeC,EAAO,EAAG,GAAG,WAC1B,OAAOztB,KAAK6tB,aAAapE,SAASzpB,KAAK24B,QAAS34B,KAAK64B,UAAWD,MAWpE,SAASE,GAAcrH,EAAUpJ,GAC/B,OAAOA,EAAO0Q,eA9BhBvL,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGkL,IAClClL,EAAe,IAAK,CAAC,KAAM,GAAI,GAN/B,WACE,OAAOxtB,KAAK24B,SAAW,MAMzBnL,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAKkL,GAAQz1B,MAAMjD,MAAQ0sB,EAAS1sB,KAAK64B,UAAW,MAE7DrL,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAKkL,GAAQz1B,MAAMjD,MAAQ0sB,EAAS1sB,KAAK64B,UAAW,GAAKnM,EAAS1sB,KAAKg5B,UAAW,MAE3FxL,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAKxtB,KAAK24B,QAAUjM,EAAS1sB,KAAK64B,UAAW,MAEtDrL,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAKxtB,KAAK24B,QAAUjM,EAAS1sB,KAAK64B,UAAW,GAAKnM,EAAS1sB,KAAKg5B,UAAW,MASpFvP,GAAS,KAAK,GACdA,GAAS,KAAK,GAEd+E,EAAa,OAAQ,KAErBY,EAAgB,OAAQ,IAMxBkC,GAAc,IAAKwH,IACnBxH,GAAc,IAAKwH,IACnBxH,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,MAAOV,IACrBU,GAAc,QAAST,IACvBS,GAAc,MAAOV,IACrBU,GAAc,QAAST,IACvBsB,GAAc,CAAC,IAAK,MAl6BT,GAm6BXA,GAAc,CAAC,IAAK,OAAO,SAAU9K,EAAOhhB,EAAOmQ,GACjD,IAAIyiB,EAAStJ,EAAMtI,GACnBhhB,EAr6BS,GAq6BgB,KAAX4yB,EAAgB,EAAIA,KAEpC9G,GAAc,CAAC,IAAK,MAAM,SAAU9K,EAAOhhB,EAAOmQ,GAChDA,EAAO0iB,MAAQ1iB,EAAOiV,QAAQ0N,KAAK9R,GACnC7Q,EAAO4iB,UAAY/R,KAErB8K,GAAc,CAAC,IAAK,OAAO,SAAU9K,EAAOhhB,EAAOmQ,GACjDnQ,EA56BS,GA46BKspB,EAAMtI,GACpBoB,EAAgBjS,GAAQ8T,SAAU,KAEpC6H,GAAc,OAAO,SAAU9K,EAAOhhB,EAAOmQ,GAC3C,IAAI6iB,EAAMhS,EAAM7lB,OAAS,EACzB6E,EAj7BS,GAi7BKspB,EAAMtI,EAAM8F,OAAO,EAAGkM,IACpChzB,EAj7BW,GAi7BKspB,EAAMtI,EAAM8F,OAAOkM,IACnC5Q,EAAgBjS,GAAQ8T,SAAU,KAEpC6H,GAAc,SAAS,SAAU9K,EAAOhhB,EAAOmQ,GAC7C,IAAI8iB,EAAOjS,EAAM7lB,OAAS,EACtB+3B,EAAOlS,EAAM7lB,OAAS,EAC1B6E,EAx7BS,GAw7BKspB,EAAMtI,EAAM8F,OAAO,EAAGmM,IACpCjzB,EAx7BW,GAw7BKspB,EAAMtI,EAAM8F,OAAOmM,EAAM,IACzCjzB,EAx7BW,GAw7BKspB,EAAMtI,EAAM8F,OAAOoM,IACnC9Q,EAAgBjS,GAAQ8T,SAAU,KAEpC6H,GAAc,OAAO,SAAU9K,EAAOhhB,EAAOmQ,GAC3C,IAAI6iB,EAAMhS,EAAM7lB,OAAS,EACzB6E,EA/7BS,GA+7BKspB,EAAMtI,EAAM8F,OAAO,EAAGkM,IACpChzB,EA/7BW,GA+7BKspB,EAAMtI,EAAM8F,OAAOkM,OAErClH,GAAc,SAAS,SAAU9K,EAAOhhB,EAAOmQ,GAC7C,IAAI8iB,EAAOjS,EAAM7lB,OAAS,EACtB+3B,EAAOlS,EAAM7lB,OAAS,EAC1B6E,EAr8BS,GAq8BKspB,EAAMtI,EAAM8F,OAAO,EAAGmM,IACpCjzB,EAr8BW,GAq8BKspB,EAAMtI,EAAM8F,OAAOmM,EAAM,IACzCjzB,EAr8BW,GAq8BKspB,EAAMtI,EAAM8F,OAAOoM,OASrC,IAiCIC,GA5BJC,GAAa1J,EAAW,SAAS,GAU7B2J,GAAa,CACfC,SAv4CoB,CACpBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAk4CV5L,eAnxC0B,CAC1B6L,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BA8wCNpM,YAzvCuB,eA0vCvBR,QApvCmB,KAqvCnB6M,uBApvCkC,UAqvClCC,aA/uCwB,CACxBC,OAAQ,QACRC,KAAM,SACN1I,EAAG,gBACH2I,GAAI,aACJlS,EAAG,WACHmS,GAAI,aACJ5F,EAAG,UACH6F,GAAI,WACJnkB,EAAG,QACHokB,GAAI,UACJC,EAAG,SACHC,GAAI,WACJ/F,EAAG,UACHgG,GAAI,YACJtG,EAAG,SACHuG,GAAI,YAguCJxI,OAAQI,GACRL,YAAaO,GACb+C,KAngBsB,CACtBL,IAAK,EAELC,IAAK,GAigBLkB,SAAUK,GACVP,YAAaS,GACbR,cAAeO,GACfgE,cA5B+B,iBA+B7BC,GAAU,GACVC,GAAiB,GAGrB,SAASC,GAAaC,EAAMC,GAC1B,IAAIj1B,EACAk1B,EAAO5O,KAAKiH,IAAIyH,EAAKh6B,OAAQi6B,EAAKj6B,QAEtC,IAAKgF,EAAI,EAAGA,EAAIk1B,EAAMl1B,GAAK,EACzB,GAAIg1B,EAAKh1B,KAAOi1B,EAAKj1B,GACnB,OAAOA,EAIX,OAAOk1B,EAGT,SAASC,GAAgB57B,GACvB,OAAOA,EAAMA,EAAI6uB,cAAcnkB,QAAQ,IAAK,KAAO1K,EAwCrD,SAAS67B,GAAWn0B,GAClB,IAAIo0B,EAAY,KAGhB,QAAsBt3B,IAAlB82B,GAAQ5zB,SAAyC,IAAX5H,GAA0BA,GAAUA,EAAOC,QACnF,IACE+7B,EAAYrC,GAAasC,MAEzB,kGACAC,GAAmBF,GACnB,MAAOp5B,GAGP44B,GAAQ5zB,GAAQ,KAIpB,OAAO4zB,GAAQ5zB,GAMjB,SAASs0B,GAAmBh8B,EAAKiC,GAC/B,IAAIV,EAoBJ,OAlBIvB,KAEAuB,EADEsmB,EAAY5lB,GACPg6B,GAAUj8B,GAEVk8B,GAAal8B,EAAKiC,IAKzBw3B,GAAel4B,EAEQ,oBAAZgV,SAA2BA,QAAQuV,MAE5CvV,QAAQuV,KAAK,UAAY9rB,EAAM,2CAK9By5B,GAAasC,MAGtB,SAASG,GAAax0B,EAAM+O,GAC1B,GAAe,OAAXA,EAAiB,CACnB,IAAI6R,EACAkE,EAAemN,GAGnB,GAFAljB,EAAO0lB,KAAOz0B,EAEO,MAAjB4zB,GAAQ5zB,GACV4kB,EAAgB,uBAAwB,2OACxCE,EAAe8O,GAAQ5zB,GAAM00B,aACxB,GAA2B,MAAvB3lB,EAAO4lB,aAChB,GAAoC,MAAhCf,GAAQ7kB,EAAO4lB,cACjB7P,EAAe8O,GAAQ7kB,EAAO4lB,cAAcD,YACvC,CAGL,GAAc,OAFd9T,EAASuT,GAAWplB,EAAO4lB,eAazB,OARKd,GAAe9kB,EAAO4lB,gBACzBd,GAAe9kB,EAAO4lB,cAAgB,IAGxCd,GAAe9kB,EAAO4lB,cAAc16B,KAAK,CACvC+F,KAAMA,EACN+O,OAAQA,IAEH,KAVP+V,EAAelE,EAAO8T,QA2B5B,OAZAd,GAAQ5zB,GAAQ,IAAIglB,EAAOH,EAAaC,EAAc/V,IAElD8kB,GAAe7zB,IACjB6zB,GAAe7zB,GAAM5C,SAAQ,SAAU2tB,GACrCyJ,GAAazJ,EAAE/qB,KAAM+qB,EAAEhc,WAO3BulB,GAAmBt0B,GACZ4zB,GAAQ5zB,GAIf,cADO4zB,GAAQ5zB,GACR,KAwDX,SAASu0B,GAAUj8B,GACjB,IAAIsoB,EAMJ,GAJItoB,GAAOA,EAAI0rB,SAAW1rB,EAAI0rB,QAAQqQ,QACpC/7B,EAAMA,EAAI0rB,QAAQqQ,QAGf/7B,EACH,OAAOy5B,GAGT,IAAKx1B,EAAQjE,GAAM,CAIjB,GAFAsoB,EAASuT,GAAW77B,GAGlB,OAAOsoB,EAGTtoB,EAAM,CAACA,GAGT,OA9MF,SAAsBs8B,GAOpB,IANA,IACIC,EACAllB,EACAiR,EACA2K,EAJAxsB,EAAI,EAMDA,EAAI61B,EAAM76B,QAAQ,CAMvB,IAJA86B,GADAtJ,EAAQ2I,GAAgBU,EAAM71B,IAAIwsB,MAAM,MAC9BxxB,OAEV4V,GADAA,EAAOukB,GAAgBU,EAAM71B,EAAI,KACnB4Q,EAAK4b,MAAM,KAAO,KAEzBsJ,EAAI,GAAG,CAGZ,GAFAjU,EAASuT,GAAW5I,EAAM9G,MAAM,EAAGoQ,GAAGnQ,KAAK,MAGzC,OAAO9D,EAGT,GAAIjR,GAAQA,EAAK5V,QAAU86B,GAAKf,GAAavI,EAAO5b,IAASklB,EAAI,EAE/D,MAGFA,IAGF91B,IAGF,OAAOgzB,GA+KA+C,CAAax8B,GAOtB,SAASy8B,GAAc9T,GACrB,IAAIK,EACAxB,EAAImB,EAAE6J,GAoBV,OAlBIhL,IAAsC,IAAjCkB,EAAgBC,GAAGK,WAC1BA,EAAWxB,EAnuCH,GAmuCc,GAAKA,EAnuCnB,GAmuC8B,GAnuC9B,EAmuC2CA,EAluC5C,GAkuCsD,GAAKA,EAluC3D,GAkuCqE6I,GAAY7I,EApuCjF,GAouC0FA,EAnuCzF,IACD,EAkuC6GA,EAjuC7G,GAiuCuH,GAAKA,EAjuC5H,GAiuCsI,IAAkB,KAAZA,EAjuC5I,KAiuC6K,IAAdA,EAhuC7J,IAguC8L,IAAdA,EA/tChL,IA+tCsN,IAAnBA,EA9tC9L,IAHP,EAiuCoOA,EAhuClO,GAguC8O,GAAKA,EAhuCnP,GAguC+P,GAhuC/P,EAguC6QA,EA/tC7Q,GA+tCyR,GAAKA,EA/tC9R,GA+tC0S,GA/tC1S,EA+tCwTA,EA9tCnT,GA8tCoU,GAAKA,EA9tCzU,GA8tC0V,IA9tC1V,GA8tC+W,EAEzXkB,EAAgBC,GAAG+T,qBAAuB1T,EAtuCvC,GAsuC0DA,EApuC1D,KAquCLA,EAruCK,GAwuCHN,EAAgBC,GAAGgU,iBAAgC,IAAd3T,IACvCA,EApuCK,GAuuCHN,EAAgBC,GAAGiU,mBAAkC,IAAd5T,IACzCA,EAvuCQ,GA0uCVN,EAAgBC,GAAGK,SAAWA,GAGzBL,EAKT,IAAIkU,GAAmB,iJACnBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CAAC,CAAC,eAAgB,uBAAwB,CAAC,aAAc,mBAAoB,CAAC,eAAgB,kBAAmB,CAAC,aAAc,eAAe,GAAQ,CAAC,WAAY,eAAgB,CAAC,UAAW,cAAc,GAAQ,CAAC,aAAc,cAAe,CAAC,WAAY,SAAU,CAAC,aAAc,eAAgB,CAAC,YAAa,eAAe,GAAQ,CAAC,UAAW,SAAU,CAAC,SAAU,SAAS,GAAQ,CAAC,OAAQ,SAAS,IAElaC,GAAW,CAAC,CAAC,gBAAiB,uBAAwB,CAAC,gBAAiB,sBAAuB,CAAC,WAAY,kBAAmB,CAAC,QAAS,aAAc,CAAC,cAAe,qBAAsB,CAAC,cAAe,oBAAqB,CAAC,SAAU,gBAAiB,CAAC,OAAQ,YAAa,CAAC,KAAM,SACvRC,GAAkB,qBAEtBvT,GAAU,0LACNwT,GAAa,CACfC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAGP,SAASC,GAAcrnB,GACrB,IAAIhQ,EACA6V,EAGAyhB,EACAC,EACAC,EACAC,EALA1zB,EAASiM,EAAO2U,GAChBzgB,EAAQkyB,GAAiBlzB,KAAKa,IAAWsyB,GAAcnzB,KAAKa,GAMhE,GAAIG,EAAO,CAGT,IAFA+d,EAAgBjS,GAAQ8S,KAAM,EAEzB9iB,EAAI,EAAG6V,EAAI0gB,GAASv7B,OAAQgF,EAAI6V,EAAG7V,IACtC,GAAIu2B,GAASv2B,GAAG,GAAGkD,KAAKgB,EAAM,IAAK,CACjCqzB,EAAahB,GAASv2B,GAAG,GACzBs3B,GAA+B,IAAnBf,GAASv2B,GAAG,GACxB,MAIJ,GAAkB,MAAdu3B,EAEF,YADAvnB,EAAOqT,UAAW,GAIpB,GAAInf,EAAM,GAAI,CACZ,IAAKlE,EAAI,EAAG6V,EAAI2gB,GAASx7B,OAAQgF,EAAI6V,EAAG7V,IACtC,GAAIw2B,GAASx2B,GAAG,GAAGkD,KAAKgB,EAAM,IAAK,CAEjCszB,GAActzB,EAAM,IAAM,KAAOsyB,GAASx2B,GAAG,GAC7C,MAIJ,GAAkB,MAAdw3B,EAEF,YADAxnB,EAAOqT,UAAW,GAKtB,IAAKiU,GAA2B,MAAdE,EAEhB,YADAxnB,EAAOqT,UAAW,GAIpB,GAAInf,EAAM,GAAI,CACZ,IAAIoyB,GAAQpzB,KAAKgB,EAAM,IAIrB,YADA8L,EAAOqT,UAAW,GAFlBoU,EAAW,IAOfznB,EAAO4U,GAAK2S,GAAcC,GAAc,KAAOC,GAAY,IAC3DC,GAA0B1nB,QAE1BA,EAAOqT,UAAW,EActB,SAASsU,GAAeC,GACtB,IAAI7O,EAAOuF,SAASsJ,EAAS,IAE7B,OAAI7O,GAAQ,GACH,IAAOA,EACLA,GAAQ,IACV,KAAOA,EAGTA,EAuCT,SAAS8O,GAAkB7nB,GACzB,IACI8nB,EA5D6BF,EAASG,EAAUC,EAAQC,EAASC,EAAWC,EAC5Ev7B,EA0DAsH,EAAQgf,GAAQhgB,KAAuB8M,EAAO2U,GAnCzC1gB,QAAQ,oBAAqB,KAAKA,QAAQ,WAAY,KAAKA,QAAQ,SAAU,IAAIA,QAAQ,SAAU,KAsC5G,GAAIC,EAAO,CAGT,GAjE+B0zB,EA+DS1zB,EAAM,GA/DN6zB,EA+DU7zB,EAAM,GA/DN8zB,EA+DU9zB,EAAM,GA/DR+zB,EA+DY/zB,EAAM,GA/DTg0B,EA+Dah0B,EAAM,GA/DRi0B,EA+DYj0B,EAAM,GA9D9FtH,EAAS,CAAC+6B,GAAeC,GAAUnL,GAAyBjiB,QAAQutB,GAAWzJ,SAAS0J,EAAQ,IAAK1J,SAAS2J,EAAS,IAAK3J,SAAS4J,EAAW,KAEhJC,GACFv7B,EAAO1B,KAAKozB,SAAS6J,EAAW,KA2DhCL,EAxDKl7B,GAoBT,SAAsBw7B,EAAYC,EAAaroB,GAC7C,OAAIooB,GAEoBxH,GAA2BpmB,QAAQ4tB,KACrC,IAAIprB,KAAKqrB,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAIC,WAG3ErW,EAAgBjS,GAAQmT,iBAAkB,EAC1CnT,EAAOqT,UAAW,GACX,GA6BJkV,CAAar0B,EAAM,GAAI4zB,EAAa9nB,GACvC,OAGFA,EAAO+b,GAAK+L,EACZ9nB,EAAO8U,KA3BX,SAAyB0T,EAAWC,EAAgBC,GAClD,GAAIF,EACF,OAAO9B,GAAW8B,GACb,GAAIC,EAET,OAAO,EAEP,IAAIE,EAAKrK,SAASoK,EAAW,IACzBxW,EAAIyW,EAAK,IAEb,OADSA,EAAKzW,GAAK,IACR,GAAKA,EAiBF0W,CAAgB10B,EAAM,GAAIA,EAAM,GAAIA,EAAM,KACxD8L,EAAO0T,GAAKoL,GAAcryB,MAAM,KAAMuT,EAAO+b,IAE7C/b,EAAO0T,GAAGmV,cAAc7oB,EAAO0T,GAAGoV,gBAAkB9oB,EAAO8U,MAE3D7C,EAAgBjS,GAAQkT,SAAU,OAElClT,EAAOqT,UAAW,EAyCtB,SAASxa,GAASkY,EAAGC,EAAG+X,GACtB,OAAS,MAALhY,EACKA,EAGA,MAALC,EACKA,EAGF+X,EAkBT,SAASC,GAAgBhpB,GACvB,IAAIhQ,EACA2pB,EAEAsP,EACAC,EACAC,EAHAtY,EAAQ,GAKZ,IAAI7Q,EAAO0T,GAAX,CA4BA,IAxBAuV,EA3BF,SAA0BjpB,GAExB,IAAIopB,EAAW,IAAIpsB,KAAK4T,EAAMyY,OAE9B,OAAIrpB,EAAOspB,QACF,CAACF,EAASpK,iBAAkBoK,EAASG,cAAeH,EAASI,cAG/D,CAACJ,EAASxK,cAAewK,EAASK,WAAYL,EAASM,WAmBhDC,CAAiB3pB,GAE3BA,EAAO6b,IAAyB,MAAnB7b,EAAO+b,GA3+Cf,IA2+CuD,MAApB/b,EAAO+b,GA5+CzC,IAmiDZ,SAA+B/b,GAC7B,IAAIwkB,EAAGoF,EAAUpK,EAAMC,EAASN,EAAKC,EAAKyK,EAAMC,EAAiBC,EAGrD,OAFZvF,EAAIxkB,EAAO6b,IAELmO,IAAqB,MAAPxF,EAAEyF,GAAoB,MAAPzF,EAAE0F,GACnC/K,EAAM,EACNC,EAAM,EAKNwK,EAAW/wB,GAAS2rB,EAAEwF,GAAIhqB,EAAO+b,GA/iD1B,GA+iDoC8D,GAAWsK,KAAe,EAAG,GAAGpR,MAC3EyG,EAAO3mB,GAAS2rB,EAAEyF,EAAG,KACrBxK,EAAU5mB,GAAS2rB,EAAE0F,EAAG,IAEV,GAAKzK,EAAU,KAC3BqK,GAAkB,KAGpB3K,EAAMnf,EAAOiV,QAAQmV,MAAMjL,IAC3BC,EAAMpf,EAAOiV,QAAQmV,MAAMhL,IAC3B2K,EAAUlK,GAAWsK,KAAehL,EAAKC,GACzCwK,EAAW/wB,GAAS2rB,EAAE6F,GAAIrqB,EAAO+b,GA1jD1B,GA0jDoCgO,EAAQhR,MAEnDyG,EAAO3mB,GAAS2rB,EAAEA,EAAGuF,EAAQvK,MAElB,MAAPgF,EAAErkB,IAEJsf,EAAU+E,EAAErkB,GAEE,GAAKsf,EAAU,KAC3BqK,GAAkB,GAEJ,MAAPtF,EAAEv4B,GAEXwzB,EAAU+E,EAAEv4B,EAAIkzB,GAEZqF,EAAEv4B,EAAI,GAAKu4B,EAAEv4B,EAAI,KACnB69B,GAAkB,IAIpBrK,EAAUN,GAIVK,EAAO,GAAKA,EAAOQ,GAAY4J,EAAUzK,EAAKC,GAChDnN,EAAgBjS,GAAQkmB,gBAAiB,EACb,MAAnB4D,EACT7X,EAAgBjS,GAAQmmB,kBAAmB,GAE3C0D,EAAOtK,GAAmBqK,EAAUpK,EAAMC,EAASN,EAAKC,GACxDpf,EAAO+b,GAxlDA,GAwlDW8N,EAAK9Q,KACvB/Y,EAAOsqB,WAAaT,EAAKjK,WA3GzB2K,CAAsBvqB,GAIC,MAArBA,EAAOsqB,aACTnB,EAAYtwB,GAASmH,EAAO+b,GAn/CrB,GAm/C+BkN,EAn/C/B,KAq/CHjpB,EAAOsqB,WAAanM,GAAWgL,IAAoC,IAAtBnpB,EAAOsqB,cACtDrY,EAAgBjS,GAAQimB,oBAAqB,GAG/CtM,EAAOmF,GAAcqK,EAAW,EAAGnpB,EAAOsqB,YAC1CtqB,EAAO+b,GAz/CC,GAy/CWpC,EAAK4P,cACxBvpB,EAAO+b,GAz/CA,GAy/CWpC,EAAK6P,cAQpBx5B,EAAI,EAAGA,EAAI,GAAqB,MAAhBgQ,EAAO+b,GAAG/rB,KAAcA,EAC3CgQ,EAAO+b,GAAG/rB,GAAK6gB,EAAM7gB,GAAKi5B,EAAYj5B,GAIxC,KAAOA,EAAI,EAAGA,IACZgQ,EAAO+b,GAAG/rB,GAAK6gB,EAAM7gB,GAAqB,MAAhBgQ,EAAO+b,GAAG/rB,GAAmB,IAANA,EAAU,EAAI,EAAIgQ,EAAO+b,GAAG/rB,GAIvD,KAApBgQ,EAAO+b,GA1gDF,IA0gD2C,IAAtB/b,EAAO+b,GAzgD1B,IAygDoE,IAAtB/b,EAAO+b,GAxgDrD,IAwgDoG,IAA3B/b,EAAO+b,GAvgD3E,KAwgDd/b,EAAOwqB,UAAW,EAClBxqB,EAAO+b,GA5gDA,GA4gDW,GAGpB/b,EAAO0T,IAAM1T,EAAOspB,QAAUxK,GAAgBN,IAAY/xB,MAAM,KAAMokB,GACtEqY,EAAkBlpB,EAAOspB,QAAUtpB,EAAO0T,GAAG4L,YAActf,EAAO0T,GAAG4U,SAGlD,MAAftoB,EAAO8U,MACT9U,EAAO0T,GAAGmV,cAAc7oB,EAAO0T,GAAGoV,gBAAkB9oB,EAAO8U,MAGzD9U,EAAOwqB,WACTxqB,EAAO+b,GAxhDA,GAwhDW,IAIhB/b,EAAO6b,SAA6B,IAAhB7b,EAAO6b,GAAG1b,GAAqBH,EAAO6b,GAAG1b,IAAM+oB,IACrEjX,EAAgBjS,GAAQmT,iBAAkB,IAoE9C,SAASuU,GAA0B1nB,GAEjC,GAAIA,EAAO4U,KAAOhE,EAAM6Z,SAKxB,GAAIzqB,EAAO4U,KAAOhE,EAAM8Z,SAAxB,CAKA1qB,EAAO+b,GAAK,GACZ9J,EAAgBjS,GAAQoS,OAAQ,EAEhC,IACIpiB,EACAq4B,EACA3M,EACAzE,EACA0T,EAGA3X,EARAjf,EAAS,GAAKiM,EAAO2U,GAMrBiW,EAAe72B,EAAO/I,OACtB6/B,EAAyB,EAI7B,IAFAnP,EAASnE,EAAavX,EAAO4U,GAAI5U,EAAOiV,SAAS/gB,MAAM0iB,IAAqB,GAEvE5mB,EAAI,EAAGA,EAAI0rB,EAAO1wB,OAAQgF,IAC7BinB,EAAQyE,EAAO1rB,IACfq4B,GAAet0B,EAAOG,MAAMgnB,GAAsBjE,EAAOjX,KAAY,IAAI,OAGvE2qB,EAAU52B,EAAO4iB,OAAO,EAAG5iB,EAAOyG,QAAQ6tB,KAE9Br9B,OAAS,GACnBinB,EAAgBjS,GAAQsS,YAAYpnB,KAAKy/B,GAG3C52B,EAASA,EAAO2hB,MAAM3hB,EAAOyG,QAAQ6tB,GAAeA,EAAYr9B,QAChE6/B,GAA0BxC,EAAYr9B,QAIpC+rB,EAAqBE,IACnBoR,EACFpW,EAAgBjS,GAAQoS,OAAQ,EAEhCH,EAAgBjS,GAAQqS,aAAannB,KAAK+rB,GAG5C6E,GAAwB7E,EAAOoR,EAAaroB,IACnCA,EAAO6T,UAAYwU,GAC5BpW,EAAgBjS,GAAQqS,aAAannB,KAAK+rB,GAK9ChF,EAAgBjS,GAAQwS,cAAgBoY,EAAeC,EAEnD92B,EAAO/I,OAAS,GAClBinB,EAAgBjS,GAAQsS,YAAYpnB,KAAK6I,GAIvCiM,EAAO+b,GAhqDF,IAgqDc,KAA0C,IAApC9J,EAAgBjS,GAAQ8T,SAAoB9T,EAAO+b,GAhqDvE,GAgqDkF,IACzF9J,EAAgBjS,GAAQ8T,aAAU/lB,GAGpCkkB,EAAgBjS,GAAQ+S,gBAAkB/S,EAAO+b,GAAGrG,MAAM,GAC1DzD,EAAgBjS,GAAQiT,SAAWjT,EAAO4iB,UAE1C5iB,EAAO+b,GAvqDE,GAmrDX,SAAyBlK,EAAQiZ,EAAM7X,GACrC,IAAI8X,EAEJ,OAAgB,MAAZ9X,EAEK6X,EAGkB,MAAvBjZ,EAAOmZ,aACFnZ,EAAOmZ,aAAaF,EAAM7X,GACT,MAAfpB,EAAO8Q,OAEhBoI,EAAOlZ,EAAO8Q,KAAK1P,KAEP6X,EAAO,KACjBA,GAAQ,IAGLC,GAAiB,KAATD,IACXA,EAAO,GAGFA,GAGAA,EArCSG,CAAgBjrB,EAAOiV,QAASjV,EAAO+b,GAvqDhD,GAuqD0D/b,EAAO4iB,WAI9D,QAFZ5P,EAAMf,EAAgBjS,GAAQgT,OAG5BhT,EAAO+b,GA/qDA,GA+qDW/b,EAAOiV,QAAQiW,gBAAgBlY,EAAKhT,EAAO+b,GA/qDtD,KAkrDTiN,GAAgBhpB,GAChBgmB,GAAchmB,QAvEZ6nB,GAAkB7nB,QALlBqnB,GAAcrnB,GA+LlB,SAASmrB,GAAcnrB,GACrB,IAAI6Q,EAAQ7Q,EAAO2U,GACf/C,EAAS5R,EAAO4U,GAGpB,OAFA5U,EAAOiV,QAAUjV,EAAOiV,SAAWuQ,GAAUxlB,EAAO6U,IAEtC,OAAVhE,QAA6B9iB,IAAX6jB,GAAkC,KAAVf,EACrCmD,EAAc,CACnBvB,WAAW,KAIM,iBAAV5B,IACT7Q,EAAO2U,GAAK9D,EAAQ7Q,EAAOiV,QAAQmW,SAASva,IAG1CuE,EAASvE,GACJ,IAAIqE,EAAO8Q,GAAcnV,KACvBS,EAAOT,GAChB7Q,EAAO0T,GAAK7C,EACHrjB,EAAQokB,GArGrB,SAAkC5R,GAChC,IAAIqrB,EACAC,EACAC,EACAv7B,EACAw7B,EACAC,EACAC,GAAoB,EAExB,GAAyB,IAArB1rB,EAAO4U,GAAG5pB,OAGZ,OAFAinB,EAAgBjS,GAAQ4S,eAAgB,OACxC5S,EAAO0T,GAAK,IAAI1W,KAAKiX,MAIvB,IAAKjkB,EAAI,EAAGA,EAAIgQ,EAAO4U,GAAG5pB,OAAQgF,IAChCw7B,EAAe,EACfC,GAAmB,EACnBJ,EAAahX,EAAW,GAAIrU,GAEN,MAAlBA,EAAOspB,UACT+B,EAAW/B,QAAUtpB,EAAOspB,SAG9B+B,EAAWzW,GAAK5U,EAAO4U,GAAG5kB,GAC1B03B,GAA0B2D,GAEtBjY,EAAQiY,KACVI,GAAmB,GAIrBD,GAAgBvZ,EAAgBoZ,GAAY7Y,cAE5CgZ,GAAkE,GAAlDvZ,EAAgBoZ,GAAYhZ,aAAarnB,OACzDinB,EAAgBoZ,GAAYM,MAAQH,EAE/BE,EAUCF,EAAeD,IACjBA,EAAcC,EACdF,EAAaD,IAXI,MAAfE,GAAuBC,EAAeD,GAAeE,KACvDF,EAAcC,EACdF,EAAaD,EAETI,IACFC,GAAoB,IAW5Bha,EAAO1R,EAAQsrB,GAAcD,GAgD3BO,CAAyB5rB,GAChB4R,EACT8V,GAA0B1nB,GAY9B,SAAyBA,GACvB,IAAI6Q,EAAQ7Q,EAAO2U,GAEfvD,EAAYP,GACd7Q,EAAO0T,GAAK,IAAI1W,KAAK4T,EAAMyY,OAClB/X,EAAOT,GAChB7Q,EAAO0T,GAAK,IAAI1W,KAAK6T,EAAM/b,WACD,iBAAV+b,EA/apB,SAA0B7Q,GACxB,IAAIob,EAAUqL,GAAgBvzB,KAAK8M,EAAO2U,IAE1B,OAAZyG,GAKJiM,GAAcrnB,IAEU,IAApBA,EAAOqT,kBACFrT,EAAOqT,SAKhBwU,GAAkB7nB,IAEM,IAApBA,EAAOqT,kBACFrT,EAAOqT,SAKZrT,EAAO6T,QACT7T,EAAOqT,UAAW,EAGlBzC,EAAMib,wBAAwB7rB,MAxB9BA,EAAO0T,GAAK,IAAI1W,MAAMoe,EAAQ,IA4a9B0Q,CAAiB9rB,GACRxS,EAAQqjB,IACjB7Q,EAAO+b,GAAK5tB,EAAI0iB,EAAM6E,MAAM,IAAI,SAAU9b,GACxC,OAAO0kB,SAAS1kB,EAAK,OAEvBovB,GAAgBhpB,IACP1N,EAASue,GAzEtB,SAA0B7Q,GACxB,IAAIA,EAAO0T,GAAX,CAIA,IAAI1jB,EAAIuoB,EAAqBvY,EAAO2U,IAChCoX,OAAsBh+B,IAAViC,EAAEsxB,IAAoBtxB,EAAE2pB,KAAO3pB,EAAEsxB,IACjDthB,EAAO+b,GAAK5tB,EAAI,CAAC6B,EAAE+oB,KAAM/oB,EAAE0pB,MAAOqS,EAAW/7B,EAAE86B,KAAM96B,EAAEg8B,OAAQh8B,EAAEi8B,OAAQj8B,EAAEk8B,cAAc,SAAUtyB,GACjG,OAAOA,GAAO0kB,SAAS1kB,EAAK,OAE9BovB,GAAgBhpB,IAgEdmsB,CAAiBnsB,GACRqR,EAASR,GAElB7Q,EAAO0T,GAAK,IAAI1W,KAAK6T,GAErBD,EAAMib,wBAAwB7rB,GA9B9BosB,CAAgBpsB,GAGboT,EAAQpT,KACXA,EAAO0T,GAAK,MAGP1T,IA2BT,SAAS+R,GAAiBlB,EAAOe,EAAQC,EAAQC,EAAQua,GACvD,IAtEI5a,EAsEAsX,EAAI,GAwBR,OAtBe,IAAXnX,IAA8B,IAAXA,IACrBE,EAASF,EACTA,OAAS7jB,IAGI,IAAX8jB,IAA8B,IAAXA,IACrBC,EAASD,EACTA,OAAS9jB,IAGPuE,EAASue,IAAUI,EAAcJ,IAAUrjB,EAAQqjB,IAA2B,IAAjBA,EAAM7lB,UACrE6lB,OAAQ9iB,GAKVg7B,EAAErU,kBAAmB,EACrBqU,EAAEO,QAAUP,EAAEhU,OAASsX,EACvBtD,EAAElU,GAAKhD,EACPkX,EAAEpU,GAAK9D,EACPkY,EAAEnU,GAAKhD,EACPmX,EAAElV,QAAU/B,GA7FRL,EAAM,IAAIyD,EAAO8Q,GAAcmF,GA8FXpC,MA5FhByB,WAEN/Y,EAAI/lB,IAAI,EAAG,KACX+lB,EAAI+Y,cAAWz8B,GAGV0jB,EAyFT,SAAS0Y,GAAYtZ,EAAOe,EAAQC,EAAQC,GAC1C,OAAOC,GAAiBlB,EAAOe,EAAQC,EAAQC,GAAQ,GA7bzDlB,EAAMib,wBAA0BnmB,EAAU,kVAAiW,SAAU1F,GACnZA,EAAO0T,GAAK,IAAI1W,KAAKgD,EAAO2U,IAAM3U,EAAOspB,QAAU,OAAS,QA6J9D1Y,EAAM6Z,SAAW,aAGjB7Z,EAAM8Z,SAAW,aA+RjB,IAAI4B,GAAe5mB,EAAU,sGAAsG,WACjI,IAAI3Q,EAAQo1B,GAAY19B,MAAM,KAAMhC,WAEpC,OAAIjB,KAAK4pB,WAAare,EAAMqe,UACnBre,EAAQvL,KAAOA,KAAOuL,EAEtBif,OAGPuY,GAAe7mB,EAAU,sGAAsG,WACjI,IAAI3Q,EAAQo1B,GAAY19B,MAAM,KAAMhC,WAEpC,OAAIjB,KAAK4pB,WAAare,EAAMqe,UACnBre,EAAQvL,KAAOA,KAAOuL,EAEtBif,OAQX,SAASwY,GAAOhb,EAAIib,GAClB,IAAIhb,EAAKzhB,EAMT,GAJuB,IAAnBy8B,EAAQzhC,QAAgBwC,EAAQi/B,EAAQ,MAC1CA,EAAUA,EAAQ,KAGfA,EAAQzhC,OACX,OAAOm/B,KAKT,IAFA1Y,EAAMgb,EAAQ,GAETz8B,EAAI,EAAGA,EAAIy8B,EAAQzhC,SAAUgF,EAC3By8B,EAAQz8B,GAAGojB,YAAaqZ,EAAQz8B,GAAGwhB,GAAIC,KAC1CA,EAAMgb,EAAQz8B,IAIlB,OAAOyhB,EAcT,IAIIib,GAAW,CAAC,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAQ,SAAU,SAAU,eAoCvF,SAASC,GAASlhB,GAChB,IAAIiN,EAAkBH,EAAqB9M,GACvCmhB,EAAQlU,EAAgBK,MAAQ,EAChC8T,EAAWnU,EAAgBoU,SAAW,EACtC3Q,EAASzD,EAAgBgB,OAAS,EAClCqT,EAAQrU,EAAgB8G,MAAQ9G,EAAgBsU,SAAW,EAC3DC,EAAOvU,EAAgB4I,KAAO,EAC9Ba,EAAQzJ,EAAgBoS,MAAQ,EAChCzI,EAAU3J,EAAgBsT,QAAU,EACpCxJ,EAAU9J,EAAgBuT,QAAU,EACpCiB,EAAexU,EAAgBwT,aAAe,EAClD1iC,KAAK6pB,SA7CP,SAAyBnB,GACvB,IAAI3oB,EAEAyG,EADAm9B,GAAiB,EAGrB,IAAK5jC,KAAO2oB,EACV,GAAIpB,EAAWoB,EAAG3oB,MAA2C,IAAjCiR,GAAQ9P,KAAKgiC,GAAUnjC,IAA0B,MAAV2oB,EAAE3oB,IAAiBkqB,MAAMvB,EAAE3oB,KAC5F,OAAO,EAIX,IAAKyG,EAAI,EAAGA,EAAI08B,GAAS1hC,SAAUgF,EACjC,GAAIkiB,EAAEwa,GAAS18B,IAAK,CAClB,GAAIm9B,EACF,OAAO,EAGLC,WAAWlb,EAAEwa,GAAS18B,OAASmpB,EAAMjH,EAAEwa,GAAS18B,OAClDm9B,GAAiB,GAKvB,OAAO,EAsBSE,CAAgB3U,GAEhClvB,KAAK8jC,eAAiBJ,EAAyB,IAAV1K,EAC3B,IAAVH,EACQ,IAARF,EAAe,GAAK,GAIpB34B,KAAK+jC,OAASN,EAAe,EAARF,EAIrBvjC,KAAKgkC,SAAWrR,EAAoB,EAAX0Q,EAAuB,GAARD,EACxCpjC,KAAKikC,MAAQ,GACbjkC,KAAKyrB,QAAUuQ,KAEfh8B,KAAKkkC,UAGP,SAASC,GAAW/zB,GAClB,OAAOA,aAAe+yB,GAGxB,SAASiB,GAASz5B,GAChB,OAAIA,EAAS,GACuB,EAA3BmiB,KAAKuX,OAAO,EAAI15B,GAEhBmiB,KAAKuX,MAAM15B,GAqBtB,SAAS9B,GAAO4kB,EAAO6W,GACrB9W,EAAeC,EAAO,EAAG,GAAG,WAC1B,IAAI5kB,EAAS7I,KAAKukC,YACdC,EAAO,IAOX,OALI37B,EAAS,IACXA,GAAUA,EACV27B,EAAO,KAGFA,EAAO9X,KAAY7jB,EAAS,IAAK,GAAKy7B,EAAY5X,IAAW7jB,EAAS,GAAI,MAIrFA,GAAO,IAAK,KACZA,GAAO,KAAM,IAEbyoB,GAAc,IAAKF,IACnBE,GAAc,KAAMF,IACpBe,GAAc,CAAC,IAAK,OAAO,SAAU9K,EAAOhhB,EAAOmQ,GACjDA,EAAOspB,SAAU,EACjBtpB,EAAO8U,KAAOmZ,GAAiBrT,GAAkB/J,MAMnD,IAAIqd,GAAc,kBAElB,SAASD,GAAiBE,EAASp6B,GACjC,IAEIq6B,EACA/L,EAHAgM,GAAWt6B,GAAU,IAAIG,MAAMi6B,GAKnC,OAAgB,OAAZE,EACK,KAMU,KADnBhM,EAAuB,IADvB+L,IADQC,EAAQA,EAAQrjC,OAAS,IAAM,IACtB,IAAIkJ,MAAMg6B,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAW/U,EAAMiV,EAAM,KAClB,EAAiB,MAAbA,EAAM,GAAa/L,GAAWA,EAI3D,SAASiM,GAAgBzd,EAAO0d,GAC9B,IAAI9c,EAAK+c,EAET,OAAID,EAAMxZ,QACRtD,EAAM8c,EAAME,QACZD,GAAQpZ,EAASvE,IAAUS,EAAOT,GAASA,EAAM/b,UAAYq1B,GAAYtZ,GAAO/b,WAAa2c,EAAI3c,UAEjG2c,EAAIiC,GAAGgb,QAAQjd,EAAIiC,GAAG5e,UAAY05B,GAElC5d,EAAMuE,aAAa1D,GAAK,GACjBA,GAEA0Y,GAAYtZ,GAAO8d,QAI9B,SAASC,GAAc1c,GAGrB,OAAQoE,KAAKuX,MAAM3b,EAAEwB,GAAGmb,qBAwJ1B,SAASC,KACP,QAAOtlC,KAAK4pB,WAAY5pB,KAAKurB,QAA2B,IAAjBvrB,KAAKwrB,QAnJ9CpE,EAAMuE,aAAe,aAuJrB,IAAI4Z,GAAc,wDAIlBC,GAAW,sKAEX,SAASC,GAAepe,EAAOtnB,GAC7B,IAGIykC,EACAkB,EACAC,EAqFqBC,EAAMr6B,EAC3B0c,EA3FAhG,EAAWoF,EAEf3c,EAAQ,KA6DR,OAxDIy5B,GAAW9c,GACbpF,EAAW,CACTkT,GAAI9N,EAAMyc,cACVntB,EAAG0Q,EAAM0c,MACT7O,EAAG7N,EAAM2c,SAEFnc,EAASR,KAAW4C,OAAO5C,IACpCpF,EAAW,GAEPliB,EACFkiB,EAASliB,IAAQsnB,EAEjBpF,EAASyhB,cAAgBrc,IAElB3c,EAAQ66B,GAAY77B,KAAK2d,KAClCmd,EAAoB,MAAb95B,EAAM,IAAc,EAAI,EAC/BuX,EAAW,CACT2S,EAAG,EACHje,EAAGgZ,EAAMjlB,EAvxEJ,IAuxEmB85B,EACxBvP,EAAGtF,EAAMjlB,EAvxEJ,IAuxEmB85B,EACxB9b,EAAGiH,EAAMjlB,EAvxEF,IAuxEmB85B,EAC1BvS,EAAGtC,EAAMjlB,EAvxEF,IAuxEmB85B,EAC1BrP,GAAIxF,EAAMyU,GAA8B,IAArB15B,EAvxEP,KAuxEqC85B,KAG1C95B,EAAQ86B,GAAS97B,KAAK2d,KAC/Bmd,EAAoB,MAAb95B,EAAM,IAAc,EAAI,EAC/BuX,EAAW,CACT2S,EAAGiR,GAASn7B,EAAM,GAAI85B,GACtBtP,EAAG2Q,GAASn7B,EAAM,GAAI85B,GACtBxJ,EAAG6K,GAASn7B,EAAM,GAAI85B,GACtB7tB,EAAGkvB,GAASn7B,EAAM,GAAI85B,GACtBvP,EAAG4Q,GAASn7B,EAAM,GAAI85B,GACtB9b,EAAGmd,GAASn7B,EAAM,GAAI85B,GACtBvS,EAAG4T,GAASn7B,EAAM,GAAI85B,KAEH,MAAZviB,EAETA,EAAW,GACkB,iBAAbA,IAA0B,SAAUA,GAAY,OAAQA,KA4CjD2jB,EA3CKjF,GAAY1e,EAAS8I,MA2CpBxf,EA3C2Bo1B,GAAY1e,EAAS6I,IAA7E6a,EA8CIC,EAAKhc,WAAare,EAAMqe,WAO9Bre,EAAQu5B,GAAgBv5B,EAAOq6B,GAE3BA,EAAKE,SAASv6B,GAChB0c,EAAM8d,GAA0BH,EAAMr6B,KAEtC0c,EAAM8d,GAA0Bx6B,EAAOq6B,IACnClC,cAAgBzb,EAAIyb,aACxBzb,EAAI0K,QAAU1K,EAAI0K,QAGb1K,GAhBE,CACLyb,aAAc,EACd/Q,OAAQ,IAhDV1Q,EAAW,IACFkT,GAAKwQ,EAAQjC,aACtBzhB,EAASiT,EAAIyQ,EAAQhT,QAGvB+S,EAAM,IAAIvC,GAASlhB,GAEfkiB,GAAW9c,IAAUC,EAAWD,EAAO,aACzCqe,EAAIja,QAAUpE,EAAMoE,SAGlB0Y,GAAW9c,IAAUC,EAAWD,EAAO,cACzCqe,EAAI7b,SAAWxC,EAAMwC,UAGhB6b,EAMT,SAASG,GAASG,EAAKxB,GAIrB,IAAIvc,EAAM+d,GAAOpC,WAAWoC,EAAIv7B,QAAQ,IAAK,MAE7C,OAAQwf,MAAMhC,GAAO,EAAIA,GAAOuc,EAGlC,SAASuB,GAA0BH,EAAMr6B,GACvC,IAAI0c,EAAM,GAQV,OAPAA,EAAI0K,OAASpnB,EAAM2kB,QAAU0V,EAAK1V,QAAyC,IAA9B3kB,EAAMgkB,OAASqW,EAAKrW,QAE7DqW,EAAKX,QAAQ/iC,IAAI+lB,EAAI0K,OAAQ,KAAKsT,QAAQ16B,MAC1C0c,EAAI0K,OAGR1K,EAAIyb,cAAgBn4B,GAASq6B,EAAKX,QAAQ/iC,IAAI+lB,EAAI0K,OAAQ,KACnD1K,EA2BT,SAASie,GAAYC,EAAW1+B,GAC9B,OAAO,SAAUwjB,EAAKmb,GACpB,IAASC,EAWT,OATe,OAAXD,GAAoBnc,OAAOmc,KAC7B/Z,EAAgB5kB,EAAM,YAAcA,EAAO,uDAAyDA,EAA9E,kGACtB4+B,EAAMpb,EACNA,EAAMmb,EACNA,EAASC,GAIXC,GAAYtmC,KADNylC,GAAexa,EAAKmb,GACHD,GAChBnmC,MAIX,SAASsmC,GAAYtY,EAAK/L,EAAUskB,EAAU5a,GAC5C,IAAI+X,EAAezhB,EAAS6hB,cACxBL,EAAOW,GAASniB,EAAS8hB,OACzBpR,EAASyR,GAASniB,EAAS+hB,SAE1BhW,EAAIpE,YAKT+B,EAA+B,MAAhBA,GAA8BA,EAEzCgH,GACFkB,GAAS7F,EAAK7qB,EAAI6qB,EAAK,SAAW2E,EAAS4T,GAGzC9C,GACFxT,EAAMjC,EAAK,OAAQ7qB,EAAI6qB,EAAK,QAAUyV,EAAO8C,GAG3C7C,GACF1V,EAAI9D,GAAGgb,QAAQlX,EAAI9D,GAAG5e,UAAYo4B,EAAe6C,GAG/C5a,GACFvE,EAAMuE,aAAaqC,EAAKyV,GAAQ9Q,IA1FpC8S,GAAezd,GAAKmb,GAAStiC,UAC7B4kC,GAAee,QAvWf,WACE,OAAOf,GAAehb,MAmcxB,IAAIvoB,GAAMgkC,GAAY,EAAG,OACrBO,GAAWP,IAAa,EAAG,YAE/B,SAASQ,GAASrf,GAChB,MAAwB,iBAAVA,GAAsBA,aAAiBnK,OAIvD,SAASypB,GAActf,GACrB,OAAOuE,EAASvE,IAAUS,EAAOT,IAAUqf,GAASrf,IAAUQ,EAASR,IAkBzE,SAA+BA,GAC7B,IAAIuf,EAAY5iC,EAAQqjB,GACpBwf,GAAe,EAQnB,OANID,IACFC,EAEc,IAFCxf,EAAM/V,QAAO,SAAUw1B,GACpC,OAAQjf,EAASif,IAASJ,GAASrf,MAClC7lB,QAGEolC,GAAaC,EA5B6DE,CAAsB1f,IAGzG,SAA6BA,GAC3B,IAGI7gB,EACAugB,EAJAigB,EAAal+B,EAASue,KAAWI,EAAcJ,GAC/C4f,GAAe,EACfC,EAAa,CAAC,QAAS,OAAQ,IAAK,SAAU,QAAS,IAAK,OAAQ,MAAO,IAAK,QAAS,OAAQ,IAAK,QAAS,OAAQ,IAAK,UAAW,SAAU,IAAK,UAAW,SAAU,IAAK,eAAgB,cAAe,MAInN,IAAK1gC,EAAI,EAAGA,EAAI0gC,EAAW1lC,OAAQgF,GAAK,EACtCugB,EAAWmgB,EAAW1gC,GACtBygC,EAAeA,GAAgB3f,EAAWD,EAAON,GAGnD,OAAOigB,GAAcC,EAf4FE,CAAoB9f,IAA9HuE,MAAwIvE,EA+BjJ,SAAS+f,GAAe/f,GACtB,IAGI7gB,EAHAwgC,EAAal+B,EAASue,KAAWI,EAAcJ,GAC/C4f,GAAe,EACfC,EAAa,CAAC,UAAW,UAAW,UAAW,WAAY,WAAY,YAI3E,IAAK1gC,EAAI,EAAGA,EAAI0gC,EAAW1lC,OAAQgF,GAAK,EAEtCygC,EAAeA,GAAgB3f,EAAWD,EAD/B6f,EAAW1gC,IAIxB,OAAOwgC,GAAcC,EAoKvB,SAASI,GAAU9f,EAAGC,GACpB,GAAID,EAAE4I,OAAS3I,EAAE2I,OAGf,OAAQkX,GAAU7f,EAAGD,GAIvB,IAAI+f,EAAyC,IAAvB9f,EAAE+H,OAAShI,EAAEgI,SAAgB/H,EAAE0I,QAAU3I,EAAE2I,SAEjEqX,EAAShgB,EAAE0d,QAAQ/iC,IAAIolC,EAAgB,UAevC,QAASA,GAXL9f,EAAI+f,EAAS,GAGL/f,EAAI+f,IAAWA,EAFfhgB,EAAE0d,QAAQ/iC,IAAIolC,EAAiB,EAAG,YAMlC9f,EAAI+f,IAFJhgB,EAAE0d,QAAQ/iC,IAAIolC,EAAiB,EAAG,UAETC,MAIA,EA2GvC,SAASlf,GAAOtoB,GACd,IAAIynC,EAEJ,YAAYjjC,IAARxE,EACKC,KAAKyrB,QAAQqQ,OAIC,OAFrB0L,EAAgBxL,GAAUj8B,MAGxBC,KAAKyrB,QAAU+b,GAGVxnC,MApHXonB,EAAMqgB,cAAgB,uBACtBrgB,EAAMsgB,iBAAmB,yBAuHzB,IAAIC,GAAOzrB,EAAU,mJAAmJ,SAAUnc,GAChL,YAAYwE,IAARxE,EACKC,KAAK6tB,aAEL7tB,KAAKqoB,OAAOtoB,MAIvB,SAAS8tB,KACP,OAAO7tB,KAAKyrB,QAQd,SAASmc,GAAMC,EAAUC,GACvB,OAAQD,EAAWC,EAAUA,GAAWA,EAG1C,SAASC,GAAiBnT,EAAGlM,EAAG/R,GAE9B,OAAIie,EAAI,KAAOA,GAAK,EAEX,IAAIphB,KAAKohB,EAAI,IAAKlM,EAAG/R,GAVT,YAYZ,IAAInD,KAAKohB,EAAGlM,EAAG/R,GAAGrL,UAI7B,SAAS08B,GAAepT,EAAGlM,EAAG/R,GAE5B,OAAIie,EAAI,KAAOA,GAAK,EAEXphB,KAAK+hB,IAAIX,EAAI,IAAKlM,EAAG/R,GApBT,YAsBZnD,KAAK+hB,IAAIX,EAAGlM,EAAG/R,GAga1B,SAASsxB,GAAaxW,EAAUpJ,GAC9B,OAAOA,EAAO6f,cAAczW,GAe9B,SAAS0W,KACP,IAII3hC,EACA6V,EALA+rB,EAAa,GACbC,EAAa,GACbC,EAAe,GACfjU,EAAc,GAGdkU,EAAOvoC,KAAKuoC,OAEhB,IAAK/hC,EAAI,EAAG6V,EAAIksB,EAAK/mC,OAAQgF,EAAI6V,IAAK7V,EACpC6hC,EAAW3mC,KAAKiwB,GAAY4W,EAAK/hC,GAAGiB,OACpC2gC,EAAW1mC,KAAKiwB,GAAY4W,EAAK/hC,GAAG01B,OACpCoM,EAAa5mC,KAAKiwB,GAAY4W,EAAK/hC,GAAGgiC,SACtCnU,EAAY3yB,KAAKiwB,GAAY4W,EAAK/hC,GAAGiB,OACrC4sB,EAAY3yB,KAAKiwB,GAAY4W,EAAK/hC,GAAG01B,OACrC7H,EAAY3yB,KAAKiwB,GAAY4W,EAAK/hC,GAAGgiC,SAGvCxoC,KAAKyoC,WAAa,IAAI56B,OAAO,KAAOwmB,EAAYlI,KAAK,KAAO,IAAK,KACjEnsB,KAAK0oC,eAAiB,IAAI76B,OAAO,KAAOw6B,EAAWlc,KAAK,KAAO,IAAK,KACpEnsB,KAAK2oC,eAAiB,IAAI96B,OAAO,KAAOu6B,EAAWjc,KAAK,KAAO,IAAK,KACpEnsB,KAAK4oC,iBAAmB,IAAI/6B,OAAO,KAAOy6B,EAAanc,KAAK,KAAO,IAAK,KAW1E,SAAS0c,GAAuBpb,EAAOqb,GACrCtb,EAAe,EAAG,CAACC,EAAOA,EAAMjsB,QAAS,EAAGsnC,GAyD9C,SAASC,GAAqB1hB,EAAO2O,EAAMC,EAASN,EAAKC,GACvD,IAAIoT,EAEJ,OAAa,MAAT3hB,EACKgP,GAAWr2B,KAAM21B,EAAKC,GAAKrG,MAI9ByG,GAFJgT,EAAcxS,GAAYnP,EAAOsO,EAAKC,MAGpCI,EAAOgT,GAGFC,GAAW/nC,KAAKlB,KAAMqnB,EAAO2O,EAAMC,EAASN,EAAKC,IAI5D,SAASqT,GAAW7I,EAAUpK,EAAMC,EAASN,EAAKC,GAChD,IAAIsT,EAAgBnT,GAAmBqK,EAAUpK,EAAMC,EAASN,EAAKC,GACjEzF,EAAOmF,GAAc4T,EAAc3Z,KAAM,EAAG2Z,EAAc9S,WAI9D,OAHAp2B,KAAKuvB,KAAKY,EAAKqF,kBACfx1B,KAAKkwB,MAAMC,EAAK4P,eAChB//B,KAAKmwB,KAAKA,EAAK6P,cACRhgC,KA/WTwtB,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAC9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WACpC8D,GAAc,IAAK2W,IACnB3W,GAAc,KAAM2W,IACpB3W,GAAc,MAAO2W,IACrB3W,GAAc,QAuOd,SAAsBG,EAAUpJ,GAC9B,OAAOA,EAAO8gB,cAAc1X,MAvO9BH,GAAc,SA0Od,SAAwBG,EAAUpJ,GAChC,OAAOA,EAAO+gB,gBAAgB3X,MA1OhCU,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,UAAU,SAAU9K,EAAOhhB,EAAOmQ,EAAQiX,GACjF,IAAIjE,EAAMhT,EAAOiV,QAAQ4d,UAAUhiB,EAAOoG,EAAOjX,EAAO6T,SAEpDb,EACFf,EAAgBjS,GAAQgT,IAAMA,EAE9Bf,EAAgBjS,GAAQ0S,WAAa7B,KAGzCiK,GAAc,IAAKL,IACnBK,GAAc,KAAML,IACpBK,GAAc,MAAOL,IACrBK,GAAc,OAAQL,IACtBK,GAAc,MAgOd,SAA6BG,EAAUpJ,GACrC,OAAOA,EAAOihB,sBAAwBrY,MAhOxCkB,GAAc,CAAC,IAAK,KAAM,MAAO,QA9/FtB,GA+/FXA,GAAc,CAAC,OAAO,SAAU9K,EAAOhhB,EAAOmQ,EAAQiX,GACpD,IAAI/iB,EAEA8L,EAAOiV,QAAQ6d,uBACjB5+B,EAAQ2c,EAAM3c,MAAM8L,EAAOiV,QAAQ6d,uBAGjC9yB,EAAOiV,QAAQ8d,oBACjBljC,EAvgGO,GAugGOmQ,EAAOiV,QAAQ8d,oBAAoBliB,EAAO3c,GAExDrE,EAzgGO,GAygGOyuB,SAASzN,EAAO,OAiPlCmG,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxtB,KAAKogC,WAAa,OAE3B5S,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxtB,KAAKwpC,cAAgB,OAO9BX,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAEhCra,EAAa,WAAY,MACzBA,EAAa,cAAe,MAE5BY,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAE/BkC,GAAc,IAAKJ,IACnBI,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,IACjCa,GAAc,OAAQP,GAAWN,IACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,QAASN,GAAWN,IAClC0B,GAAkB,CAAC,OAAQ,QAAS,OAAQ,UAAU,SAAU/K,EAAO2O,EAAMxf,EAAQiX,GACnFuI,EAAKvI,EAAMN,OAAO,EAAG,IAAMwC,EAAMtI,MAEnC+K,GAAkB,CAAC,KAAM,OAAO,SAAU/K,EAAO2O,EAAMxf,EAAQiX,GAC7DuI,EAAKvI,GAASrG,EAAMyN,kBAAkBxN,MAyDxCmG,EAAe,IAAK,EAAG,KAAM,WAE7BgB,EAAa,UAAW,KAExBY,EAAgB,UAAW,GAE3BkC,GAAc,IAAKhB,GACnB6B,GAAc,KAAK,SAAU9K,EAAOhhB,GAClCA,EA51GU,GA41G0B,GAApBspB,EAAMtI,GAAS,MAQjCmG,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAErCgB,EAAa,OAAQ,KAErBY,EAAgB,OAAQ,GAExBkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,MAAM,SAAUG,EAAUpJ,GAEtC,OAAOoJ,EAAWpJ,EAAOohB,yBAA2BphB,EAAOqhB,cAAgBrhB,EAAOshB,kCAEpFxX,GAAc,CAAC,IAAK,MA/2GT,GAg3GXA,GAAc,MAAM,SAAU9K,EAAOhhB,GACnCA,EAj3GS,GAi3GKspB,EAAMtI,EAAM3c,MAAMimB,IAAW,OAG7C,IAAIiZ,GAAmB7Z,EAAW,QAAQ,GAE1CvC,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAE3CgB,EAAa,YAAa,OAE1BY,EAAgB,YAAa,GAE7BkC,GAAc,MAAOR,IACrBQ,GAAc,OAAQd,GACtB2B,GAAc,CAAC,MAAO,SAAS,SAAU9K,EAAOhhB,EAAOmQ,GACrDA,EAAOsqB,WAAanR,EAAMtI,MAU5BmG,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAElCgB,EAAa,SAAU,KAEvBY,EAAgB,SAAU,IAE1BkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B4B,GAAc,CAAC,IAAK,MA/4GP,GAi5Gb,IAAI0X,GAAe9Z,EAAW,WAAW,GAEzCvC,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAElCgB,EAAa,SAAU,KAEvBY,EAAgB,SAAU,IAE1BkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B4B,GAAc,CAAC,IAAK,MA15GP,GA45Gb,IAmCI1E,GAAOqc,GAnCPC,GAAeha,EAAW,WAAW,GAqCzC,IAnCAvC,EAAe,IAAK,EAAG,GAAG,WACxB,SAAUxtB,KAAK0iC,cAAgB,QAEjClV,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,SAAUxtB,KAAK0iC,cAAgB,OAEjClV,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAChC,OAA4B,GAArBxtB,KAAK0iC,iBAEdlV,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WACjC,OAA4B,IAArBxtB,KAAK0iC,iBAEdlV,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAClC,OAA4B,IAArBxtB,KAAK0iC,iBAEdlV,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACnC,OAA4B,IAArBxtB,KAAK0iC,iBAEdlV,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WACpC,OAA4B,IAArBxtB,KAAK0iC,iBAEdlV,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACrC,OAA4B,IAArBxtB,KAAK0iC,iBAGdlU,EAAa,cAAe,MAE5BY,EAAgB,cAAe,IAE/BkC,GAAc,IAAKR,GAAWR,GAC9BgB,GAAc,KAAMR,GAAWP,GAC/Be,GAAc,MAAOR,GAAWN,GAG3B/C,GAAQ,OAAQA,GAAMjsB,QAAU,EAAGisB,IAAS,IAC/C6D,GAAc7D,GAAOwD,IAGvB,SAAS+Y,GAAQ3iB,EAAOhhB,GACtBA,EAr8GgB,GAq8GKspB,EAAuB,KAAhB,KAAOtI,IAGrC,IAAKoG,GAAQ,IAAKA,GAAMjsB,QAAU,EAAGisB,IAAS,IAC5C0E,GAAc1E,GAAOuc,IAGvBF,GAAoB/Z,EAAW,gBAAgB,GAE/CvC,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAU3B,IAAIyc,GAAQve,EAAO7qB,UAkGnB,SAASqpC,GAAmB3/B,GAC1B,OAAOA,EAlGT0/B,GAAM/nC,IAAMA,GACZ+nC,GAAMtQ,SArgCN,SAAoBwQ,EAAMC,GAEC,IAArBnpC,UAAUO,SACRmlC,GAAc1lC,UAAU,KAC1BkpC,EAAOlpC,UAAU,GACjBmpC,OAAU7lC,GACD6iC,GAAenmC,UAAU,MAClCmpC,EAAUnpC,UAAU,GACpBkpC,OAAO5lC,IAMX,IAAIs7B,EAAMsK,GAAQxJ,KACd0J,EAAMvF,GAAgBjF,EAAK7/B,MAAMsqC,QAAQ,OACzCliB,EAAShB,EAAMmjB,eAAevqC,KAAMqqC,IAAQ,WAC5Cpc,EAASmc,IAAYn9B,EAAWm9B,EAAQhiB,IAAWgiB,EAAQhiB,GAAQlnB,KAAKlB,KAAM6/B,GAAOuK,EAAQhiB,IACjG,OAAOpoB,KAAKooB,OAAO6F,GAAUjuB,KAAK6tB,aAAa8L,SAASvR,EAAQpoB,KAAM2gC,GAAYd,MAo/BpFoK,GAAMhF,MAj/BN,WACE,OAAO,IAAIvZ,EAAO1rB,OAi/BpBiqC,GAAMjF,KAx6BN,SAAc3d,EAAOyH,EAAO0b,GAC1B,IAAIC,EAAMC,EAAWzc,EAErB,IAAKjuB,KAAK4pB,UACR,OAAOa,IAKT,KAFAggB,EAAO3F,GAAgBzd,EAAOrnB,OAEpB4pB,UACR,OAAOa,IAMT,OAHAigB,EAAoD,KAAvCD,EAAKlG,YAAcvkC,KAAKukC,aACrCzV,EAAQD,EAAeC,IAGrB,IAAK,OACHb,EAASoZ,GAAUrnC,KAAMyqC,GAAQ,GACjC,MAEF,IAAK,QACHxc,EAASoZ,GAAUrnC,KAAMyqC,GACzB,MAEF,IAAK,UACHxc,EAASoZ,GAAUrnC,KAAMyqC,GAAQ,EACjC,MAEF,IAAK,SACHxc,GAAUjuB,KAAOyqC,GAAQ,IACzB,MAGF,IAAK,SACHxc,GAAUjuB,KAAOyqC,GAAQ,IACzB,MAGF,IAAK,OACHxc,GAAUjuB,KAAOyqC,GAAQ,KACzB,MAGF,IAAK,MACHxc,GAAUjuB,KAAOyqC,EAAOC,GAAa,MACrC,MAGF,IAAK,OACHzc,GAAUjuB,KAAOyqC,EAAOC,GAAa,OACrC,MAGF,QACEzc,EAASjuB,KAAOyqC,EAGpB,OAAOD,EAAUvc,EAASuB,EAASvB,IA+2BrCgc,GAAMU,MArnBN,SAAe7b,GACb,IAAIqb,EAAMS,EAGV,QAAcrmC,KAFduqB,EAAQD,EAAeC,KAEc,gBAAVA,IAA4B9uB,KAAK4pB,UAC1D,OAAO5pB,KAKT,OAFA4qC,EAAc5qC,KAAKurB,OAASyc,GAAiBD,GAErCjZ,GACN,IAAK,OACHqb,EAAOS,EAAY5qC,KAAKuvB,OAAS,EAAG,EAAG,GAAK,EAC5C,MAEF,IAAK,UACH4a,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAAUlwB,KAAKkwB,QAAU,EAAI,EAAG,GAAK,EAC1E,MAEF,IAAK,QACHia,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAAU,EAAG,GAAK,EACvD,MAEF,IAAK,OACHia,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAASlwB,KAAKmwB,OAASnwB,KAAKi2B,UAAY,GAAK,EAClF,MAEF,IAAK,UACHkU,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAASlwB,KAAKmwB,QAAUnwB,KAAK6qC,aAAe,GAAK,GAAK,EAC3F,MAEF,IAAK,MACL,IAAK,OACHV,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAASlwB,KAAKmwB,OAAS,GAAK,EACjE,MAEF,IAAK,OACHga,EAAOnqC,KAAKkqB,GAAG5e,UACf6+B,GA3HY,KA2HUvC,GAAMuC,GAAQnqC,KAAKurB,OAAS,EA5HpC,IA4HwCvrB,KAAKukC,aA3H/C,MA2H4F,EACxG,MAEF,IAAK,SACH4F,EAAOnqC,KAAKkqB,GAAG5e,UACf6+B,GAjIc,IAiIUvC,GAAMuC,EAjIhB,KAiIuC,EACrD,MAEF,IAAK,SACHA,EAAOnqC,KAAKkqB,GAAG5e,UACf6+B,GAvIc,IAuIUvC,GAAMuC,EAvIhB,KAuIuC,EAOzD,OAHAnqC,KAAKkqB,GAAGgb,QAAQiF,GAEhB/iB,EAAMuE,aAAa3rB,MAAM,GAClBA,MA+jBTiqC,GAAM7hB,OAnxBN,SAAgB0iB,GACTA,IACHA,EAAc9qC,KAAKslC,QAAUle,EAAMsgB,iBAAmBtgB,EAAMqgB,eAG9D,IAAIxZ,EAASH,EAAa9tB,KAAM8qC,GAChC,OAAO9qC,KAAK6tB,aAAakd,WAAW9c,IA8wBtCgc,GAAMlf,KA3wBN,SAAcof,EAAMa,GAClB,OAAIhrC,KAAK4pB,YAAcgC,EAASue,IAASA,EAAKvgB,WAAa+W,GAAYwJ,GAAMvgB,WACpE6b,GAAe,CACpB3a,GAAI9qB,KACJ+qB,KAAMof,IACL9hB,OAAOroB,KAAKqoB,UAAU4iB,UAAUD,GAE5BhrC,KAAK6tB,aAAaM,eAqwB7B8b,GAAMiB,QAjwBN,SAAiBF,GACf,OAAOhrC,KAAK+qB,KAAK4V,KAAeqK,IAiwBlCf,GAAMnf,GA9vBN,SAAYqf,EAAMa,GAChB,OAAIhrC,KAAK4pB,YAAcgC,EAASue,IAASA,EAAKvgB,WAAa+W,GAAYwJ,GAAMvgB,WACpE6b,GAAe,CACpB1a,KAAM/qB,KACN8qB,GAAIqf,IACH9hB,OAAOroB,KAAKqoB,UAAU4iB,UAAUD,GAE5BhrC,KAAK6tB,aAAaM,eAwvB7B8b,GAAMkB,MApvBN,SAAeH,GACb,OAAOhrC,KAAK8qB,GAAG6V,KAAeqK,IAovBhCf,GAAM9mC,IAzmHN,SAAmB2rB,GAGjB,OAAI7hB,EAAWjN,KAFf8uB,EAAQD,EAAeC,KAGd9uB,KAAK8uB,KAGP9uB,MAmmHTiqC,GAAMmB,UAvhBN,WACE,OAAO3iB,EAAgBzoB,MAAM+oB,UAuhB/BkhB,GAAMhE,QAv/BN,SAAiB5e,EAAOyH,GACtB,IAAIuc,EAAazf,EAASvE,GAASA,EAAQsZ,GAAYtZ,GAEvD,SAAMrnB,KAAK4pB,YAAayhB,EAAWzhB,aAMrB,iBAFdkF,EAAQD,EAAeC,IAAU,eAGxB9uB,KAAKsL,UAAY+/B,EAAW//B,UAE5B+/B,EAAW//B,UAAYtL,KAAKilC,QAAQqF,QAAQxb,GAAOxjB,YA4+B9D2+B,GAAMnE,SAx+BN,SAAkBze,EAAOyH,GACvB,IAAIuc,EAAazf,EAASvE,GAASA,EAAQsZ,GAAYtZ,GAEvD,SAAMrnB,KAAK4pB,YAAayhB,EAAWzhB,aAMrB,iBAFdkF,EAAQD,EAAeC,IAAU,eAGxB9uB,KAAKsL,UAAY+/B,EAAW//B,UAE5BtL,KAAKilC,QAAQ0F,MAAM7b,GAAOxjB,UAAY+/B,EAAW//B,YA69B5D2+B,GAAMqB,UAz9BN,SAAmBvgB,EAAMD,EAAIgE,EAAOyc,GAClC,IAAIC,EAAY5f,EAASb,GAAQA,EAAO4V,GAAY5V,GAChD0gB,EAAU7f,EAASd,GAAMA,EAAK6V,GAAY7V,GAE9C,SAAM9qB,KAAK4pB,WAAa4hB,EAAU5hB,WAAa6hB,EAAQ7hB,cAK5B,OAD3B2hB,EAAcA,GAAe,MACT,GAAavrC,KAAKimC,QAAQuF,EAAW1c,IAAU9uB,KAAK8lC,SAAS0F,EAAW1c,MAA+B,MAAnByc,EAAY,GAAavrC,KAAK8lC,SAAS2F,EAAS3c,IAAU9uB,KAAKimC,QAAQwF,EAAS3c,MAi9B1Lmb,GAAMyB,OA98BN,SAAgBrkB,EAAOyH,GACrB,IACI6c,EADAN,EAAazf,EAASvE,GAASA,EAAQsZ,GAAYtZ,GAGvD,SAAMrnB,KAAK4pB,YAAayhB,EAAWzhB,aAMrB,iBAFdkF,EAAQD,EAAeC,IAAU,eAGxB9uB,KAAKsL,YAAc+/B,EAAW//B,WAErCqgC,EAAUN,EAAW//B,UACdtL,KAAKilC,QAAQqF,QAAQxb,GAAOxjB,WAAaqgC,GAAWA,GAAW3rC,KAAKilC,QAAQ0F,MAAM7b,GAAOxjB,aAi8BpG2+B,GAAM2B,cA77BN,SAAuBvkB,EAAOyH,GAC5B,OAAO9uB,KAAK0rC,OAAOrkB,EAAOyH,IAAU9uB,KAAKimC,QAAQ5e,EAAOyH,IA67B1Dmb,GAAM4B,eA17BN,SAAwBxkB,EAAOyH,GAC7B,OAAO9uB,KAAK0rC,OAAOrkB,EAAOyH,IAAU9uB,KAAK8lC,SAASze,EAAOyH,IA07B3Dmb,GAAMrgB,QAtiBN,WACE,OAAOA,EAAQ5pB,OAsiBjBiqC,GAAMtC,KAAOA,GACbsC,GAAM5hB,OAASA,GACf4hB,GAAMpc,WAAaA,GACnBoc,GAAM/c,IAAM6V,GACZkH,GAAMlW,IAAM+O,GACZmH,GAAM6B,aAxiBN,WACE,OAAO5jB,EAAO,GAAIO,EAAgBzoB,QAwiBpCiqC,GAAMroC,IA9mHN,SAAmBktB,EAAOruB,GACxB,GAAqB,iBAAVquB,EAAoB,CAE7B,IACItoB,EADAulC,EArFR,SAA6BC,GAC3B,IACIC,EADAnd,EAAQ,GAGZ,IAAKmd,KAAKD,EACJ1kB,EAAW0kB,EAAUC,IACvBnd,EAAMptB,KAAK,CACT+sB,KAAMwd,EACN5c,SAAUF,EAAW8c,KAQ3B,OAHAnd,EAAMwF,MAAK,SAAU/M,EAAGC,GACtB,OAAOD,EAAE8H,SAAW7H,EAAE6H,YAEjBP,EAqEaod,CADlBpd,EAAQC,EAAqBD,IAI7B,IAAKtoB,EAAI,EAAGA,EAAIulC,EAAYvqC,OAAQgF,IAClCxG,KAAK+rC,EAAYvlC,GAAGioB,MAAMK,EAAMid,EAAYvlC,GAAGioB,YAKjD,GAAIxhB,EAAWjN,KAFf8uB,EAAQD,EAAeC,KAGrB,OAAO9uB,KAAK8uB,GAAOruB,GAIvB,OAAOT,MA8lHTiqC,GAAMK,QArsBN,SAAiBxb,GACf,IAAIqb,EAAMS,EAGV,QAAcrmC,KAFduqB,EAAQD,EAAeC,KAEc,gBAAVA,IAA4B9uB,KAAK4pB,UAC1D,OAAO5pB,KAKT,OAFA4qC,EAAc5qC,KAAKurB,OAASyc,GAAiBD,GAErCjZ,GACN,IAAK,OACHqb,EAAOS,EAAY5qC,KAAKuvB,OAAQ,EAAG,GACnC,MAEF,IAAK,UACH4a,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAAUlwB,KAAKkwB,QAAU,EAAG,GACjE,MAEF,IAAK,QACHia,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAAS,GAC9C,MAEF,IAAK,OACHia,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAASlwB,KAAKmwB,OAASnwB,KAAKi2B,WACjE,MAEF,IAAK,UACHkU,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAASlwB,KAAKmwB,QAAUnwB,KAAK6qC,aAAe,IACjF,MAEF,IAAK,MACL,IAAK,OACHV,EAAOS,EAAY5qC,KAAKuvB,OAAQvvB,KAAKkwB,QAASlwB,KAAKmwB,QACnD,MAEF,IAAK,OACHga,EAAOnqC,KAAKkqB,GAAG5e,UACf6+B,GAAQvC,GAAMuC,GAAQnqC,KAAKurB,OAAS,EAlEtB,IAkE0BvrB,KAAKukC,aAjEjC,MAkEZ,MAEF,IAAK,SACH4F,EAAOnqC,KAAKkqB,GAAG5e,UACf6+B,GAAQvC,GAAMuC,EAvEA,KAwEd,MAEF,IAAK,SACHA,EAAOnqC,KAAKkqB,GAAG5e,UACf6+B,GAAQvC,GAAMuC,EA7EA,KAoFlB,OAHAnqC,KAAKkqB,GAAGgb,QAAQiF,GAEhB/iB,EAAMuE,aAAa3rB,MAAM,GAClBA,MA+oBTiqC,GAAMxD,SAAWA,GACjBwD,GAAMkC,QAvkBN,WACE,IAAIzjB,EAAI1oB,KACR,MAAO,CAAC0oB,EAAE6G,OAAQ7G,EAAEwH,QAASxH,EAAEyH,OAAQzH,EAAE4Y,OAAQ5Y,EAAE8Z,SAAU9Z,EAAE+Z,SAAU/Z,EAAEga,gBAskB7EuH,GAAMmC,SAnkBN,WACE,IAAI1jB,EAAI1oB,KACR,MAAO,CACLojC,MAAO1a,EAAE6G,OACToD,OAAQjK,EAAEwH,QACVC,KAAMzH,EAAEyH,OACRwI,MAAOjQ,EAAEiQ,QACTE,QAASnQ,EAAEmQ,UACXG,QAAStQ,EAAEsQ,UACX0K,aAAchb,EAAEgb,iBA2jBpBuG,GAAMoC,OA7kBN,WACE,OAAO,IAAI74B,KAAKxT,KAAKsL,YA6kBvB2+B,GAAMqC,YAp2BN,SAAqBC,GACnB,IAAKvsC,KAAK4pB,UACR,OAAO,KAGT,IAAIpB,GAAqB,IAAf+jB,EACN7jB,EAAIF,EAAMxoB,KAAKilC,QAAQzc,MAAQxoB,KAEnC,OAAI0oB,EAAE6G,OAAS,GAAK7G,EAAE6G,OAAS,KACtBzB,EAAapF,EAAGF,EAAM,iCAAmC,gCAG9Dvb,EAAWuG,KAAK3S,UAAUyrC,aAExB9jB,EACKxoB,KAAKqsC,SAASC,cAEd,IAAI94B,KAAKxT,KAAKsL,UAA+B,GAAnBtL,KAAKukC,YAAmB,KAAM+H,cAAc7hC,QAAQ,IAAKqjB,EAAapF,EAAG,MAIvGoF,EAAapF,EAAGF,EAAM,+BAAiC,+BAg1BhEyhB,GAAMuC,QAt0BN,WACE,IAAKxsC,KAAK4pB,UACR,MAAO,qBAAuB5pB,KAAKmrB,GAAK,OAG1C,IAEIshB,EACAld,EAEAmd,EALAlqC,EAAO,SACPmqC,EAAO,GAeX,OATK3sC,KAAK4sC,YACRpqC,EAA4B,IAArBxC,KAAKukC,YAAoB,aAAe,mBAC/CoI,EAAO,KAGTF,EAAS,IAAMjqC,EAAO,MACtB+sB,EAAO,GAAKvvB,KAAKuvB,QAAUvvB,KAAKuvB,QAAU,KAAO,OAAS,SAE1Dmd,EAASC,EAAO,OACT3sC,KAAKooB,OAAOqkB,EAASld,EAFjB,wBAEmCmd,IAmzB1B,oBAAXpkC,QAAwC,MAAdA,OAAOukC,MAC1C5C,GAAM3hC,OAAOukC,IAAI,+BAAiC,WAChD,MAAO,UAAY7sC,KAAKooB,SAAW,MAIvC6hB,GAAM6C,OAjkBN,WAEE,OAAO9sC,KAAK4pB,UAAY5pB,KAAKssC,cAAgB,MAgkB/CrC,GAAM1nC,SAl3BN,WACE,OAAOvC,KAAKilC,QAAQ5c,OAAO,MAAMD,OAAO,qCAk3B1C6hB,GAAM8C,KA7lBN,WACE,OAAOjgB,KAAK4C,MAAM1vB,KAAKsL,UAAY,MA6lBrC2+B,GAAM3+B,QAlmBN,WACE,OAAOtL,KAAKkqB,GAAG5e,UAAkC,KAArBtL,KAAKwrB,SAAW,IAkmB9Cye,GAAM+C,aApjBN,WACE,MAAO,CACL3lB,MAAOrnB,KAAKmrB,GACZ/C,OAAQpoB,KAAKorB,GACb/C,OAAQroB,KAAKyrB,QACboX,MAAO7iC,KAAKurB,OACZjD,OAAQtoB,KAAKqqB,UA+iBjB4f,GAAMgD,QA1aN,WACE,IAAIzmC,EACA6V,EACA4O,EACAsd,EAAOvoC,KAAK6tB,aAAa0a,OAE7B,IAAK/hC,EAAI,EAAG6V,EAAIksB,EAAK/mC,OAAQgF,EAAI6V,IAAK7V,EAAG,CAIvC,GAFAykB,EAAMjrB,KAAKsqC,QAAQ,OAAOh/B,UAEtBi9B,EAAK/hC,GAAG0mC,OAASjiB,GAAOA,GAAOsd,EAAK/hC,GAAG2mC,MACzC,OAAO5E,EAAK/hC,GAAGiB,KAGjB,GAAI8gC,EAAK/hC,GAAG2mC,OAASliB,GAAOA,GAAOsd,EAAK/hC,GAAG0mC,MACzC,OAAO3E,EAAK/hC,GAAGiB,KAInB,MAAO,IAwZTwiC,GAAMmD,UArZN,WACE,IAAI5mC,EACA6V,EACA4O,EACAsd,EAAOvoC,KAAK6tB,aAAa0a,OAE7B,IAAK/hC,EAAI,EAAG6V,EAAIksB,EAAK/mC,OAAQgF,EAAI6V,IAAK7V,EAAG,CAIvC,GAFAykB,EAAMjrB,KAAKsqC,QAAQ,OAAOh/B,UAEtBi9B,EAAK/hC,GAAG0mC,OAASjiB,GAAOA,GAAOsd,EAAK/hC,GAAG2mC,MACzC,OAAO5E,EAAK/hC,GAAGgiC,OAGjB,GAAID,EAAK/hC,GAAG2mC,OAASliB,GAAOA,GAAOsd,EAAK/hC,GAAG0mC,MACzC,OAAO3E,EAAK/hC,GAAGgiC,OAInB,MAAO,IAmYTyB,GAAMoD,QAhYN,WACE,IAAI7mC,EACA6V,EACA4O,EACAsd,EAAOvoC,KAAK6tB,aAAa0a,OAE7B,IAAK/hC,EAAI,EAAG6V,EAAIksB,EAAK/mC,OAAQgF,EAAI6V,IAAK7V,EAAG,CAIvC,GAFAykB,EAAMjrB,KAAKsqC,QAAQ,OAAOh/B,UAEtBi9B,EAAK/hC,GAAG0mC,OAASjiB,GAAOA,GAAOsd,EAAK/hC,GAAG2mC,MACzC,OAAO5E,EAAK/hC,GAAG01B,KAGjB,GAAIqM,EAAK/hC,GAAG2mC,OAASliB,GAAOA,GAAOsd,EAAK/hC,GAAG0mC,MACzC,OAAO3E,EAAK/hC,GAAG01B,KAInB,MAAO,IA8WT+N,GAAMqD,QA3WN,WACE,IAAI9mC,EACA6V,EACAxU,EACAojB,EACAsd,EAAOvoC,KAAK6tB,aAAa0a,OAE7B,IAAK/hC,EAAI,EAAG6V,EAAIksB,EAAK/mC,OAAQgF,EAAI6V,IAAK7V,EAKpC,GAJAqB,EAAM0gC,EAAK/hC,GAAG0mC,OAAS3E,EAAK/hC,GAAG2mC,MAAQ,GAAM,EAE7CliB,EAAMjrB,KAAKsqC,QAAQ,OAAOh/B,UAEtBi9B,EAAK/hC,GAAG0mC,OAASjiB,GAAOA,GAAOsd,EAAK/hC,GAAG2mC,OAAS5E,EAAK/hC,GAAG2mC,OAASliB,GAAOA,GAAOsd,EAAK/hC,GAAG0mC,MACzF,OAAQltC,KAAKuvB,OAASnI,EAAMmhB,EAAK/hC,GAAG0mC,OAAO3d,QAAU1nB,EAAM0gC,EAAK/hC,GAAGqC,OAIvE,OAAO7I,KAAKuvB,QA2Vd0a,GAAM1a,KAAOwF,GACbkV,GAAM3a,WA1qGN,WACE,OAAOA,EAAWtvB,KAAKuvB,SA0qGzB0a,GAAM7J,SApPN,SAAwB/Y,GACtB,OAAO0hB,GAAqB7nC,KAAKlB,KAAMqnB,EAAOrnB,KAAKg2B,OAAQh2B,KAAKi2B,UAAWj2B,KAAK6tB,aAAa+S,MAAMjL,IAAK31B,KAAK6tB,aAAa+S,MAAMhL,MAoPlIqU,GAAMT,YAjPN,SAA2BniB,GACzB,OAAO0hB,GAAqB7nC,KAAKlB,KAAMqnB,EAAOrnB,KAAKwjC,UAAWxjC,KAAK6qC,aAAc,EAAG,IAiPtFZ,GAAM3G,QAAU2G,GAAM5G,SArLtB,SAAuBhc,GACrB,OAAgB,MAATA,EAAgByF,KAAK2C,MAAMzvB,KAAKkwB,QAAU,GAAK,GAAKlwB,KAAKkwB,MAAoB,GAAb7I,EAAQ,GAASrnB,KAAKkwB,QAAU,IAqLzG+Z,GAAM/Z,MAAQ8D,GACdiW,GAAM7Z,YAhzGN,WACE,OAAOA,GAAYpwB,KAAKuvB,OAAQvvB,KAAKkwB,UAgzGvC+Z,GAAMjU,KAAOiU,GAAM1G,MAhiGnB,SAAoBlc,GAClB,IAAI2O,EAAOh2B,KAAK6tB,aAAamI,KAAKh2B,MAClC,OAAgB,MAATqnB,EAAgB2O,EAAOh2B,KAAKkC,IAAqB,GAAhBmlB,EAAQ2O,GAAW,MA+hG7DiU,GAAMzG,QAAUyG,GAAMsD,SA5hGtB,SAAuBlmB,GACrB,IAAI2O,EAAOK,GAAWr2B,KAAM,EAAG,GAAGg2B,KAClC,OAAgB,MAAT3O,EAAgB2O,EAAOh2B,KAAKkC,IAAqB,GAAhBmlB,EAAQ2O,GAAW,MA2hG7DiU,GAAMzT,YA3ON,WACE,IAAIgX,EAAWxtC,KAAK6tB,aAAa+S,MAEjC,OAAOpK,GAAYx2B,KAAKuvB,OAAQie,EAAS7X,IAAK6X,EAAS5X,MAyOzDqU,GAAMwD,gBAtON,WACE,IAAID,EAAWxtC,KAAK6tB,aAAa+S,MAEjC,OAAOpK,GAAYx2B,KAAKogC,WAAYoN,EAAS7X,IAAK6X,EAAS5X,MAoO7DqU,GAAMyD,eArPN,WACE,OAAOlX,GAAYx2B,KAAKuvB,OAAQ,EAAG,IAqPrC0a,GAAM0D,sBAlPN,WACE,OAAOnX,GAAYx2B,KAAKwpC,cAAe,EAAG,IAkP5CS,GAAM9Z,KAAOyZ,GACbK,GAAMnS,IAAMmS,GAAMxG,KA/zFlB,SAAyBpc,GACvB,IAAKrnB,KAAK4pB,UACR,OAAgB,MAATvC,EAAgBrnB,KAAOyqB,IAGhC,IAAIqN,EAAM93B,KAAKurB,OAASvrB,KAAKkqB,GAAG4L,YAAc91B,KAAKkqB,GAAG4U,SAEtD,OAAa,MAATzX,GACFA,EAtLJ,SAAsBA,EAAOgB,GAC3B,MAAqB,iBAAVhB,EACFA,EAGJ4C,MAAM5C,GAMU,iBAFrBA,EAAQgB,EAAO6O,cAAc7P,IAGpBA,EAGF,KATEyN,SAASzN,EAAO,IAgLfumB,CAAavmB,EAAOrnB,KAAK6tB,cAC1B7tB,KAAKkC,IAAImlB,EAAQyQ,EAAK,MAEtBA,GAqzFXmS,GAAMhU,QAjzFN,SAA+B5O,GAC7B,IAAKrnB,KAAK4pB,UACR,OAAgB,MAATvC,EAAgBrnB,KAAOyqB,IAGhC,IAAIwL,GAAWj2B,KAAK83B,MAAQ,EAAI93B,KAAK6tB,aAAa+S,MAAMjL,KAAO,EAC/D,OAAgB,MAATtO,EAAgB4O,EAAUj2B,KAAKkC,IAAImlB,EAAQ4O,EAAS,MA4yF7DgU,GAAMY,WAzyFN,SAA4BxjB,GAC1B,IAAKrnB,KAAK4pB,UACR,OAAgB,MAATvC,EAAgBrnB,KAAOyqB,IAMhC,GAAa,MAATpD,EAAe,CACjB,IAAI4O,EA7LR,SAAyB5O,EAAOgB,GAC9B,MAAqB,iBAAVhB,EACFgB,EAAO6O,cAAc7P,GAAS,GAAK,EAGrC4C,MAAM5C,GAAS,KAAOA,EAwLbwmB,CAAgBxmB,EAAOrnB,KAAK6tB,cAC1C,OAAO7tB,KAAK83B,IAAI93B,KAAK83B,MAAQ,EAAI7B,EAAUA,EAAU,GAErD,OAAOj2B,KAAK83B,OAAS,GA8xFzBmS,GAAM7T,UA7JN,SAAyB/O,GACvB,IAAI+O,EAAYtJ,KAAKuX,OAAOrkC,KAAKilC,QAAQqF,QAAQ,OAAStqC,KAAKilC,QAAQqF,QAAQ,SAAW,OAAS,EACnG,OAAgB,MAATjjB,EAAgB+O,EAAYp2B,KAAKkC,IAAImlB,EAAQ+O,EAAW,MA4JjE6T,GAAM3I,KAAO2I,GAAMtR,MAAQc,GAC3BwQ,GAAMzH,OAASyH,GAAMpR,QAAUgR,GAC/BI,GAAMxH,OAASwH,GAAMjR,QAAU+Q,GAC/BE,GAAMvH,YAAcuH,GAAMvG,aAAeoG,GACzCG,GAAM1F,UAx7CN,SAAsBld,EAAOymB,EAAeC,GAC1C,IACIC,EADAnlC,EAAS7I,KAAKwrB,SAAW,EAG7B,IAAKxrB,KAAK4pB,UACR,OAAgB,MAATvC,EAAgBrnB,KAAOyqB,IAGhC,GAAa,MAATpD,EAAe,CACjB,GAAqB,iBAAVA,GAGT,GAAc,QAFdA,EAAQod,GAAiBrT,GAAkB/J,IAGzC,OAAOrnB,UAEA8sB,KAAKC,IAAI1F,GAAS,KAAO0mB,IAClC1mB,GAAgB,IAwBlB,OArBKrnB,KAAKurB,QAAUuiB,IAClBE,EAAc5I,GAAcplC,OAG9BA,KAAKwrB,QAAUnE,EACfrnB,KAAKurB,QAAS,EAEK,MAAfyiB,GACFhuC,KAAKkC,IAAI8rC,EAAa,KAGpBnlC,IAAWwe,KACRymB,GAAiB9tC,KAAKiuC,kBACzB3H,GAAYtmC,KAAMylC,GAAepe,EAAQxe,EAAQ,KAAM,GAAG,GAChD7I,KAAKiuC,oBACfjuC,KAAKiuC,mBAAoB,EACzB7mB,EAAMuE,aAAa3rB,MAAM,GACzBA,KAAKiuC,kBAAoB,OAItBjuC,KAEP,OAAOA,KAAKurB,OAAS1iB,EAASu8B,GAAcplC,OA+4ChDiqC,GAAMzhB,IA93CN,SAAwBslB,GACtB,OAAO9tC,KAAKukC,UAAU,EAAGuJ,IA83C3B7D,GAAM9E,MA33CN,SAA0B2I,GAUxB,OATI9tC,KAAKurB,SACPvrB,KAAKukC,UAAU,EAAGuJ,GAClB9tC,KAAKurB,QAAS,EAEVuiB,GACF9tC,KAAKymC,SAASrB,GAAcplC,MAAO,MAIhCA,MAk3CTiqC,GAAMiE,UA/2CN,WACE,GAAiB,MAAbluC,KAAKsrB,KACPtrB,KAAKukC,UAAUvkC,KAAKsrB,MAAM,GAAO,QAC5B,GAAuB,iBAAZtrB,KAAKmrB,GAAiB,CACtC,IAAIgjB,EAAQ1J,GAAiBtT,GAAanxB,KAAKmrB,IAElC,MAATgjB,EACFnuC,KAAKukC,UAAU4J,GAEfnuC,KAAKukC,UAAU,GAAG,GAItB,OAAOvkC,MAm2CTiqC,GAAMmE,qBAh2CN,SAA8B/mB,GAC5B,QAAKrnB,KAAK4pB,YAIVvC,EAAQA,EAAQsZ,GAAYtZ,GAAOkd,YAAc,GACzCvkC,KAAKukC,YAAcld,GAAS,IAAO,IA21C7C4iB,GAAMoE,MAx1CN,WACE,OAAOruC,KAAKukC,YAAcvkC,KAAKilC,QAAQ/U,MAAM,GAAGqU,aAAevkC,KAAKukC,YAAcvkC,KAAKilC,QAAQ/U,MAAM,GAAGqU,aAw1C1G0F,GAAM2C,QAj0CN,WACE,QAAO5sC,KAAK4pB,YAAa5pB,KAAKurB,QAi0ChC0e,GAAMqE,YA9zCN,WACE,QAAOtuC,KAAK4pB,WAAY5pB,KAAKurB,QA8zC/B0e,GAAM3E,MAAQA,GACd2E,GAAMpH,MAAQyC,GACd2E,GAAMsE,SA1FN,WACE,OAAOvuC,KAAKurB,OAAS,MAAQ,IA0F/B0e,GAAMuE,SAvFN,WACE,OAAOxuC,KAAKurB,OAAS,6BAA+B,IAuFtD0e,GAAMwE,MAAQvyB,EAAU,kDAAmD0tB,IAC3EK,GAAMtX,OAASzW,EAAU,mDAAoD8X,IAC7EiW,GAAM7G,MAAQlnB,EAAU,iDAAkD6Y,IAC1EkV,GAAM0C,KAAOzwB,EAAU,4GAz5CvB,SAAoBmL,EAAOymB,GACzB,OAAa,MAATzmB,GACmB,iBAAVA,IACTA,GAASA,GAGXrnB,KAAKukC,UAAUld,EAAOymB,GACf9tC,OAECA,KAAKukC,eAi5CjB0F,GAAMyE,aAAexyB,EAAU,2GA/1C/B,WACE,IAAK0L,EAAY5nB,KAAK2uC,eACpB,OAAO3uC,KAAK2uC,cAGd,IACIpjC,EADAg0B,EAAI,GAYR,OAVA1U,EAAW0U,EAAGv/B,OACdu/B,EAAIoC,GAAcpC,IAEZhN,IACJhnB,EAAQg0B,EAAEhU,OAASpD,EAAUoX,EAAEhN,IAAMoO,GAAYpB,EAAEhN,IACnDvyB,KAAK2uC,cAAgB3uC,KAAK4pB,WAzN9B,SAAuBglB,EAAQC,EAAQC,GACrC,IAGItoC,EAHAR,EAAM8mB,KAAKiH,IAAI6a,EAAOptC,OAAQqtC,EAAOrtC,QACrCutC,EAAajiB,KAAKC,IAAI6hB,EAAOptC,OAASqtC,EAAOrtC,QAC7CwtC,EAAQ,EAGZ,IAAKxoC,EAAI,EAAGA,EAAIR,EAAKQ,KACfsoC,GAAeF,EAAOpoC,KAAOqoC,EAAOroC,KAAOsoC,GAAenf,EAAMif,EAAOpoC,MAAQmpB,EAAMkf,EAAOroC,MAC9FwoC,IAIJ,OAAOA,EAAQD,EA6M0BE,CAAc1P,EAAEhN,GAAIhnB,EAAM4gC,WAAa,GAE9EnsC,KAAK2uC,eAAgB,EAGhB3uC,KAAK2uC,iBA41Cd,IAAIO,GAAUziB,EAAO5rB,UAkCrB,SAASsuC,GAAM/mB,EAAQnmB,EAAOmtC,EAAO3iC,GACnC,IAAI4b,EAAS2T,KACTxT,EAAML,IAAYvmB,IAAI6K,EAAQxK,GAClC,OAAOomB,EAAO+mB,GAAO5mB,EAAKJ,GAG5B,SAASinB,GAAejnB,EAAQnmB,EAAOmtC,GAQrC,GAPIvnB,EAASO,KACXnmB,EAAQmmB,EACRA,OAAS7jB,GAGX6jB,EAASA,GAAU,GAEN,MAATnmB,EACF,OAAOktC,GAAM/mB,EAAQnmB,EAAOmtC,EAAO,SAGrC,IAAI5oC,EACA8oC,EAAM,GAEV,IAAK9oC,EAAI,EAAGA,EAAI,GAAIA,IAClB8oC,EAAI9oC,GAAK2oC,GAAM/mB,EAAQ5hB,EAAG4oC,EAAO,SAGnC,OAAOE,EAWT,SAASC,GAAiBC,EAAcpnB,EAAQnmB,EAAOmtC,GACzB,kBAAjBI,GACL3nB,EAASO,KACXnmB,EAAQmmB,EACRA,OAAS7jB,GAGX6jB,EAASA,GAAU,KAGnBnmB,EADAmmB,EAASonB,EAETA,GAAe,EAEX3nB,EAASO,KACXnmB,EAAQmmB,EACRA,OAAS7jB,GAGX6jB,EAASA,GAAU,IAGrB,IAEI5hB,EAFA6hB,EAAS2T,KACTyT,EAAQD,EAAennB,EAAOuY,MAAMjL,IAAM,EAE1C2Z,EAAM,GAEV,GAAa,MAATrtC,EACF,OAAOktC,GAAM/mB,GAASnmB,EAAQwtC,GAAS,EAAGL,EAAO,OAGnD,IAAK5oC,EAAI,EAAGA,EAAI,EAAGA,IACjB8oC,EAAI9oC,GAAK2oC,GAAM/mB,GAAS5hB,EAAIipC,GAAS,EAAGL,EAAO,OAGjD,OAAOE,EAvGTJ,GAAQvV,SAj+HR,SAAkB55B,EAAKiuB,EAAK6R,GAC1B,IAAI5R,EAASjuB,KAAK0vC,UAAU3vC,IAAQC,KAAK0vC,UAAoB,SAC7D,OAAOziC,EAAWghB,GAAUA,EAAO/sB,KAAK8sB,EAAK6R,GAAO5R,GAg+HtDihB,GAAQ7gB,eA72HR,SAAwBtuB,GACtB,IAAIqoB,EAASpoB,KAAK2vC,gBAAgB5vC,GAC9B6vC,EAAc5vC,KAAK2vC,gBAAgB5vC,EAAI8vC,eAE3C,OAAIznB,IAAWwnB,EACNxnB,GAGTpoB,KAAK2vC,gBAAgB5vC,GAAO6vC,EAAYllC,MAAM0iB,GAAkBzoB,KAAI,SAAUmrC,GAC5E,MAAY,SAARA,GAA0B,OAARA,GAAwB,OAARA,GAAwB,SAARA,EAC7CA,EAAI5jB,MAAM,GAGZ4jB,KACN3jB,KAAK,IACDnsB,KAAK2vC,gBAAgB5vC,KA+1H9BmvC,GAAQ/gB,YA11HR,WACE,OAAOnuB,KAAK+vC,cA01Hdb,GAAQvhB,QAp1HR,SAAiBhjB,GACf,OAAO3K,KAAKgwC,SAASvlC,QAAQ,KAAME,IAo1HrCukC,GAAQtN,SAAWsI,GACnBgF,GAAQnE,WAAab,GACrBgF,GAAQzU,aAh0HR,SAAsB9vB,EAAQqgC,EAAezgC,EAAQ0lC,GACnD,IAAIhiB,EAASjuB,KAAKkwC,cAAc3lC,GAChC,OAAO0C,EAAWghB,GAAUA,EAAOtjB,EAAQqgC,EAAezgC,EAAQ0lC,GAAYhiB,EAAOxjB,QAAQ,MAAOE,IA+zHtGukC,GAAQiB,WA5zHR,SAAoBnL,EAAM/W,GACxB,IAAI7F,EAASpoB,KAAKkwC,cAAclL,EAAO,EAAI,SAAW,QACtD,OAAO/3B,EAAWmb,GAAUA,EAAO6F,GAAU7F,EAAO3d,QAAQ,MAAOwjB,IA2zHrEihB,GAAQttC,IA7jIR,SAAa4U,GACX,IAAIwU,EAAMxkB,EAEV,IAAKA,KAAKgQ,EACJ8Q,EAAW9Q,EAAQhQ,KAGjByG,EAFJ+d,EAAOxU,EAAOhQ,IAGZxG,KAAKwG,GAAKwkB,EAEVhrB,KAAK,IAAMwG,GAAKwkB,GAKtBhrB,KAAKm8B,QAAU3lB,EAIfxW,KAAK2pC,+BAAiC,IAAI97B,QAAQ7N,KAAKypC,wBAAwB/4B,QAAU1Q,KAAK0pC,cAAch5B,QAAU,IAAM,UAAUA,SA2iIxIw+B,GAAQ3G,KAlkBR,SAAoB7f,EAAGN,GACrB,IAAI5hB,EACA6V,EACA8T,EACAoY,EAAOvoC,KAAKowC,OAASpU,GAAU,MAAMoU,MAEzC,IAAK5pC,EAAI,EAAG6V,EAAIksB,EAAK/mC,OAAQgF,EAAI6V,IAAK7V,EAAG,CACvC,cAAe+hC,EAAK/hC,GAAG0mC,OACrB,IAAK,SAEH/c,EAAO/I,EAAMmhB,EAAK/hC,GAAG0mC,OAAO5C,QAAQ,OACpC/B,EAAK/hC,GAAG0mC,MAAQ/c,EAAK7kB,UAIzB,cAAei9B,EAAK/hC,GAAG2mC,OACrB,IAAK,YACH5E,EAAK/hC,GAAG2mC,MAAQ,IAChB,MAEF,IAAK,SAEHhd,EAAO/I,EAAMmhB,EAAK/hC,GAAG2mC,OAAO7C,QAAQ,OAAOh/B,UAC3Ci9B,EAAK/hC,GAAG2mC,MAAQhd,EAAK7kB,WAK3B,OAAOi9B,GAuiBT2G,GAAQ7F,UApiBR,SAAyB4D,EAAS7kB,EAAQE,GACxC,IAAI9hB,EACA6V,EAEA5U,EACAy0B,EACAsM,EAHAD,EAAOvoC,KAAKuoC,OAMhB,IAFA0E,EAAUA,EAAQ4C,cAEbrpC,EAAI,EAAG6V,EAAIksB,EAAK/mC,OAAQgF,EAAI6V,IAAK7V,EAKpC,GAJAiB,EAAO8gC,EAAK/hC,GAAGiB,KAAKooC,cACpB3T,EAAOqM,EAAK/hC,GAAG01B,KAAK2T,cACpBrH,EAASD,EAAK/hC,GAAGgiC,OAAOqH,cAEpBvnB,EACF,OAAQF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,GAAI8T,IAAS+Q,EACX,OAAO1E,EAAK/hC,GAGd,MAEF,IAAK,OACH,GAAIiB,IAASwlC,EACX,OAAO1E,EAAK/hC,GAGd,MAEF,IAAK,QACH,GAAIgiC,IAAWyE,EACb,OAAO1E,EAAK/hC,QAKb,GAAI,CAACiB,EAAMy0B,EAAMsM,GAAQx3B,QAAQi8B,IAAY,EAClD,OAAO1E,EAAK/hC,IA6flB0oC,GAAQxN,gBAxfR,SAA+BlY,EAAK+F,GAClC,IAAI1nB,EAAM2hB,EAAI0jB,OAAS1jB,EAAI2jB,MAAQ,GAAM,EAEzC,YAAa5oC,IAATgrB,EACKnI,EAAMoC,EAAI0jB,OAAO3d,OAEjBnI,EAAMoC,EAAI0jB,OAAO3d,QAAUA,EAAO/F,EAAI3gB,QAAUhB,GAmf3DqnC,GAAQhH,cAjZR,SAAuBzW,GAKrB,OAJKnK,EAAWtnB,KAAM,mBACpBmoC,GAAiBjnC,KAAKlB,MAGjByxB,EAAWzxB,KAAK2oC,eAAiB3oC,KAAKyoC,YA6Y/CyG,GAAQ/F,cA1ZR,SAAuB1X,GAKrB,OAJKnK,EAAWtnB,KAAM,mBACpBmoC,GAAiBjnC,KAAKlB,MAGjByxB,EAAWzxB,KAAK0oC,eAAiB1oC,KAAKyoC,YAsZ/CyG,GAAQ9F,gBA3YR,SAAyB3X,GAKvB,OAJKnK,EAAWtnB,KAAM,qBACpBmoC,GAAiBjnC,KAAKlB,MAGjByxB,EAAWzxB,KAAK4oC,iBAAmB5oC,KAAKyoC,YAuYjDyG,GAAQvc,OA//GR,SAAsBjK,EAAGN,GACvB,OAAKM,EAIE1kB,EAAQhE,KAAKgkC,SAAWhkC,KAAKgkC,QAAQtb,EAAEwH,SAAWlwB,KAAKgkC,SAAShkC,KAAKgkC,QAAQqM,UAAYnd,IAAkB/qB,KAAKigB,GAAU,SAAW,cAAcM,EAAEwH,SAHnJlsB,EAAQhE,KAAKgkC,SAAWhkC,KAAKgkC,QAAUhkC,KAAKgkC,QAAoB,YA8/G3EkL,GAAQxc,YAx/GR,SAA2BhK,EAAGN,GAC5B,OAAKM,EAIE1kB,EAAQhE,KAAKswC,cAAgBtwC,KAAKswC,aAAa5nB,EAAEwH,SAAWlwB,KAAKswC,aAAapd,GAAiB/qB,KAAKigB,GAAU,SAAW,cAAcM,EAAEwH,SAHvIlsB,EAAQhE,KAAKswC,cAAgBtwC,KAAKswC,aAAetwC,KAAKswC,aAAyB,YAu/G1FpB,GAAQpc,YA/7GR,SAA2BQ,EAAWlL,EAAQE,GAC5C,IAAI9hB,EAAGwnB,EAAKuD,EAEZ,GAAIvxB,KAAKuwC,kBACP,OAAOld,GAAkBnyB,KAAKlB,KAAMszB,EAAWlL,EAAQE,GAYzD,IATKtoB,KAAK0zB,eACR1zB,KAAK0zB,aAAe,GACpB1zB,KAAK2zB,iBAAmB,GACxB3zB,KAAK4zB,kBAAoB,IAMtBptB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAevB,GAbAwnB,EAAM7F,EAAU,CAAC,IAAM3hB,IAEnB8hB,IAAWtoB,KAAK2zB,iBAAiBntB,KACnCxG,KAAK2zB,iBAAiBntB,GAAK,IAAIqH,OAAO,IAAM7N,KAAK2yB,OAAO3E,EAAK,IAAIvjB,QAAQ,IAAK,IAAM,IAAK,KACzFzK,KAAK4zB,kBAAkBptB,GAAK,IAAIqH,OAAO,IAAM7N,KAAK0yB,YAAY1E,EAAK,IAAIvjB,QAAQ,IAAK,IAAM,IAAK,MAG5F6d,GAAWtoB,KAAK0zB,aAAaltB,KAChC+qB,EAAQ,IAAMvxB,KAAK2yB,OAAO3E,EAAK,IAAM,KAAOhuB,KAAK0yB,YAAY1E,EAAK,IAClEhuB,KAAK0zB,aAAaltB,GAAK,IAAIqH,OAAO0jB,EAAM9mB,QAAQ,IAAK,IAAK,MAIxD6d,GAAqB,SAAXF,GAAqBpoB,KAAK2zB,iBAAiBntB,GAAG2B,KAAKmrB,GAC/D,OAAO9sB,EACF,GAAI8hB,GAAqB,QAAXF,GAAoBpoB,KAAK4zB,kBAAkBptB,GAAG2B,KAAKmrB,GACtE,OAAO9sB,EACF,IAAK8hB,GAAUtoB,KAAK0zB,aAAaltB,GAAG2B,KAAKmrB,GAC9C,OAAO9sB,IA45Gb0oC,GAAQrc,YAz1GR,SAAqBpB,GACnB,OAAIzxB,KAAKuwC,mBACFjpB,EAAWtnB,KAAM,iBACpBi0B,GAAmB/yB,KAAKlB,MAGtByxB,EACKzxB,KAAKy0B,mBAELz0B,KAAKu0B,eAGTjN,EAAWtnB,KAAM,kBACpBA,KAAKu0B,aAAenB,IAGfpzB,KAAKy0B,oBAAsBhD,EAAWzxB,KAAKy0B,mBAAqBz0B,KAAKu0B,eA00GhF2a,GAAQtc,iBA92GR,SAA0BnB,GACxB,OAAIzxB,KAAKuwC,mBACFjpB,EAAWtnB,KAAM,iBACpBi0B,GAAmB/yB,KAAKlB,MAGtByxB,EACKzxB,KAAK00B,wBAEL10B,KAAKw0B,oBAGTlN,EAAWtnB,KAAM,uBACpBA,KAAKw0B,kBAAoBrB,IAGpBnzB,KAAK00B,yBAA2BjD,EAAWzxB,KAAK00B,wBAA0B10B,KAAKw0B,oBA+1G1F0a,GAAQlZ,KAtnGR,SAAoBhI,GAClB,OAAOqI,GAAWrI,EAAKhuB,KAAK4gC,MAAMjL,IAAK31B,KAAK4gC,MAAMhL,KAAKI,MAsnGzDkZ,GAAQsB,eAxmGR,WACE,OAAOxwC,KAAK4gC,MAAMhL,KAwmGpBsZ,GAAQuB,eA7mGR,WACE,OAAOzwC,KAAK4gC,MAAMjL,KA6mGpBuZ,GAAQpY,SArgGR,SAAwBpO,EAAGN,GACzB,IAAI0O,EAAW9yB,EAAQhE,KAAK0wC,WAAa1wC,KAAK0wC,UAAY1wC,KAAK0wC,UAAUhoB,IAAW,IAANA,GAAc1oB,KAAK0wC,UAAUL,SAASloC,KAAKigB,GAAU,SAAW,cAC9I,OAAa,IAANM,EAAagO,GAAcI,EAAU92B,KAAK4gC,MAAMjL,KAAOjN,EAAIoO,EAASpO,EAAEoP,OAAShB,GAogGxFoY,GAAQtY,YA7/FR,SAA2BlO,GACzB,OAAa,IAANA,EAAagO,GAAc12B,KAAK2wC,aAAc3wC,KAAK4gC,MAAMjL,KAAOjN,EAAI1oB,KAAK2wC,aAAajoB,EAAEoP,OAAS93B,KAAK2wC,cA6/F/GzB,GAAQrY,cAlgGR,SAA6BnO,GAC3B,OAAa,IAANA,EAAagO,GAAc12B,KAAK4wC,eAAgB5wC,KAAK4gC,MAAMjL,KAAOjN,EAAI1oB,KAAK4wC,eAAeloB,EAAEoP,OAAS93B,KAAK4wC,gBAkgGnH1B,GAAQhY,cA36FR,SAA6BQ,EAAatP,EAAQE,GAChD,IAAI9hB,EAAGwnB,EAAKuD,EAEZ,GAAIvxB,KAAK6wC,oBACP,OAAOpZ,GAAoBv2B,KAAKlB,KAAM03B,EAAatP,EAAQE,GAU7D,IAPKtoB,KAAK23B,iBACR33B,KAAK23B,eAAiB,GACtB33B,KAAK63B,kBAAoB,GACzB73B,KAAK43B,oBAAsB,GAC3B53B,KAAK8wC,mBAAqB,IAGvBtqC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAgBtB,GAdAwnB,EAAM7F,EAAU,CAAC,IAAM,IAAI2P,IAAItxB,GAE3B8hB,IAAWtoB,KAAK8wC,mBAAmBtqC,KACrCxG,KAAK8wC,mBAAmBtqC,GAAK,IAAIqH,OAAO,IAAM7N,KAAK82B,SAAS9I,EAAK,IAAIvjB,QAAQ,IAAK,QAAU,IAAK,KACjGzK,KAAK43B,oBAAoBpxB,GAAK,IAAIqH,OAAO,IAAM7N,KAAK62B,cAAc7I,EAAK,IAAIvjB,QAAQ,IAAK,QAAU,IAAK,KACvGzK,KAAK63B,kBAAkBrxB,GAAK,IAAIqH,OAAO,IAAM7N,KAAK42B,YAAY5I,EAAK,IAAIvjB,QAAQ,IAAK,QAAU,IAAK,MAGhGzK,KAAK23B,eAAenxB,KACvB+qB,EAAQ,IAAMvxB,KAAK82B,SAAS9I,EAAK,IAAM,KAAOhuB,KAAK62B,cAAc7I,EAAK,IAAM,KAAOhuB,KAAK42B,YAAY5I,EAAK,IACzGhuB,KAAK23B,eAAenxB,GAAK,IAAIqH,OAAO0jB,EAAM9mB,QAAQ,IAAK,IAAK,MAI1D6d,GAAqB,SAAXF,GAAqBpoB,KAAK8wC,mBAAmBtqC,GAAG2B,KAAKuvB,GACjE,OAAOlxB,EACF,GAAI8hB,GAAqB,QAAXF,GAAoBpoB,KAAK43B,oBAAoBpxB,GAAG2B,KAAKuvB,GACxE,OAAOlxB,EACF,GAAI8hB,GAAqB,OAAXF,GAAmBpoB,KAAK63B,kBAAkBrxB,GAAG2B,KAAKuvB,GACrE,OAAOlxB,EACF,IAAK8hB,GAAUtoB,KAAK23B,eAAenxB,GAAG2B,KAAKuvB,GAChD,OAAOlxB,IAu4Fb0oC,GAAQjY,cAz1FR,SAAuBxF,GACrB,OAAIzxB,KAAK6wC,qBACFvpB,EAAWtnB,KAAM,mBACpB+3B,GAAqB72B,KAAKlB,MAGxByxB,EACKzxB,KAAKu4B,qBAELv4B,KAAKo4B,iBAGT9Q,EAAWtnB,KAAM,oBACpBA,KAAKo4B,eAAiBd,IAGjBt3B,KAAKu4B,sBAAwB9G,EAAWzxB,KAAKu4B,qBAAuBv4B,KAAKo4B,iBA00FpF8W,GAAQlY,mBAt0FR,SAA4BvF,GAC1B,OAAIzxB,KAAK6wC,qBACFvpB,EAAWtnB,KAAM,mBACpB+3B,GAAqB72B,KAAKlB,MAGxByxB,EACKzxB,KAAKw4B,0BAELx4B,KAAKq4B,sBAGT/Q,EAAWtnB,KAAM,yBACpBA,KAAKq4B,oBAAsBd,IAGtBv3B,KAAKw4B,2BAA6B/G,EAAWzxB,KAAKw4B,0BAA4Bx4B,KAAKq4B,sBAuzF9F6W,GAAQnY,iBAnzFR,SAA0BtF,GACxB,OAAIzxB,KAAK6wC,qBACFvpB,EAAWtnB,KAAM,mBACpB+3B,GAAqB72B,KAAKlB,MAGxByxB,EACKzxB,KAAKy4B,wBAELz4B,KAAKs4B,oBAGThR,EAAWtnB,KAAM,uBACpBA,KAAKs4B,kBAAoBd,IAGpBx3B,KAAKy4B,yBAA2BhH,EAAWzxB,KAAKy4B,wBAA0Bz4B,KAAKs4B,oBAoyF1F4W,GAAQ/V,KAvpFR,SAAoB9R,GAGlB,MAAgD,OAAxCA,EAAQ,IAAIuH,cAAcmiB,OAAO,IAqpF3C7B,GAAQzlB,SA3oFR,SAAwBkP,EAAOE,EAASmY,GACtC,OAAIrY,EAAQ,GACHqY,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAsuF5BjV,GAAmB,KAAM,CACvBwM,KAAM,CAAC,CACL2E,MAAO,aACPC,MAAO,IACPtkC,OAAQ,EACRpB,KAAM,cACN+gC,OAAQ,KACRtM,KAAM,MACL,CACDgR,MAAO,aACPC,OAAO,IACPtkC,OAAQ,EACRpB,KAAM,gBACN+gC,OAAQ,KACRtM,KAAM,OAER1B,uBAAwB,uBACxB7M,QAAS,SAAiBhjB,GACxB,IAAI6c,EAAI7c,EAAS,GAEjB,OAAOA,GADmC,IAA7BglB,EAAMhlB,EAAS,IAAM,IAAY,KAAa,IAAN6c,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,SAK5GJ,EAAMugB,KAAOzrB,EAAU,wDAAyD6f,IAChF3U,EAAM6pB,SAAW/0B,EAAU,gEAAiE8f,IAC5F,IAAIkV,GAAUpkB,KAAKC,IAgBnB,SAASokB,GAAclvB,EAAUoF,EAAO5mB,EAAO0lC,GAC7C,IAAI56B,EAAQk6B,GAAepe,EAAO5mB,GAIlC,OAHAwhB,EAAS6hB,eAAiBqC,EAAY56B,EAAMu4B,cAC5C7hB,EAAS8hB,OAASoC,EAAY56B,EAAMw4B,MACpC9hB,EAAS+hB,SAAWmC,EAAY56B,EAAMy4B,QAC/B/hB,EAASiiB,UAalB,SAASkN,GAAQzmC,GACf,OAAIA,EAAS,EACJmiB,KAAK4C,MAAM/kB,GAEXmiB,KAAK2C,KAAK9kB,GA6CrB,SAAS0mC,GAAa5N,GAGpB,OAAc,KAAPA,EAAc,OAGvB,SAAS6N,GAAa3e,GAEpB,OAAgB,OAATA,EAAkB,KAkE3B,SAAS4e,GAAOC,GACd,OAAO,WACL,OAAOxxC,KAAKyxC,GAAGD,IAInB,IAAIE,GAAiBH,GAAO,MACxBI,GAAYJ,GAAO,KACnBK,GAAYL,GAAO,KACnBM,GAAUN,GAAO,KACjBO,GAASP,GAAO,KAChBQ,GAAUR,GAAO,KACjBS,GAAWT,GAAO,KAClBU,GAAaV,GAAO,KACpBW,GAAUX,GAAO,KAWrB,SAASY,GAAW1qC,GAClB,OAAO,WACL,OAAOzH,KAAK4pB,UAAY5pB,KAAKikC,MAAMx8B,GAAQgjB,KAI/C,IAAIiZ,GAAeyO,GAAW,gBAC1BnZ,GAAUmZ,GAAW,WACrBtZ,GAAUsZ,GAAW,WACrBxZ,GAAQwZ,GAAW,SACnB1O,GAAO0O,GAAW,QAClBxf,GAASwf,GAAW,UACpB/O,GAAQ+O,GAAW,SAMnB9N,GAAQvX,KAAKuX,MACb+N,GAAa,CACfxX,GAAI,GAEJ3I,EAAG,GAEHvJ,EAAG,GAEHuM,EAAG,GAEHte,EAAG,GAEHqkB,EAAG,KAEH9F,EAAG,IAIL,SAASmd,GAAkB9nC,EAAQI,EAAQqgC,EAAeiF,EAAU5nB,GAClE,OAAOA,EAAOoS,aAAa9vB,GAAU,IAAKqgC,EAAezgC,EAAQ0lC,GA+FnE,IAAIqC,GAAQxlB,KAAKC,IAEjB,SAASyX,GAAKhS,GACZ,OAAQA,EAAI,IAAMA,EAAI,KAAOA,EAG/B,SAAS+f,KAQP,IAAKvyC,KAAK4pB,UACR,OAAO5pB,KAAK6tB,aAAaM,cAG3B,IAGI0K,EACAF,EACAyK,EACAnR,EAEAugB,EACAC,EACAC,EACAC,EAXA3Z,EAAUsZ,GAAMtyC,KAAK8jC,eAAiB,IACtCL,EAAO6O,GAAMtyC,KAAK+jC,OAClBpR,EAAS2f,GAAMtyC,KAAKgkC,SAKpB4O,EAAQ5yC,KAAK2xC,YAMjB,OAAKiB,GAOL/Z,EAAUrJ,EAASwJ,EAAU,IAC7BL,EAAQnJ,EAASqJ,EAAU,IAC3BG,GAAW,GACXH,GAAW,GAEXuK,EAAQ5T,EAASmD,EAAS,IAC1BA,GAAU,GAEVV,EAAI+G,EAAUA,EAAQ6Z,QAAQ,GAAGpoC,QAAQ,SAAU,IAAM,GACzD+nC,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAASjO,GAAKxkC,KAAKgkC,WAAaQ,GAAKoO,GAAS,IAAM,GACpDF,EAAWlO,GAAKxkC,KAAK+jC,SAAWS,GAAKoO,GAAS,IAAM,GACpDD,EAAUnO,GAAKxkC,KAAK8jC,iBAAmBU,GAAKoO,GAAS,IAAM,GACpDJ,EAAY,KAAOpP,EAAQqP,EAASrP,EAAQ,IAAM,KAAOzQ,EAAS8f,EAAS9f,EAAS,IAAM,KAAO8Q,EAAOiP,EAAWjP,EAAO,IAAM,KAAO9K,GAASE,GAAWG,EAAU,IAAM,KAAOL,EAAQga,EAAUha,EAAQ,IAAM,KAAOE,EAAU8Z,EAAU9Z,EAAU,IAAM,KAAOG,EAAU2Z,EAAU1gB,EAAI,IAAM,KAjBhS,MAoBX,IAAI6gB,GAAU3P,GAAStiC,UAkGvB,OAjGAiyC,GAAQlpB,QAvnER,WACE,OAAO5pB,KAAK6pB,UAunEdipB,GAAQ/lB,IAhXR,WACE,IAAIzrB,EAAOtB,KAAKikC,MAUhB,OATAjkC,KAAK8jC,cAAgBoN,GAAQlxC,KAAK8jC,eAClC9jC,KAAK+jC,MAAQmN,GAAQlxC,KAAK+jC,OAC1B/jC,KAAKgkC,QAAUkN,GAAQlxC,KAAKgkC,SAC5B1iC,EAAKoiC,aAAewN,GAAQ5vC,EAAKoiC,cACjCpiC,EAAK03B,QAAUkY,GAAQ5vC,EAAK03B,SAC5B13B,EAAKu3B,QAAUqY,GAAQ5vC,EAAKu3B,SAC5Bv3B,EAAKq3B,MAAQuY,GAAQ5vC,EAAKq3B,OAC1Br3B,EAAKqxB,OAASue,GAAQ5vC,EAAKqxB,QAC3BrxB,EAAK8hC,MAAQ8N,GAAQ5vC,EAAK8hC,OACnBpjC,MAsWT8yC,GAAQ5wC,IA1VR,SAAemlB,EAAO5mB,GACpB,OAAO0wC,GAAcnxC,KAAMqnB,EAAO5mB,EAAO,IA0V3CqyC,GAAQrM,SAtVR,SAAoBpf,EAAO5mB,GACzB,OAAO0wC,GAAcnxC,KAAMqnB,EAAO5mB,GAAQ,IAsV5CqyC,GAAQrB,GAvRR,SAAY3iB,GACV,IAAK9uB,KAAK4pB,UACR,OAAOa,IAGT,IAAIgZ,EACA9Q,EACA+Q,EAAe1jC,KAAK8jC,cAGxB,GAAc,WAFdhV,EAAQD,EAAeC,KAEY,YAAVA,GAAiC,SAAVA,EAI9C,OAHA2U,EAAOzjC,KAAK+jC,MAAQL,EAAe,MACnC/Q,EAAS3yB,KAAKgkC,QAAUqN,GAAa5N,GAE7B3U,GACN,IAAK,QACH,OAAO6D,EAET,IAAK,UACH,OAAOA,EAAS,EAElB,IAAK,OACH,OAAOA,EAAS,QAMpB,OAFA8Q,EAAOzjC,KAAK+jC,MAAQjX,KAAKuX,MAAMiN,GAAatxC,KAAKgkC,UAEzClV,GACN,IAAK,OACH,OAAO2U,EAAO,EAAIC,EAAe,OAEnC,IAAK,MACH,OAAOD,EAAOC,EAAe,MAE/B,IAAK,OACH,OAAc,GAAPD,EAAYC,EAAe,KAEpC,IAAK,SACH,OAAc,KAAPD,EAAcC,EAAe,IAEtC,IAAK,SACH,OAAc,MAAPD,EAAeC,EAAe,IAGvC,IAAK,cACH,OAAO5W,KAAK4C,MAAa,MAAP+T,GAAgBC,EAEpC,QACE,MAAM,IAAIx+B,MAAM,gBAAkB4pB,KAuO1CgkB,GAAQpB,eAAiBA,GACzBoB,GAAQnB,UAAYA,GACpBmB,GAAQlB,UAAYA,GACpBkB,GAAQjB,QAAUA,GAClBiB,GAAQhB,OAASA,GACjBgB,GAAQf,QAAUA,GAClBe,GAAQd,SAAWA,GACnBc,GAAQb,WAAaA,GACrBa,GAAQZ,QAAUA,GAClBY,GAAQxnC,QA1OR,WACE,OAAKtL,KAAK4pB,UAIH5pB,KAAK8jC,cAA6B,MAAb9jC,KAAK+jC,MAAgB/jC,KAAKgkC,QAAU,GAAK,OAAoC,QAA3BrU,EAAM3vB,KAAKgkC,QAAU,IAH1FvZ,KAyOXqoB,GAAQ5O,QAtVR,WACE,IAIIlL,EACAH,EACAF,EACAyK,EACA2P,EARArP,EAAe1jC,KAAK8jC,cACpBL,EAAOzjC,KAAK+jC,MACZpR,EAAS3yB,KAAKgkC,QACd1iC,EAAOtB,KAAKikC,MAkChB,OA1BMP,GAAgB,GAAKD,GAAQ,GAAK9Q,GAAU,GAAK+Q,GAAgB,GAAKD,GAAQ,GAAK9Q,GAAU,IACjG+Q,GAAuD,MAAvC0N,GAAQE,GAAa3e,GAAU8Q,GAC/CA,EAAO,EACP9Q,EAAS,GAKXrxB,EAAKoiC,aAAeA,EAAe,IACnC1K,EAAUxJ,EAASkU,EAAe,KAClCpiC,EAAK03B,QAAUA,EAAU,GACzBH,EAAUrJ,EAASwJ,EAAU,IAC7B13B,EAAKu3B,QAAUA,EAAU,GACzBF,EAAQnJ,EAASqJ,EAAU,IAC3Bv3B,EAAKq3B,MAAQA,EAAQ,GACrB8K,GAAQjU,EAASmJ,EAAQ,IAEzBoa,EAAiBvjB,EAAS6hB,GAAa5N,IACvC9Q,GAAUogB,EACVtP,GAAQ2N,GAAQE,GAAayB,IAE7B3P,EAAQ5T,EAASmD,EAAS,IAC1BA,GAAU,GACVrxB,EAAKmiC,KAAOA,EACZniC,EAAKqxB,OAASA,EACdrxB,EAAK8hC,MAAQA,EACNpjC,MAiTT8yC,GAAQ7N,MApNR,WACE,OAAOQ,GAAezlC,OAoNxB8yC,GAAQ3vC,IAjNR,SAAe2rB,GAEb,OADAA,EAAQD,EAAeC,GAChB9uB,KAAK4pB,UAAY5pB,KAAK8uB,EAAQ,OAASrE,KAgNhDqoB,GAAQpP,aAAeA,GACvBoP,GAAQ9Z,QAAUA,GAClB8Z,GAAQja,QAAUA,GAClBia,GAAQna,MAAQA,GAChBma,GAAQrP,KAAOA,GACfqP,GAAQvP,MApMR,WACE,OAAO/T,EAASxvB,KAAKyjC,OAAS,IAoMhCqP,GAAQngB,OAASA,GACjBmgB,GAAQ1P,MAAQA,GAChB0P,GAAQ7H,SAtHR,SAAkB+H,EAAeC,GAC/B,IAAKjzC,KAAK4pB,UACR,OAAO5pB,KAAK6tB,aAAaM,cAG3B,IAEI9F,EACA4F,EAHAilB,GAAa,EACbC,EAAKf,GA4BT,MAxB6B,iBAAlBY,IACTC,EAAgBD,EAChBA,GAAgB,GAGW,kBAAlBA,IACTE,EAAaF,GAGc,iBAAlBC,IACTE,EAAKvyC,OAAO4P,OAAO,GAAI4hC,GAAYa,GAEZ,MAAnBA,EAAchhB,GAAiC,MAApBghB,EAAcrY,KAC3CuY,EAAGvY,GAAKqY,EAAchhB,EAAI,IAI9B5J,EAASroB,KAAK6tB,aACdI,EAnFF,SAAwBmlB,EAAgBpI,EAAeoH,EAAY/pB,GACjE,IAAIpG,EAAWwjB,GAAe2N,GAAgBrmB,MAC1CiM,EAAUqL,GAAMpiB,EAASwvB,GAAG,MAC5B5Y,EAAUwL,GAAMpiB,EAASwvB,GAAG,MAC5B9Y,EAAQ0L,GAAMpiB,EAASwvB,GAAG,MAC1BhO,EAAOY,GAAMpiB,EAASwvB,GAAG,MACzB9e,EAAS0R,GAAMpiB,EAASwvB,GAAG,MAC3BlO,EAAQc,GAAMpiB,EAASwvB,GAAG,MAC1BrO,EAAQiB,GAAMpiB,EAASwvB,GAAG,MAC1BlqB,EAAIyR,GAAWoZ,EAAWxX,IAAM,CAAC,IAAK5B,IAAYA,EAAUoZ,EAAWngB,GAAK,CAAC,KAAM+G,IAAYH,GAAW,GAAK,CAAC,MAAQA,EAAUuZ,EAAW1pB,GAAK,CAAC,KAAMmQ,IAAYF,GAAS,GAAK,CAAC,MAAQA,EAAQyZ,EAAWnd,GAAK,CAAC,KAAM0D,IAAU8K,GAAQ,GAAK,CAAC,MAAQA,EAAO2O,EAAWz7B,GAAK,CAAC,KAAM8sB,GAU7R,OARoB,MAAhB2O,EAAWpX,IACbzT,EAAIA,GAAKgc,GAAS,GAAK,CAAC,MAAQA,EAAQ6O,EAAWpX,GAAK,CAAC,KAAMuI,KAGjEhc,EAAIA,GAAKoL,GAAU,GAAK,CAAC,MAAQA,EAASyf,EAAWld,GAAK,CAAC,KAAMvC,IAAWyQ,GAAS,GAAK,CAAC,MAAQ,CAAC,KAAMA,IACxG,GAAK4H,EACPzjB,EAAE,IAAM6rB,EAAiB,EACzB7rB,EAAE,GAAKc,EACAgqB,GAAkBpvC,MAAM,KAAMskB,GAgE5B8rB,CAAerzC,MAAOkzC,EAAYC,EAAI9qB,GAE3C6qB,IACFjlB,EAAS5F,EAAO8nB,YAAYnwC,KAAMiuB,IAG7B5F,EAAO0iB,WAAW9c,IAqF3B6kB,GAAQxG,YAAciG,GACtBO,GAAQvwC,SAAWgwC,GACnBO,GAAQhG,OAASyF,GACjBO,GAAQzqB,OAASA,GACjByqB,GAAQjlB,WAAaA,GACrBilB,GAAQQ,YAAcp3B,EAAU,sFAAuFq2B,IACvHO,GAAQnL,KAAOA,GAEfna,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAE1B8D,GAAc,IAAKJ,IACnBI,GAAc,IAzrIG,wBA0rIjBa,GAAc,KAAK,SAAU9K,EAAOhhB,EAAOmQ,GACzCA,EAAO0T,GAAK,IAAI1W,KAAyB,IAApBowB,WAAWvc,OAElC8K,GAAc,KAAK,SAAU9K,EAAOhhB,EAAOmQ,GACzCA,EAAO0T,GAAK,IAAI1W,KAAKmc,EAAMtI,OAG7BD,EAAMvgB,QAAU,SAt6JdqgB,EAu6JcyZ,GAChBvZ,EAAMY,GAAKiiB,GACX7iB,EAAM2M,IAntEN,WACE,IAAI/wB,EAAO,GAAGkpB,MAAMhrB,KAAKD,UAAW,GACpC,OAAO+hC,GAAO,WAAYhgC,IAktE5BokB,EAAM8F,IA/sEN,WACE,IAAIlqB,EAAO,GAAGkpB,MAAMhrB,KAAKD,UAAW,GACpC,OAAO+hC,GAAO,UAAWhgC,IA8sE3BokB,EAAMyY,IA3sEI,WACR,OAAOrsB,KAAKqsB,IAAMrsB,KAAKqsB,OAAS,IAAIrsB,MA2sEtC4T,EAAMoB,IAAML,EACZf,EAAM2lB,KA5kBN,SAAoB1lB,GAClB,OAAOsZ,GAAoB,IAARtZ,IA4kBrBD,EAAMuL,OAtdN,SAAoBvK,EAAQnmB,GAC1B,OAAOotC,GAAejnB,EAAQnmB,EAAO,WAsdvCmlB,EAAMU,OAASA,EACfV,EAAMiB,OAAS0T,GACf3U,EAAMof,QAAUhc,EAChBpD,EAAMnF,SAAWwjB,GACjBre,EAAMwE,SAAWA,EACjBxE,EAAM0P,SApdN,SAAsB0Y,EAAcpnB,EAAQnmB,GAC1C,OAAOstC,GAAiBC,EAAcpnB,EAAQnmB,EAAO,aAodvDmlB,EAAM8mB,UAhlBN,WACE,OAAOvN,GAAY19B,MAAM,KAAMhC,WAAWitC,aAglB5C9mB,EAAMyG,WAAamO,GACnB5U,EAAM+c,WAAaA,GACnB/c,EAAMsL,YA5dN,SAAyBtK,EAAQnmB,GAC/B,OAAOotC,GAAejnB,EAAQnmB,EAAO,gBA4dvCmlB,EAAMwP,YAjdN,SAAyB4Y,EAAcpnB,EAAQnmB,GAC7C,OAAOstC,GAAiBC,EAAcpnB,EAAQnmB,EAAO,gBAidvDmlB,EAAM6U,aAAeA,GACrB7U,EAAMmsB,aArgGN,SAAsB9rC,EAAM+O,GAC1B,GAAc,MAAVA,EAAgB,CAClB,IAAI6R,EACAmrB,EACAjnB,EAAemN,GAEE,MAAjB2B,GAAQ5zB,IAA+C,MAA9B4zB,GAAQ5zB,GAAM20B,aAEzCf,GAAQ5zB,GAAM7F,IAAI0qB,EAAa+O,GAAQ5zB,GAAM00B,QAAS3lB,KAKrC,OAFjBg9B,EAAY5X,GAAWn0B,MAGrB8kB,EAAeinB,EAAUrX,SAG3B3lB,EAAS8V,EAAaC,EAAc/V,GAEnB,MAAbg9B,IAIFh9B,EAAO0lB,KAAOz0B,IAGhB4gB,EAAS,IAAIoE,EAAOjW,IACb4lB,aAAef,GAAQ5zB,GAC9B4zB,GAAQ5zB,GAAQ4gB,GAIlB0T,GAAmBt0B,QAGE,MAAjB4zB,GAAQ5zB,KACwB,MAA9B4zB,GAAQ5zB,GAAM20B,cAChBf,GAAQ5zB,GAAQ4zB,GAAQ5zB,GAAM20B,aAE1B30B,IAASs0B,MACXA,GAAmBt0B,IAEK,MAAjB4zB,GAAQ5zB,WACV4zB,GAAQ5zB,IAKrB,OAAO4zB,GAAQ5zB,IAs9FjB2f,EAAMiU,QAz7FN,WACE,OAAO1xB,EAAK0xB,KAy7FdjU,EAAMyP,cAzdN,SAA2B2Y,EAAcpnB,EAAQnmB,GAC/C,OAAOstC,GAAiBC,EAAcpnB,EAAQnmB,EAAO,kBAydvDmlB,EAAMyH,eAAiBA,EACvBzH,EAAMqsB,qBApMN,SAAoCC,GAClC,YAAyBnvC,IAArBmvC,EACKrP,GAGuB,mBAArBqP,IACTrP,GAAQqP,GACD,IA8LXtsB,EAAMusB,sBAvLN,SAAqCC,EAAWC,GAC9C,YAA8BtvC,IAA1B6tC,GAAWwB,UAIDrvC,IAAVsvC,EACKzB,GAAWwB,IAGpBxB,GAAWwB,GAAaC,EAEN,MAAdD,IACFxB,GAAWxX,GAAKiZ,EAAQ,IAGnB,KAyKTzsB,EAAMmjB,eAlsDN,SAA2BuJ,EAAUjU,GACnC,IAAImF,EAAO8O,EAAS9O,KAAKnF,EAAK,QAAQ,GACtC,OAAOmF,GAAQ,EAAI,WAAaA,GAAQ,EAAI,WAAaA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,WAAa,YAisDxJ5d,EAAMvmB,UAAYopC,GAElB7iB,EAAM2sB,UAAY,CAChBC,eAAgB,mBAEhBC,uBAAwB,sBAExBC,kBAAmB,0BAEnBC,KAAM,aAENC,KAAM,QAENC,aAAc,WAEdC,QAAS,eAETC,KAAM,aAENC,MAAO,WAGFptB,EAr+JyEqtB,K,4CCIlF50C,EAAOC,QAJP,SAAkBoD,EAAOnD,GACvB,OAAOmD,EAAMf,IAAIpC,K,qBCTnB,IAAIiL,EAAK,EAAQ,QAoBjBnL,EAAOC,QAVP,SAAsBuG,EAAOtG,GAE3B,IADA,IAAIyB,EAAS6E,EAAM7E,OACZA,KACL,GAAIwJ,EAAG3E,EAAM7E,GAAQ,GAAIzB,GACvB,OAAOyB,EAGX,OAAQ,I,qBCjBV,IAII+M,EAJY,EAAQ,OAIdnC,CAHC,EAAQ,QAGO,OAE1BvM,EAAOC,QAAUyO,G,mBCcjB1O,EAAOC,QAJP,SAAkBW,GAChB,OAAOA,I,qBCjBT,IAAI6H,EAAS,EAAQ,QACjBosC,EAAW,EAAQ,QACnB1wC,EAAU,EAAQ,QAClB+D,EAAW,EAAQ,QAMnBqD,EAAc9C,EAASA,EAAOzH,eAAY0D,EAC1CowC,EAAiBvpC,EAAcA,EAAY7I,cAAWgC,EA0B1D1E,EAAOC,QAhBP,SAAS2d,EAAahd,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIuD,EAAQvD,GAEV,OAAOi0C,EAASj0C,EAAOgd,GAAgB,GAEzC,GAAI1V,EAAStH,GACX,OAAOk0C,EAAiBA,EAAezzC,KAAKT,GAAS,GAEvD,IAAI2C,EAAU3C,EAAQ,GACtB,MAAkB,KAAV2C,GAAkB,EAAI3C,IA3BjB,IA2BwC,KAAO2C","file":"component---src-pages-performance-js-528a44fbfd1bc3044539.js","sourcesContent":["var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n  throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n  throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n  try {\n    if (typeof setTimeout === 'function') {\n      cachedSetTimeout = setTimeout;\n    } else {\n      cachedSetTimeout = defaultSetTimout;\n    }\n  } catch (e) {\n    cachedSetTimeout = defaultSetTimout;\n  }\n\n  try {\n    if (typeof clearTimeout === 'function') {\n      cachedClearTimeout = clearTimeout;\n    } else {\n      cachedClearTimeout = defaultClearTimeout;\n    }\n  } catch (e) {\n    cachedClearTimeout = defaultClearTimeout;\n  }\n})();\n\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    //normal enviroments in sane situations\n    return setTimeout(fun, 0);\n  } // if setTimeout wasn't available but was latter defined\n\n\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e) {\n      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\n\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    //normal enviroments in sane situations\n    return clearTimeout(marker);\n  } // if clearTimeout wasn't available but was latter defined\n\n\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n      return cachedClearTimeout.call(null, marker);\n    } catch (e) {\n      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n      // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n\n  draining = false;\n\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n\n  if (queue.length) {\n    drainQueue();\n  }\n}\n\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n\n    queueIndex = -1;\n    len = queue.length;\n  }\n\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n  var args = new Array(arguments.length - 1);\n\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n\n  queue.push(new Item(fun, args));\n\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\n\nItem.prototype.run = function () {\n  this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n  return [];\n};\n\nprocess.binding = function (name) {\n  throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n  return '/';\n};\n\nprocess.chdir = function (dir) {\n  throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n  return 0;\n};","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n *   { 'dir': 'left', 'code': 97 },\n *   { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n *   return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n  baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Chart\", {\n  enumerable: true,\n  get: function get() {\n    return _chart[\"default\"];\n  }\n});\nexports.defaults = exports.Scatter = exports.Bubble = exports.Polar = exports.Radar = exports.HorizontalBar = exports.Bar = exports.Line = exports.Pie = exports.Doughnut = exports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _chart = _interopRequireDefault(require(\"chart.js\"));\n\nvar _isEqual = _interopRequireDefault(require(\"lodash/isEqual\"));\n\nvar _keyBy = _interopRequireDefault(require(\"lodash/keyBy\"));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nvar NODE_ENV = typeof process !== 'undefined' && process.env && process.env.NODE_ENV;\n\nvar ChartComponent = /*#__PURE__*/function (_React$Component) {\n  _inherits(ChartComponent, _React$Component);\n\n  var _super = _createSuper(ChartComponent);\n\n  function ChartComponent() {\n    var _this;\n\n    _classCallCheck(this, ChartComponent);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleOnClick\", function (event) {\n      var instance = _this.chartInstance;\n      var _this$props = _this.props,\n          getDatasetAtEvent = _this$props.getDatasetAtEvent,\n          getElementAtEvent = _this$props.getElementAtEvent,\n          getElementsAtEvent = _this$props.getElementsAtEvent,\n          onElementsClick = _this$props.onElementsClick;\n      getDatasetAtEvent && getDatasetAtEvent(instance.getDatasetAtEvent(event), event);\n      getElementAtEvent && getElementAtEvent(instance.getElementAtEvent(event), event);\n      getElementsAtEvent && getElementsAtEvent(instance.getElementsAtEvent(event), event);\n      onElementsClick && onElementsClick(instance.getElementsAtEvent(event), event); // Backward compatibility\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (element) {\n      _this.element = element;\n    });\n\n    _this.chartInstance = undefined;\n    return _this;\n  }\n\n  _createClass(ChartComponent, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.renderChart();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (this.props.redraw) {\n        this.destroyChart();\n        this.renderChart();\n        return;\n      }\n\n      this.updateChart();\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var _this$props2 = this.props,\n          redraw = _this$props2.redraw,\n          type = _this$props2.type,\n          options = _this$props2.options,\n          plugins = _this$props2.plugins,\n          legend = _this$props2.legend,\n          height = _this$props2.height,\n          width = _this$props2.width;\n\n      if (nextProps.redraw === true) {\n        return true;\n      }\n\n      if (height !== nextProps.height || width !== nextProps.width) {\n        return true;\n      }\n\n      if (type !== nextProps.type) {\n        return true;\n      }\n\n      if (!(0, _isEqual[\"default\"])(legend, nextProps.legend)) {\n        return true;\n      }\n\n      if (!(0, _isEqual[\"default\"])(options, nextProps.options)) {\n        return true;\n      }\n\n      var nextData = this.transformDataProp(nextProps);\n\n      if (!(0, _isEqual[\"default\"])(this.shadowDataProp, nextData)) {\n        return true;\n      }\n\n      return !(0, _isEqual[\"default\"])(plugins, nextProps.plugins);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.destroyChart();\n    }\n  }, {\n    key: \"transformDataProp\",\n    value: function transformDataProp(props) {\n      var data = props.data;\n\n      if (typeof data == 'function') {\n        var node = this.element;\n        return data(node);\n      } else {\n        return data;\n      }\n    } // Chart.js directly mutates the data.dataset objects by adding _meta proprerty\n    // this makes impossible to compare the current and next data changes\n    // therefore we memoize the data prop while sending a fake to Chart.js for mutation.\n    // see https://github.com/chartjs/Chart.js/blob/master/src/core/core.controller.js#L615-L617\n\n  }, {\n    key: \"memoizeDataProps\",\n    value: function memoizeDataProps() {\n      if (!this.props.data) {\n        return;\n      }\n\n      var data = this.transformDataProp(this.props);\n      this.shadowDataProp = _objectSpread(_objectSpread({}, data), {}, {\n        datasets: data.datasets && data.datasets.map(function (set) {\n          return _objectSpread({}, set);\n        })\n      });\n      this.saveCurrentDatasets(); // to remove the dataset metadata from this chart when the chart is destroyed\n\n      return data;\n    }\n  }, {\n    key: \"checkDatasets\",\n    value: function checkDatasets(datasets) {\n      var isDev = NODE_ENV !== 'production' && NODE_ENV !== 'prod';\n      var usingCustomKeyProvider = this.props.datasetKeyProvider !== ChartComponent.getLabelAsKey;\n      var multipleDatasets = datasets.length > 1;\n\n      if (isDev && multipleDatasets && !usingCustomKeyProvider) {\n        var shouldWarn = false;\n        datasets.forEach(function (dataset) {\n          if (!dataset.label) {\n            shouldWarn = true;\n          }\n        });\n\n        if (shouldWarn) {\n          console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the \"label\" property on each dataset is used. Alternatively, you may provide a \"datasetKeyProvider\" as a prop that returns a unique key.');\n        }\n      }\n    }\n  }, {\n    key: \"getCurrentDatasets\",\n    value: function getCurrentDatasets() {\n      return this.chartInstance && this.chartInstance.config.data && this.chartInstance.config.data.datasets || [];\n    }\n  }, {\n    key: \"saveCurrentDatasets\",\n    value: function saveCurrentDatasets() {\n      var _this2 = this;\n\n      this.datasets = this.datasets || {};\n      var currentDatasets = this.getCurrentDatasets();\n      currentDatasets.forEach(function (d) {\n        _this2.datasets[_this2.props.datasetKeyProvider(d)] = d;\n      });\n    }\n  }, {\n    key: \"updateChart\",\n    value: function updateChart() {\n      var _this3 = this;\n\n      var options = this.props.options;\n      var data = this.memoizeDataProps(this.props);\n      if (!this.chartInstance) return;\n\n      if (options) {\n        this.chartInstance.options = _chart[\"default\"].helpers.configMerge(this.chartInstance.options, options);\n      } // Pipe datasets to chart instance datasets enabling\n      // seamless transitions\n\n\n      var currentDatasets = this.getCurrentDatasets();\n      var nextDatasets = data.datasets || [];\n      this.checkDatasets(currentDatasets);\n      var currentDatasetsIndexed = (0, _keyBy[\"default\"])(currentDatasets, this.props.datasetKeyProvider); // We can safely replace the dataset array, as long as we retain the _meta property\n      // on each dataset.\n\n      this.chartInstance.config.data.datasets = nextDatasets.map(function (next) {\n        var current = currentDatasetsIndexed[_this3.props.datasetKeyProvider(next)];\n\n        if (current && current.type === next.type && next.data) {\n          // Be robust to no data. Relevant for other update mechanisms as in chartjs-plugin-streaming.\n          // The data array must be edited in place. As chart.js adds listeners to it.\n          current.data.splice(next.data.length);\n          next.data.forEach(function (point, pid) {\n            current.data[pid] = next.data[pid];\n          });\n\n          var _data = next.data,\n              otherProps = _objectWithoutProperties(next, [\"data\"]); // Merge properties. Notice a weakness here. If a property is removed\n          // from next, it will be retained by current and never disappears.\n          // Workaround is to set value to null or undefined in next.\n\n\n          return _objectSpread(_objectSpread({}, current), otherProps);\n        } else {\n          return next;\n        }\n      });\n\n      var datasets = data.datasets,\n          rest = _objectWithoutProperties(data, [\"datasets\"]);\n\n      this.chartInstance.config.data = _objectSpread(_objectSpread({}, this.chartInstance.config.data), rest);\n      this.chartInstance.update();\n    }\n  }, {\n    key: \"renderChart\",\n    value: function renderChart() {\n      var _this$props3 = this.props,\n          options = _this$props3.options,\n          legend = _this$props3.legend,\n          type = _this$props3.type,\n          plugins = _this$props3.plugins;\n      var node = this.element;\n      var data = this.memoizeDataProps();\n\n      if (typeof legend !== 'undefined' && !(0, _isEqual[\"default\"])(ChartComponent.defaultProps.legend, legend)) {\n        options.legend = legend;\n      }\n\n      this.chartInstance = new _chart[\"default\"](node, {\n        type: type,\n        data: data,\n        options: options,\n        plugins: plugins\n      });\n    }\n  }, {\n    key: \"destroyChart\",\n    value: function destroyChart() {\n      if (!this.chartInstance) {\n        return;\n      } // Put all of the datasets that have existed in the chart back on the chart\n      // so that the metadata associated with this chart get destroyed.\n      // This allows the datasets to be used in another chart. This can happen,\n      // for example, in a tabbed UI where the chart gets created each time the\n      // tab gets switched to the chart and uses the same data).\n\n\n      this.saveCurrentDatasets();\n      var datasets = Object.values(this.datasets);\n      this.chartInstance.config.data.datasets = datasets;\n      this.chartInstance.destroy();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n          height = _this$props4.height,\n          width = _this$props4.width,\n          id = _this$props4.id;\n      return /*#__PURE__*/_react[\"default\"].createElement(\"canvas\", {\n        ref: this.ref,\n        height: height,\n        width: width,\n        id: id,\n        onClick: this.handleOnClick\n      });\n    }\n  }]);\n\n  return ChartComponent;\n}(_react[\"default\"].Component);\n\n_defineProperty(ChartComponent, \"getLabelAsKey\", function (d) {\n  return d.label;\n});\n\n_defineProperty(ChartComponent, \"propTypes\", {\n  data: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]).isRequired,\n  getDatasetAtEvent: _propTypes[\"default\"].func,\n  getElementAtEvent: _propTypes[\"default\"].func,\n  getElementsAtEvent: _propTypes[\"default\"].func,\n  height: _propTypes[\"default\"].number,\n  legend: _propTypes[\"default\"].object,\n  onElementsClick: _propTypes[\"default\"].func,\n  options: _propTypes[\"default\"].object,\n  plugins: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n  redraw: _propTypes[\"default\"].bool,\n  type: function type(props, propName, componentName) {\n    if (!_chart[\"default\"].controllers[props[propName]]) {\n      return new Error('Invalid chart type `' + props[propName] + '` supplied to' + ' `' + componentName + '`.');\n    }\n  },\n  width: _propTypes[\"default\"].number,\n  datasetKeyProvider: _propTypes[\"default\"].func\n});\n\n_defineProperty(ChartComponent, \"defaultProps\", {\n  legend: {\n    display: true,\n    position: 'bottom'\n  },\n  type: 'doughnut',\n  height: 150,\n  width: 300,\n  redraw: false,\n  options: {},\n  datasetKeyProvider: ChartComponent.getLabelAsKey\n});\n\nvar _default = ChartComponent;\nexports[\"default\"] = _default;\n\nvar Doughnut = /*#__PURE__*/function (_React$Component2) {\n  _inherits(Doughnut, _React$Component2);\n\n  var _super2 = _createSuper(Doughnut);\n\n  function Doughnut() {\n    _classCallCheck(this, Doughnut);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(Doughnut, [{\n    key: \"render\",\n    value: function render() {\n      var _this4 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref) {\n          return _this4.chartInstance = _ref && _ref.chartInstance;\n        },\n        type: \"doughnut\"\n      }));\n    }\n  }]);\n\n  return Doughnut;\n}(_react[\"default\"].Component);\n\nexports.Doughnut = Doughnut;\n\nvar Pie = /*#__PURE__*/function (_React$Component3) {\n  _inherits(Pie, _React$Component3);\n\n  var _super3 = _createSuper(Pie);\n\n  function Pie() {\n    _classCallCheck(this, Pie);\n\n    return _super3.apply(this, arguments);\n  }\n\n  _createClass(Pie, [{\n    key: \"render\",\n    value: function render() {\n      var _this5 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref2) {\n          return _this5.chartInstance = _ref2 && _ref2.chartInstance;\n        },\n        type: \"pie\"\n      }));\n    }\n  }]);\n\n  return Pie;\n}(_react[\"default\"].Component);\n\nexports.Pie = Pie;\n\nvar Line = /*#__PURE__*/function (_React$Component4) {\n  _inherits(Line, _React$Component4);\n\n  var _super4 = _createSuper(Line);\n\n  function Line() {\n    _classCallCheck(this, Line);\n\n    return _super4.apply(this, arguments);\n  }\n\n  _createClass(Line, [{\n    key: \"render\",\n    value: function render() {\n      var _this6 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref3) {\n          return _this6.chartInstance = _ref3 && _ref3.chartInstance;\n        },\n        type: \"line\"\n      }));\n    }\n  }]);\n\n  return Line;\n}(_react[\"default\"].Component);\n\nexports.Line = Line;\n\nvar Bar = /*#__PURE__*/function (_React$Component5) {\n  _inherits(Bar, _React$Component5);\n\n  var _super5 = _createSuper(Bar);\n\n  function Bar() {\n    _classCallCheck(this, Bar);\n\n    return _super5.apply(this, arguments);\n  }\n\n  _createClass(Bar, [{\n    key: \"render\",\n    value: function render() {\n      var _this7 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref4) {\n          return _this7.chartInstance = _ref4 && _ref4.chartInstance;\n        },\n        type: \"bar\"\n      }));\n    }\n  }]);\n\n  return Bar;\n}(_react[\"default\"].Component);\n\nexports.Bar = Bar;\n\nvar HorizontalBar = /*#__PURE__*/function (_React$Component6) {\n  _inherits(HorizontalBar, _React$Component6);\n\n  var _super6 = _createSuper(HorizontalBar);\n\n  function HorizontalBar() {\n    _classCallCheck(this, HorizontalBar);\n\n    return _super6.apply(this, arguments);\n  }\n\n  _createClass(HorizontalBar, [{\n    key: \"render\",\n    value: function render() {\n      var _this8 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref5) {\n          return _this8.chartInstance = _ref5 && _ref5.chartInstance;\n        },\n        type: \"horizontalBar\"\n      }));\n    }\n  }]);\n\n  return HorizontalBar;\n}(_react[\"default\"].Component);\n\nexports.HorizontalBar = HorizontalBar;\n\nvar Radar = /*#__PURE__*/function (_React$Component7) {\n  _inherits(Radar, _React$Component7);\n\n  var _super7 = _createSuper(Radar);\n\n  function Radar() {\n    _classCallCheck(this, Radar);\n\n    return _super7.apply(this, arguments);\n  }\n\n  _createClass(Radar, [{\n    key: \"render\",\n    value: function render() {\n      var _this9 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref6) {\n          return _this9.chartInstance = _ref6 && _ref6.chartInstance;\n        },\n        type: \"radar\"\n      }));\n    }\n  }]);\n\n  return Radar;\n}(_react[\"default\"].Component);\n\nexports.Radar = Radar;\n\nvar Polar = /*#__PURE__*/function (_React$Component8) {\n  _inherits(Polar, _React$Component8);\n\n  var _super8 = _createSuper(Polar);\n\n  function Polar() {\n    _classCallCheck(this, Polar);\n\n    return _super8.apply(this, arguments);\n  }\n\n  _createClass(Polar, [{\n    key: \"render\",\n    value: function render() {\n      var _this10 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref7) {\n          return _this10.chartInstance = _ref7 && _ref7.chartInstance;\n        },\n        type: \"polarArea\"\n      }));\n    }\n  }]);\n\n  return Polar;\n}(_react[\"default\"].Component);\n\nexports.Polar = Polar;\n\nvar Bubble = /*#__PURE__*/function (_React$Component9) {\n  _inherits(Bubble, _React$Component9);\n\n  var _super9 = _createSuper(Bubble);\n\n  function Bubble() {\n    _classCallCheck(this, Bubble);\n\n    return _super9.apply(this, arguments);\n  }\n\n  _createClass(Bubble, [{\n    key: \"render\",\n    value: function render() {\n      var _this11 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref8) {\n          return _this11.chartInstance = _ref8 && _ref8.chartInstance;\n        },\n        type: \"bubble\"\n      }));\n    }\n  }]);\n\n  return Bubble;\n}(_react[\"default\"].Component);\n\nexports.Bubble = Bubble;\n\nvar Scatter = /*#__PURE__*/function (_React$Component10) {\n  _inherits(Scatter, _React$Component10);\n\n  var _super10 = _createSuper(Scatter);\n\n  function Scatter() {\n    _classCallCheck(this, Scatter);\n\n    return _super10.apply(this, arguments);\n  }\n\n  _createClass(Scatter, [{\n    key: \"render\",\n    value: function render() {\n      var _this12 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref9) {\n          return _this12.chartInstance = _ref9 && _ref9.chartInstance;\n        },\n        type: \"scatter\"\n      }));\n    }\n  }]);\n\n  return Scatter;\n}(_react[\"default\"].Component);\n\nexports.Scatter = Scatter;\nvar defaults = _chart[\"default\"].defaults;\nexports.defaults = defaults;","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","import React, {Component} from \"react\";\n\nimport { Line, } from 'react-chartjs-2';\n\nclass LineChart extends Component {\n   state = {\n        lineChartData: this.props.lineChartData,\n    }\n\n    static defaultProps = {\n        displayLegend: true,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Line\n                    data={this.state.lineChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 3,\n                    \n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }]\n\n                        },\n                        legend:{\n                            labels : {\n                                fontColor: \"white\"\n                            },\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                    }}\n                />\n                \n            </div>\n        )\n    }\n}\n\nexport default LineChart;","import React, {Component} from \"react\";\n\nimport { Bar } from 'react-chartjs-2';\n\nclass BarChart extends Component {\n    state = {\n        barChartData: this.props.barChartData,\n    }\n    \n    static defaultProps = {\n        displayLegend: false,\n        legendPosition:'bottom',\n    }\n\n    render(){\n        return(\n            <div>\n                <Bar\n                    data={this.state.barChartData}\n                    height={220}\n                    width={250}\n                    options={{\n                        scales:{\n                            xAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: false,\n                                    labelString: this.props.xAxis,\n                                    fontColor: 'white'                                    \n                                  }\n                            }],\n                            yAxes: [{\n                                display: true,\n                                ticks: {\n                                    fontColor: \"white\",\n                                    maxTicksLimit: 4,\n                                    padding:2,\n                                    beginAtZero: true\n                                },\n                                gridLines: {\n                                    color: \"white\",\n                                },\n                                scaleLabel: {\n                                    display: true,\n                                    labelString: this.props.yAxis,\n                                    fontColor: 'white'                                    \n                                }\n                            }]\n\n                        },\n                        legend:{\n                            display:this.props.displayLegend,\n                            position:this.props.legendPosition\n                        },\n                        animation: {\n                            duration: 2000,\n                            easing: 'easeOutCubic',\n                        },\n                      }}\n                />                \n            </div>\n        )\n    }\n}\n\nexport default BarChart;","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\nimport LineChart from \"../components/lineChart\";\nimport BarChart from \"../components/barChart\";\nconst PerformanceCard = ({ children, primary, graphData, heading, chartType, xAxis, yAxis }) => {\n    if (chartType === \"line\") {\n      return (\n          <div\n            sx={{\n              boxShadow: primary ? \"cardShadow\" : null,\n              borderRadius: \"card\",\n              backgroundColor: \"primary\",\n              color: \"white\",\n              marginY: 5,\n              marginX: 1,\n              width:\"18rem\",\n              display: \"flex\",\n              flexDirection: \"column\",\n              justifyContent: \"center\",\n              alignItems: \"center\",\n            }}\n          >\n            <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1.5rem 0.5rem 1.5rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n            <LineChart lineChartData={graphData} legendPosition=\"bottom\" xAxis={xAxis} yAxis={yAxis}/>\n            <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"0.35rem solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n\n              }}\n            >\n              {children}\n            </div>\n          </div>\n        );\n    } else {\n        return (\n          <div\n            sx={{\n      \n              boxShadow: primary ? \"cardShadow\" : null,\n              borderRadius: \"card\",\n              backgroundColor: \"primary\",\n              color: \"white\",\n              marginY: 5,\n              marginX: 1,\n              width:\"18rem\",\n              display: \"flex\",\n              flexDirection: \"column\",\n              justifyContent: \"center\",\n              alignItems: \"center\",\n            }}\n          >\n            <h5 sx={{fontSize:\"1.1rem\",margin:\"0.5rem 1rem 0.5rem 1rem\", textAlign:\"center\", height:\"3rem\",}}>{heading}</h5>\n            <BarChart barChartData={graphData} yAxis={yAxis}/>\n            <div\n              sx={{\n                boxShadowBottom: primary ? \"cardShadow\" : null,\n                borderBottomRightRadius: \"card\",\n                borderBottomLeftRadius: \"card\",\n                backgroundColor: \"white\",\n                borderTop: \"0.35rem solid #5DA7A3\",\n                color: \"darkText\",\n                height:\"50%\",\n                padding:\"4rem 1rem\",\n                display: \"flex\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                width:\"100%\",\n                marginBottom:\"-4rem\",\n                marginTop:\"1rem\"\n              }}\n            >\n              {children}\n            </div>\n          </div>  \n        );\n    }\n};\n\nexport default PerformanceCard;\n","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\n/** @jsx jsx */\n\nimport { jsx } from \"theme-ui\";\n\nconst Testimonials = ({ children, source, link }) => {\n    return (\n                \n        <blockquote \n          sx={{\n            display: [\"block\", \"block\", \"block\", \"grid\"],\n            gridGap:'0.5rem',\n            gridTemplateColumns:'repeat(1, 1fr)',\n            gridTemplateRows: \"5rem 1.5rem 1.5rem\",\n            color: \"#0b4237\",\n            boxSizing: \"border-box\",\n            marginBottom:\"2rem\"\n          }}\n        >\n          <p \n            sx={{\n              fontFamily: \"'Gelasio', serif\",\n              fontStyle: \"italic\",\n              fontSize: \"1.3rem\",\n              lineHeight:\"1.5rem\",\n            }}\n          >\n            {children}\n          </p>\n\n          <cite\n            sx={{\n              display: \"flex\",\n              justifyContent: \"flex-start\",\n            }}\n          >\n            <a sx={{\n                color: \"black\",\n                textDecoration: \"none\",           \n                \"&:hover\": {\n                  color: \"#0b4237\",\n                  textDecoration: \"none\",\n                  fontWeight:\"bold\"\n                }\n                }} \n                href={link} rel=\"noopener noreferrer\" target=\"_blank\">{source}&nbsp;<i className=\"fas fa-external-link-alt fa-xs\"></i></a>\n          </cite>\n        </blockquote>\n    );\n}\n\nexport default Testimonials;","// Copyright (c) 2017, 2021 IBM Corp. and others\n\n// This program and the accompanying materials are made available under\n// the terms of the Eclipse Public License 2.0 which accompanies this\n// distribution and is available at https://www.eclipse.org/legal/epl-2.0/\n// or the Apache License, Version 2.0 which accompanies this distribution and\n// is available at https://www.apache.org/licenses/LICENSE-2.0.\n\n// This Source Code may also be made available under the following\n// Secondary Licenses when the conditions for such availability set\n// forth in the Eclipse Public License, v. 2.0 are satisfied: GNU\n// General Public License, version 2 with the GNU Classpath\n// Exception [1] and GNU General Public License, version 2 with the\n// OpenJDK Assembly Exception [2].\n\n// [1] https://www.gnu.org/software/classpath/license.html\n// [2] http://openjdk.java.net/legal/assembly-exception.html\n\n// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception\n\n// The project website pages cannot be redistributed\n\nimport Layout from \"../components/layout\";\n\n/** @jsx jsx */\nimport { jsx, Styled } from \"theme-ui\";\nimport {Component} from \"react\";\n\nimport PerformanceCard from \"../components/performanceCard\";\nimport Testimonials from \"../components/testimonials\";\n\nclass performance extends Component {\n  state = {\n    barChartJDK8Startup:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.58,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    barChartJDK8Footprint:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.34,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    lineChartJK8FasterRampupInTheCloud:{ \n      labels: [0, 150, 300, 450, 600, 750, 900, 1050, 1200, 1350],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            8.5,\n            1064,\n            1063,\n            1133,\n            1188.5,\n            1071,\n            1125.5,\n            1084.5,\n            1095,\n            1104.5,\n          \n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            10.5,\n            529.5,\n            700.5,\n            832.5,\n            796,\n            829.5,\n            698.5,\n            791.5,\n            1017,\n            1175.5,\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n    lineChartJK8FootprintDuringLoad:{ \n      labels: [0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            232,\n            488,\n            505,\n            511,\n            516,\n            517,\n            520,\n            521,\n            521,\n            522\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            563,\n            902,\n            1023,\n            1140,\n            1200,\n            1218,\n            1220,\n            1289,\n            1359,\n            1368\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n    barChartJDK11Startup:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.49,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    barChartJDK11Footprint:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.50,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n    lineChartJK11FasterRampupInTheCloud:{ \n      labels: [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            606,\n            2483,\n            2621,\n            2805,\n            2853,\n            2924,\n            3049,\n            3103,\n            3122,\n            3043,\n            3069,\n            3092,\n            3167\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            139,\n            1208,\n            1620,\n            1952,\n            2157,\n            2551,\n            2696,\n            2879,\n            3264,\n            3337,\n            3392,\n            3436,\n            3479\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n    lineChartJK11FootprintDuringLoad:{ \n      labels: [0, 100, 200, 300, 400, 500, 600],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            267,\n            630,\n            674,\n            680,\n            688,\n            688,\n            691,\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            500,\n            786,\n            945,\n            975,\n            985,\n            1001,\n            1011,\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n\n    barChartJDK11QuarkusStartup:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.34,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n\n    barChartJDK11QuarkusFootprint:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            0.82,              \n            1\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n\n    lineChartJK11QuarkusFasterRampupInTheCloud:{ \n      labels: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120],\n      datasets:[\n        {\n          label: 'OpenJ9',\n          data:[\n            2,\n            4233,\n            4311,\n            4307,\n            4312,\n            4347,\n            4432,\n            4468,\n            4564,\n            4601,\n            4627,\n            4606,\n            4657\n          ],\n          fill: false,\n          borderColor: \"#5DA7A3\",\n          backgroundColor:'#5DA7A3'\n        },\n        {\n          label: 'HotSpot',\n          data:[\n            1,\n            1426,\n            1959,\n            3603,\n            5545,\n            5609,\n            5616,\n            5601,\n            5583,\n            5619,\n            5560,\n            5354,\n            5639\n          ],\n          fill: false,\n          borderColor:'#E58B23',\n          backgroundColor:'#E58B23'\n        },\n      ]\n    },\n\n    barChartJK11QuarkusFootprintDuringLoad:{ \n      labels: ['OpenJ9', 'HotSpot'],\n      datasets:[\n        {\n          data:[\n            147,              \n            178\n          ],\n          backgroundColor:[\n            '#5DA7A3',\n            '#E58B23'\n          ]\n        }\n      ]\n    },\n  } \n  \n  render (){\n    return(\n      <Layout isHome={false} title=\"Eclipse OpenJ9 performance\" description=\"OpenJDK with OpenJ9 demonstrates significantly better performance than HotSpot.\">\n      <section sx={{ backgroundColor: \"#F5F9FC\",  paddingX: \"7%\", paddingTop: \"4rem\", paddingBottom: \"0.1rem\" }}>\n        <Styled.h1 sx={{marginBottom:\"1rem\"}}>Performance Overview</Styled.h1>\n          <Styled.p>\n            Application performance can be measured using many different metrics, including startup time,\n            ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all\n            of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be\n            optimized for different workloads. We regularly test and optimize OpenJ9 performance when running the most popular \n            Java frameworks such as Open Liberty, Quarkus, SpringBoot, and Micronaut. We're proud of our results. \n          </Styled.p>\n      </section>\n\n      <section id=\"openjdk11\"\n        sx={{\n          backgroundColor: \"#F5F9FC\",\n          paddingX: \"7%\",\n          paddingTop: \"0.1rem\",\n          paddingBottom: \"4rem\"\n        }}\n      >\n        <Styled.h2>OpenJDK 11 performance with Eclipse OpenJ9</Styled.h2>\n        <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          OpenJDK 11 with OpenJ9 significantly outperforms HotSpot on Liberty startup, ramp up, and footprint.\n        </Styled.p>\n    \n        \n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"space-around\",\n            flexWrap: \"wrap\"\n          }}\n        >\n          <PerformanceCard graphData={this.state.barChartJDK11Startup} heading=\"51% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative startup time\"> \n            <p>By using shared classes cache and AOT technology, OpenJ9 starts in roughly half the time it takes HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.barChartJDK11Footprint} heading=\"50% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n            <p>After startup, the OpenJ9 footprint is half the size of HotSpot, which makes it ideal for cloud workloads.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK11FasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput (pages/s)\"> \n            <p>OpenJ9 reaches peak throughput much faster than HotSpot making it especially suitable for running short-lived applications.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK11FootprintDuringLoad} heading=\"33% smaller footprint during load\" primary={true} chartType=\"line\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n            <p>Consistent with the footprint results after startup, the OpenJ9 footprint remains much smaller than HotSpot when load is applied.</p>\n          </PerformanceCard>\n        </div>\n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n          }}\n        >\n          <a sx={{\n              variant: \"buttons.secondary\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              textDecoration: \"none\",\n              width:\"16rem\",\n              marginTop:\"7rem\"\n              }} \n              href=\"https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/openjdk11-daytrader7.md\" rel=\"noopener noreferrer\" target=\"_blank\">Show me performance details</a>\n        </div>\n\n        <div\n            sx={{\n                display: \"grid\",\n                gridGap:'3rem',\n                gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n                paddingTop:\"4rem\"\n            }}\n        >\n          <Testimonials source=\"Open Liberty blog\" link=\"https://openliberty.io/blog/2019/10/30/faster-startup-open-liberty.html\">\n            With version 19.0.0.9 of Open Liberty and OpenJ9, Open Liberty managed to cut the startup time to their goal of almost exactly one second.\n          </Testimonials>\n\n          <Testimonials source=\"Payara Enterprise\" link=\"https://blog.payara.fish/faster-payara-micro-startup-times-with-openj9\">\n            Payara found that with datagrid enabled, Payara Micro with class data sharing, booted in about 6 seconds, improving startup time by almost 40%.\n          </Testimonials>\n        </div>\t\n        </section>\n\n        <section id=\"openjdk11quarkus\"\n          sx={{\n            backgroundColor: \"#F5F9FC\",\n            paddingX: \"7%\",\n            paddingTop: \"0.1rem\",\n            paddingBottom: \"4rem\"\n          }}\n        >\n          <Styled.h2>OpenJDK 11 performance with Quarkus and Eclipse OpenJ9</Styled.h2>\n          <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          Using Quarkus with OpenJ9 instead of HotSpot makes Java even more supersonic and subatomic!\n          </Styled.p>\n          \n          <div\n            sx={{\n              display: \"flex\",\n              justifyContent: \"space-around\",\n              flexWrap: \"wrap\"\n            }}\n          >\n            <PerformanceCard graphData={this.state.barChartJDK11QuarkusStartup} heading=\"66% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative startup time\"> \n              <p>Quarkus might be supersonic, but running it with OpenJ9 instead of HotSpot reduces startup time by a further 66%.</p>\n            </PerformanceCard>\n            <PerformanceCard graphData={this.state.barChartJDK11QuarkusFootprint} heading=\"18% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n              <p>The ultra-supersonic startup time comes at some tradeoff to footprint, but OpenJ9 still has an edge over HotSpot.</p>\n            </PerformanceCard>\n            <PerformanceCard graphData={this.state.lineChartJK11QuarkusFasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput (pages/s)\"> \n              <p>For short-lived cloud workloads running on Quarkus, OpenJ9 delivers excellent ramp-up performance compared to HotSpot.</p>\n            </PerformanceCard>\n            <PerformanceCard graphData={this.state.barChartJK11QuarkusFootprintDuringLoad} heading=\"18% smaller footprint during load\" primary={true} chartType=\"bar\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n              <p>When ramp-up completes, as well as getting there faster, OpenJ9 still retains a smaller footprint than HotSpot.</p>\n            </PerformanceCard>\n          </div>\n          <div\n            sx={{\n              display: \"flex\",\n              justifyContent: \"center\",\n            }}\n          >\n            <a sx={{\n                variant: \"buttons.secondary\",\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n                textDecoration: \"none\",\n                width:\"16rem\",\n                marginTop:\"7rem\"\n                }} \n                href=\"https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/quarkus.md\" rel=\"noopener noreferrer\" target=\"_blank\">Show me performance details</a>\n          </div>\n\n          <div\n            sx={{\n                display: \"grid\",\n                gridGap:'3rem',\n                gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n                paddingTop:\"4rem\"\n            }}\n          >\n            <Testimonials source=\"Trendyol Tech blog\" link=\"https://medium.com/trendyol-tech/how-trendyol-jvm-applications-consume-less-memory-in-the-production-environment-87e419dd18a0\">\n              Trendyol Tech found 40% faster startup time and 73 MB less memory footprint when they ran Undertow + Rest + Couchbase Client with OpenJ9.\n            </Testimonials>\n\n            <Testimonials source=\"Graeme Rocher, Micronaut\" link=\"https://twitter.com/graemerocher/status/1090204088065802240?lang=en\">\n              As reported on twitter, Micronautfw startup with OpenJ9 is as fast as Node.js.\n            </Testimonials>\n          </div>\t  \n      </section>\n\n      <section id=\"openjdk8\"\n        sx={{\n          backgroundColor: \"#F5F9FC\",\n          paddingX: \"7%\",\n          paddingTop: \"0.1rem\",\n          paddingBottom: \"4rem\"\n        }}\n      >\n        <Styled.h2>OpenJDK 8 performance with Eclipse OpenJ9</Styled.h2>\n        <Styled.p sx={{marginBottom:\"0.5rem\"}}>\n          Testing shows similar results for OpenJDK 8; OpenJ9 demonstrates significantly better performance than OpenJDK 8 with HotSpot\n        </Styled.p>\n    \n        \n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"space-around\",\n            flexWrap: \"wrap\"\n          }}\n        >\n          <PerformanceCard graphData={this.state.barChartJDK8Startup} heading=\"42% faster startup time\" primary={true} chartType=\"bar\" yAxis=\"Relative startup time\"> \n            <p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well,\n              you can reduce startup time by up to 42%.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.barChartJDK8Footprint} heading=\"66% smaller footprint after startup\" primary={true} chartType=\"bar\" yAxis=\"Relative resident set size\"> \n            <p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important.\n              Out of the box, the footprint is 66% smaller than HotSpot.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK8FasterRampupInTheCloud} heading=\"Faster ramp-up time in the cloud\" primary={true} chartType=\"line\" xAxis=\"Time (s)\" yAxis=\"Throughput (pages/s)\"> \n            <p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot.\n              Ideal for short-lived VMs running in the cloud.</p>\n          </PerformanceCard>\n          <PerformanceCard graphData={this.state.lineChartJK8FootprintDuringLoad} heading=\"63% smaller footprint during load\" primary={true} chartType=\"line\" yAxis=\"Resident Set Size (MB)\" xAxis=\"Time (s)\"> \n            <p>Memory footprint increases rapidly when load is applied. However, at steady state,\n              OpenJ9 consistently used around 63% less physical memory than HotSpot.</p>\n          </PerformanceCard>\n        </div>\n        <div\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n          }}\n        >\n          <a sx={{\n              variant: \"buttons.secondary\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              textDecoration: \"none\",\n              width:\"16rem\",\n              marginTop:\"7rem\"\n              }} \n              href=\"https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/daytrader7.md\" rel=\"noopener noreferrer\" target=\"_blank\">Show me performance details</a>\n        </div>\n\n        <div\n            sx={{\n                display: \"grid\",\n                gridGap:'3rem',\n                gridTemplateColumns:['repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(1, 1fr)', 'repeat(2, 1fr)'],\n                paddingTop:\"4rem\"\n            }}\n        >\n          <Testimonials source=\"Eclipse Vert.x how-to guide\" link=\"https://how-to.vertx.io/openj9-howto/\">\n            Vert.x found that OpenJ9 was very efficient with respect to memory consumption, without compromising the latency.\n          </Testimonials>\n\n          <Testimonials source=\"AMIS technology blog\" link=\"https://technology.amis.nl/2019/09/03/microservice-framework-startup-time-on-different-jvms-aot-and-jit/\">\n            As reported on the Amis technology blog, when testing a number of JVMs, OpenJDK with OpenJ9 was the fastest to start for every framework.\n          </Testimonials>\n        </div>\t \n      </section>\n    </Layout>\n    )\n  }\n}\n\nexport default performance;\n \n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","//! moment.js\n//! version : 2.27.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n;\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n  'use strict';\n\n  var hookCallback;\n\n  function hooks() {\n    return hookCallback.apply(null, arguments);\n  } // This is done to register the method called with moment()\n  // without creating circular dependencies.\n\n\n  function setHookCallback(callback) {\n    hookCallback = callback;\n  }\n\n  function isArray(input) {\n    return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n  }\n\n  function isObject(input) {\n    // IE8 will treat undefined and null as object if it wasn't for\n    // input != null\n    return input != null && Object.prototype.toString.call(input) === '[object Object]';\n  }\n\n  function hasOwnProp(a, b) {\n    return Object.prototype.hasOwnProperty.call(a, b);\n  }\n\n  function isObjectEmpty(obj) {\n    if (Object.getOwnPropertyNames) {\n      return Object.getOwnPropertyNames(obj).length === 0;\n    } else {\n      var k;\n\n      for (k in obj) {\n        if (hasOwnProp(obj, k)) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n  }\n\n  function isUndefined(input) {\n    return input === void 0;\n  }\n\n  function isNumber(input) {\n    return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n  }\n\n  function isDate(input) {\n    return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n  }\n\n  function map(arr, fn) {\n    var res = [],\n        i;\n\n    for (i = 0; i < arr.length; ++i) {\n      res.push(fn(arr[i], i));\n    }\n\n    return res;\n  }\n\n  function extend(a, b) {\n    for (var i in b) {\n      if (hasOwnProp(b, i)) {\n        a[i] = b[i];\n      }\n    }\n\n    if (hasOwnProp(b, 'toString')) {\n      a.toString = b.toString;\n    }\n\n    if (hasOwnProp(b, 'valueOf')) {\n      a.valueOf = b.valueOf;\n    }\n\n    return a;\n  }\n\n  function createUTC(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, true).utc();\n  }\n\n  function defaultParsingFlags() {\n    // We need to deep clone this object.\n    return {\n      empty: false,\n      unusedTokens: [],\n      unusedInput: [],\n      overflow: -2,\n      charsLeftOver: 0,\n      nullInput: false,\n      invalidEra: null,\n      invalidMonth: null,\n      invalidFormat: false,\n      userInvalidated: false,\n      iso: false,\n      parsedDateParts: [],\n      era: null,\n      meridiem: null,\n      rfc2822: false,\n      weekdayMismatch: false\n    };\n  }\n\n  function getParsingFlags(m) {\n    if (m._pf == null) {\n      m._pf = defaultParsingFlags();\n    }\n\n    return m._pf;\n  }\n\n  var some;\n\n  if (Array.prototype.some) {\n    some = Array.prototype.some;\n  } else {\n    some = function some(fun) {\n      var t = Object(this),\n          len = t.length >>> 0,\n          i;\n\n      for (i = 0; i < len; i++) {\n        if (i in t && fun.call(this, t[i], i, t)) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n  }\n\n  function isValid(m) {\n    if (m._isValid == null) {\n      var flags = getParsingFlags(m),\n          parsedParts = some.call(flags.parsedDateParts, function (i) {\n        return i != null;\n      }),\n          isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n      if (m._strict) {\n        isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n      }\n\n      if (Object.isFrozen == null || !Object.isFrozen(m)) {\n        m._isValid = isNowValid;\n      } else {\n        return isNowValid;\n      }\n    }\n\n    return m._isValid;\n  }\n\n  function createInvalid(flags) {\n    var m = createUTC(NaN);\n\n    if (flags != null) {\n      extend(getParsingFlags(m), flags);\n    } else {\n      getParsingFlags(m).userInvalidated = true;\n    }\n\n    return m;\n  } // Plugins that add properties should also add the key here (null value),\n  // so we can properly clone ourselves.\n\n\n  var momentProperties = hooks.momentProperties = [],\n      updateInProgress = false;\n\n  function copyConfig(to, from) {\n    var i, prop, val;\n\n    if (!isUndefined(from._isAMomentObject)) {\n      to._isAMomentObject = from._isAMomentObject;\n    }\n\n    if (!isUndefined(from._i)) {\n      to._i = from._i;\n    }\n\n    if (!isUndefined(from._f)) {\n      to._f = from._f;\n    }\n\n    if (!isUndefined(from._l)) {\n      to._l = from._l;\n    }\n\n    if (!isUndefined(from._strict)) {\n      to._strict = from._strict;\n    }\n\n    if (!isUndefined(from._tzm)) {\n      to._tzm = from._tzm;\n    }\n\n    if (!isUndefined(from._isUTC)) {\n      to._isUTC = from._isUTC;\n    }\n\n    if (!isUndefined(from._offset)) {\n      to._offset = from._offset;\n    }\n\n    if (!isUndefined(from._pf)) {\n      to._pf = getParsingFlags(from);\n    }\n\n    if (!isUndefined(from._locale)) {\n      to._locale = from._locale;\n    }\n\n    if (momentProperties.length > 0) {\n      for (i = 0; i < momentProperties.length; i++) {\n        prop = momentProperties[i];\n        val = from[prop];\n\n        if (!isUndefined(val)) {\n          to[prop] = val;\n        }\n      }\n    }\n\n    return to;\n  } // Moment prototype object\n\n\n  function Moment(config) {\n    copyConfig(this, config);\n    this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\n    if (!this.isValid()) {\n      this._d = new Date(NaN);\n    } // Prevent infinite loop in case updateOffset creates new moment\n    // objects.\n\n\n    if (updateInProgress === false) {\n      updateInProgress = true;\n      hooks.updateOffset(this);\n      updateInProgress = false;\n    }\n  }\n\n  function isMoment(obj) {\n    return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n  }\n\n  function warn(msg) {\n    if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n      console.warn('Deprecation warning: ' + msg);\n    }\n  }\n\n  function deprecate(msg, fn) {\n    var firstTime = true;\n    return extend(function () {\n      if (hooks.deprecationHandler != null) {\n        hooks.deprecationHandler(null, msg);\n      }\n\n      if (firstTime) {\n        var args = [],\n            arg,\n            i,\n            key;\n\n        for (i = 0; i < arguments.length; i++) {\n          arg = '';\n\n          if (typeof arguments[i] === 'object') {\n            arg += '\\n[' + i + '] ';\n\n            for (key in arguments[0]) {\n              if (hasOwnProp(arguments[0], key)) {\n                arg += key + ': ' + arguments[0][key] + ', ';\n              }\n            }\n\n            arg = arg.slice(0, -2); // Remove trailing comma and space\n          } else {\n            arg = arguments[i];\n          }\n\n          args.push(arg);\n        }\n\n        warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n        firstTime = false;\n      }\n\n      return fn.apply(this, arguments);\n    }, fn);\n  }\n\n  var deprecations = {};\n\n  function deprecateSimple(name, msg) {\n    if (hooks.deprecationHandler != null) {\n      hooks.deprecationHandler(name, msg);\n    }\n\n    if (!deprecations[name]) {\n      warn(msg);\n      deprecations[name] = true;\n    }\n  }\n\n  hooks.suppressDeprecationWarnings = false;\n  hooks.deprecationHandler = null;\n\n  function isFunction(input) {\n    return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n  }\n\n  function set(config) {\n    var prop, i;\n\n    for (i in config) {\n      if (hasOwnProp(config, i)) {\n        prop = config[i];\n\n        if (isFunction(prop)) {\n          this[i] = prop;\n        } else {\n          this['_' + i] = prop;\n        }\n      }\n    }\n\n    this._config = config; // Lenient ordinal parsing accepts just a number in addition to\n    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n\n    this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n  }\n\n  function mergeConfigs(parentConfig, childConfig) {\n    var res = extend({}, parentConfig),\n        prop;\n\n    for (prop in childConfig) {\n      if (hasOwnProp(childConfig, prop)) {\n        if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n          res[prop] = {};\n          extend(res[prop], parentConfig[prop]);\n          extend(res[prop], childConfig[prop]);\n        } else if (childConfig[prop] != null) {\n          res[prop] = childConfig[prop];\n        } else {\n          delete res[prop];\n        }\n      }\n    }\n\n    for (prop in parentConfig) {\n      if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n        // make sure changes to properties don't modify parent config\n        res[prop] = extend({}, res[prop]);\n      }\n    }\n\n    return res;\n  }\n\n  function Locale(config) {\n    if (config != null) {\n      this.set(config);\n    }\n  }\n\n  var keys;\n\n  if (Object.keys) {\n    keys = Object.keys;\n  } else {\n    keys = function keys(obj) {\n      var i,\n          res = [];\n\n      for (i in obj) {\n        if (hasOwnProp(obj, i)) {\n          res.push(i);\n        }\n      }\n\n      return res;\n    };\n  }\n\n  var defaultCalendar = {\n    sameDay: '[Today at] LT',\n    nextDay: '[Tomorrow at] LT',\n    nextWeek: 'dddd [at] LT',\n    lastDay: '[Yesterday at] LT',\n    lastWeek: '[Last] dddd [at] LT',\n    sameElse: 'L'\n  };\n\n  function calendar(key, mom, now) {\n    var output = this._calendar[key] || this._calendar['sameElse'];\n    return isFunction(output) ? output.call(mom, now) : output;\n  }\n\n  function zeroFill(number, targetLength, forceSign) {\n    var absNumber = '' + Math.abs(number),\n        zerosToFill = targetLength - absNumber.length,\n        sign = number >= 0;\n    return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n  }\n\n  var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n      localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n      formatFunctions = {},\n      formatTokenFunctions = {}; // token:    'M'\n  // padded:   ['MM', 2]\n  // ordinal:  'Mo'\n  // callback: function () { this.month() + 1 }\n\n  function addFormatToken(token, padded, ordinal, callback) {\n    var func = callback;\n\n    if (typeof callback === 'string') {\n      func = function func() {\n        return this[callback]();\n      };\n    }\n\n    if (token) {\n      formatTokenFunctions[token] = func;\n    }\n\n    if (padded) {\n      formatTokenFunctions[padded[0]] = function () {\n        return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n      };\n    }\n\n    if (ordinal) {\n      formatTokenFunctions[ordinal] = function () {\n        return this.localeData().ordinal(func.apply(this, arguments), token);\n      };\n    }\n  }\n\n  function removeFormattingTokens(input) {\n    if (input.match(/\\[[\\s\\S]/)) {\n      return input.replace(/^\\[|\\]$/g, '');\n    }\n\n    return input.replace(/\\\\/g, '');\n  }\n\n  function makeFormatFunction(format) {\n    var array = format.match(formattingTokens),\n        i,\n        length;\n\n    for (i = 0, length = array.length; i < length; i++) {\n      if (formatTokenFunctions[array[i]]) {\n        array[i] = formatTokenFunctions[array[i]];\n      } else {\n        array[i] = removeFormattingTokens(array[i]);\n      }\n    }\n\n    return function (mom) {\n      var output = '',\n          i;\n\n      for (i = 0; i < length; i++) {\n        output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n      }\n\n      return output;\n    };\n  } // format date using native date object\n\n\n  function formatMoment(m, format) {\n    if (!m.isValid()) {\n      return m.localeData().invalidDate();\n    }\n\n    format = expandFormat(format, m.localeData());\n    formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n    return formatFunctions[format](m);\n  }\n\n  function expandFormat(format, locale) {\n    var i = 5;\n\n    function replaceLongDateFormatTokens(input) {\n      return locale.longDateFormat(input) || input;\n    }\n\n    localFormattingTokens.lastIndex = 0;\n\n    while (i >= 0 && localFormattingTokens.test(format)) {\n      format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n      localFormattingTokens.lastIndex = 0;\n      i -= 1;\n    }\n\n    return format;\n  }\n\n  var defaultLongDateFormat = {\n    LTS: 'h:mm:ss A',\n    LT: 'h:mm A',\n    L: 'MM/DD/YYYY',\n    LL: 'MMMM D, YYYY',\n    LLL: 'MMMM D, YYYY h:mm A',\n    LLLL: 'dddd, MMMM D, YYYY h:mm A'\n  };\n\n  function longDateFormat(key) {\n    var format = this._longDateFormat[key],\n        formatUpper = this._longDateFormat[key.toUpperCase()];\n\n    if (format || !formatUpper) {\n      return format;\n    }\n\n    this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n      if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n        return tok.slice(1);\n      }\n\n      return tok;\n    }).join('');\n    return this._longDateFormat[key];\n  }\n\n  var defaultInvalidDate = 'Invalid date';\n\n  function invalidDate() {\n    return this._invalidDate;\n  }\n\n  var defaultOrdinal = '%d',\n      defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n  function ordinal(number) {\n    return this._ordinal.replace('%d', number);\n  }\n\n  var defaultRelativeTime = {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    ss: '%d seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    w: 'a week',\n    ww: '%d weeks',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  };\n\n  function relativeTime(number, withoutSuffix, string, isFuture) {\n    var output = this._relativeTime[string];\n    return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n  }\n\n  function pastFuture(diff, output) {\n    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n    return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n  }\n\n  var aliases = {};\n\n  function addUnitAlias(unit, shorthand) {\n    var lowerCase = unit.toLowerCase();\n    aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n  }\n\n  function normalizeUnits(units) {\n    return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n  }\n\n  function normalizeObjectUnits(inputObject) {\n    var normalizedInput = {},\n        normalizedProp,\n        prop;\n\n    for (prop in inputObject) {\n      if (hasOwnProp(inputObject, prop)) {\n        normalizedProp = normalizeUnits(prop);\n\n        if (normalizedProp) {\n          normalizedInput[normalizedProp] = inputObject[prop];\n        }\n      }\n    }\n\n    return normalizedInput;\n  }\n\n  var priorities = {};\n\n  function addUnitPriority(unit, priority) {\n    priorities[unit] = priority;\n  }\n\n  function getPrioritizedUnits(unitsObj) {\n    var units = [],\n        u;\n\n    for (u in unitsObj) {\n      if (hasOwnProp(unitsObj, u)) {\n        units.push({\n          unit: u,\n          priority: priorities[u]\n        });\n      }\n    }\n\n    units.sort(function (a, b) {\n      return a.priority - b.priority;\n    });\n    return units;\n  }\n\n  function isLeapYear(year) {\n    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n  }\n\n  function absFloor(number) {\n    if (number < 0) {\n      // -0 -> 0\n      return Math.ceil(number) || 0;\n    } else {\n      return Math.floor(number);\n    }\n  }\n\n  function toInt(argumentForCoercion) {\n    var coercedNumber = +argumentForCoercion,\n        value = 0;\n\n    if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n      value = absFloor(coercedNumber);\n    }\n\n    return value;\n  }\n\n  function makeGetSet(unit, keepTime) {\n    return function (value) {\n      if (value != null) {\n        set$1(this, unit, value);\n        hooks.updateOffset(this, keepTime);\n        return this;\n      } else {\n        return get(this, unit);\n      }\n    };\n  }\n\n  function get(mom, unit) {\n    return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n  }\n\n  function set$1(mom, unit, value) {\n    if (mom.isValid() && !isNaN(value)) {\n      if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n        value = toInt(value);\n\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n      } else {\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n      }\n    }\n  } // MOMENTS\n\n\n  function stringGet(units) {\n    units = normalizeUnits(units);\n\n    if (isFunction(this[units])) {\n      return this[units]();\n    }\n\n    return this;\n  }\n\n  function stringSet(units, value) {\n    if (typeof units === 'object') {\n      units = normalizeObjectUnits(units);\n      var prioritized = getPrioritizedUnits(units),\n          i;\n\n      for (i = 0; i < prioritized.length; i++) {\n        this[prioritized[i].unit](units[prioritized[i].unit]);\n      }\n    } else {\n      units = normalizeUnits(units);\n\n      if (isFunction(this[units])) {\n        return this[units](value);\n      }\n    }\n\n    return this;\n  }\n\n  var match1 = /\\d/,\n      //       0 - 9\n  match2 = /\\d\\d/,\n      //      00 - 99\n  match3 = /\\d{3}/,\n      //     000 - 999\n  match4 = /\\d{4}/,\n      //    0000 - 9999\n  match6 = /[+-]?\\d{6}/,\n      // -999999 - 999999\n  match1to2 = /\\d\\d?/,\n      //       0 - 99\n  match3to4 = /\\d\\d\\d\\d?/,\n      //     999 - 9999\n  match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n      //   99999 - 999999\n  match1to3 = /\\d{1,3}/,\n      //       0 - 999\n  match1to4 = /\\d{1,4}/,\n      //       0 - 9999\n  match1to6 = /[+-]?\\d{1,6}/,\n      // -999999 - 999999\n  matchUnsigned = /\\d+/,\n      //       0 - inf\n  matchSigned = /[+-]?\\d+/,\n      //    -inf - inf\n  matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n      // +00:00 -00:00 +0000 -0000 or Z\n  matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n      // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n  matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n      // 123456789 123456789.123\n  // any word (or two) characters or numbers including two/three word month in arabic.\n  // includes scottish gaelic two word and hyphenated months\n  matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n      regexes;\n  regexes = {};\n\n  function addRegexToken(token, regex, strictRegex) {\n    regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n      return isStrict && strictRegex ? strictRegex : regex;\n    };\n  }\n\n  function getParseRegexForToken(token, config) {\n    if (!hasOwnProp(regexes, token)) {\n      return new RegExp(unescapeFormat(token));\n    }\n\n    return regexes[token](config._strict, config._locale);\n  } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\n\n  function unescapeFormat(s) {\n    return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n      return p1 || p2 || p3 || p4;\n    }));\n  }\n\n  function regexEscape(s) {\n    return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n  }\n\n  var tokens = {};\n\n  function addParseToken(token, callback) {\n    var i,\n        func = callback;\n\n    if (typeof token === 'string') {\n      token = [token];\n    }\n\n    if (isNumber(callback)) {\n      func = function func(input, array) {\n        array[callback] = toInt(input);\n      };\n    }\n\n    for (i = 0; i < token.length; i++) {\n      tokens[token[i]] = func;\n    }\n  }\n\n  function addWeekParseToken(token, callback) {\n    addParseToken(token, function (input, array, config, token) {\n      config._w = config._w || {};\n      callback(input, config._w, config, token);\n    });\n  }\n\n  function addTimeToArrayFromToken(token, input, config) {\n    if (input != null && hasOwnProp(tokens, token)) {\n      tokens[token](input, config._a, config, token);\n    }\n  }\n\n  var YEAR = 0,\n      MONTH = 1,\n      DATE = 2,\n      HOUR = 3,\n      MINUTE = 4,\n      SECOND = 5,\n      MILLISECOND = 6,\n      WEEK = 7,\n      WEEKDAY = 8;\n\n  function mod(n, x) {\n    return (n % x + x) % x;\n  }\n\n  var indexOf;\n\n  if (Array.prototype.indexOf) {\n    indexOf = Array.prototype.indexOf;\n  } else {\n    indexOf = function indexOf(o) {\n      // I know\n      var i;\n\n      for (i = 0; i < this.length; ++i) {\n        if (this[i] === o) {\n          return i;\n        }\n      }\n\n      return -1;\n    };\n  }\n\n  function daysInMonth(year, month) {\n    if (isNaN(year) || isNaN(month)) {\n      return NaN;\n    }\n\n    var modMonth = mod(month, 12);\n    year += (month - modMonth) / 12;\n    return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n  } // FORMATTING\n\n\n  addFormatToken('M', ['MM', 2], 'Mo', function () {\n    return this.month() + 1;\n  });\n  addFormatToken('MMM', 0, 0, function (format) {\n    return this.localeData().monthsShort(this, format);\n  });\n  addFormatToken('MMMM', 0, 0, function (format) {\n    return this.localeData().months(this, format);\n  }); // ALIASES\n\n  addUnitAlias('month', 'M'); // PRIORITY\n\n  addUnitPriority('month', 8); // PARSING\n\n  addRegexToken('M', match1to2);\n  addRegexToken('MM', match1to2, match2);\n  addRegexToken('MMM', function (isStrict, locale) {\n    return locale.monthsShortRegex(isStrict);\n  });\n  addRegexToken('MMMM', function (isStrict, locale) {\n    return locale.monthsRegex(isStrict);\n  });\n  addParseToken(['M', 'MM'], function (input, array) {\n    array[MONTH] = toInt(input) - 1;\n  });\n  addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n    var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.\n\n\n    if (month != null) {\n      array[MONTH] = month;\n    } else {\n      getParsingFlags(config).invalidMonth = input;\n    }\n  }); // LOCALES\n\n  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n      defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n      MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n      defaultMonthsShortRegex = matchWord,\n      defaultMonthsRegex = matchWord;\n\n  function localeMonths(m, format) {\n    if (!m) {\n      return isArray(this._months) ? this._months : this._months['standalone'];\n    }\n\n    return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  function localeMonthsShort(m, format) {\n    if (!m) {\n      return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n    }\n\n    return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n  }\n\n  function handleStrictParse(monthName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = monthName.toLocaleLowerCase();\n\n    if (!this._monthsParse) {\n      // this is not used\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n\n      for (i = 0; i < 12; ++i) {\n        mom = createUTC([2000, i]);\n        this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n        this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'MMM') {\n        ii = indexOf.call(this._shortMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._longMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._longMonthsParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortMonthsParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeMonthsParse(monthName, format, strict) {\n    var i, mom, regex;\n\n    if (this._monthsParseExact) {\n      return handleStrictParse.call(this, monthName, format, strict);\n    }\n\n    if (!this._monthsParse) {\n      this._monthsParse = [];\n      this._longMonthsParse = [];\n      this._shortMonthsParse = [];\n    } // TODO: add sorting\n    // Sorting makes sure if one month (or abbr) is a prefix of another\n    // see sorting in computeMonthsParse\n\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n\n      if (strict && !this._longMonthsParse[i]) {\n        this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n        this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n      }\n\n      if (!strict && !this._monthsParse[i]) {\n        regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n        return i;\n      } else if (!strict && this._monthsParse[i].test(monthName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function setMonth(mom, value) {\n    var dayOfMonth;\n\n    if (!mom.isValid()) {\n      // No op\n      return mom;\n    }\n\n    if (typeof value === 'string') {\n      if (/^\\d+$/.test(value)) {\n        value = toInt(value);\n      } else {\n        value = mom.localeData().monthsParse(value); // TODO: Another silent failure?\n\n        if (!isNumber(value)) {\n          return mom;\n        }\n      }\n    }\n\n    dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\n    mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\n    return mom;\n  }\n\n  function getSetMonth(value) {\n    if (value != null) {\n      setMonth(this, value);\n      hooks.updateOffset(this, true);\n      return this;\n    } else {\n      return get(this, 'Month');\n    }\n  }\n\n  function getDaysInMonth() {\n    return daysInMonth(this.year(), this.month());\n  }\n\n  function monthsShortRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsShortStrictRegex;\n      } else {\n        return this._monthsShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsShortRegex')) {\n        this._monthsShortRegex = defaultMonthsShortRegex;\n      }\n\n      return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n    }\n  }\n\n  function monthsRegex(isStrict) {\n    if (this._monthsParseExact) {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        computeMonthsParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._monthsStrictRegex;\n      } else {\n        return this._monthsRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_monthsRegex')) {\n        this._monthsRegex = defaultMonthsRegex;\n      }\n\n      return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n    }\n  }\n\n  function computeMonthsParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom;\n\n    for (i = 0; i < 12; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, i]);\n      shortPieces.push(this.monthsShort(mom, ''));\n      longPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.months(mom, ''));\n      mixedPieces.push(this.monthsShort(mom, ''));\n    } // Sorting makes sure if one month (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    for (i = 0; i < 12; i++) {\n      shortPieces[i] = regexEscape(shortPieces[i]);\n      longPieces[i] = regexEscape(longPieces[i]);\n    }\n\n    for (i = 0; i < 24; i++) {\n      mixedPieces[i] = regexEscape(mixedPieces[i]);\n    }\n\n    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._monthsShortRegex = this._monthsRegex;\n    this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  addFormatToken('Y', 0, 0, function () {\n    var y = this.year();\n    return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n  });\n  addFormatToken(0, ['YY', 2], 0, function () {\n    return this.year() % 100;\n  });\n  addFormatToken(0, ['YYYY', 4], 0, 'year');\n  addFormatToken(0, ['YYYYY', 5], 0, 'year');\n  addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES\n\n  addUnitAlias('year', 'y'); // PRIORITIES\n\n  addUnitPriority('year', 1); // PARSING\n\n  addRegexToken('Y', matchSigned);\n  addRegexToken('YY', match1to2, match2);\n  addRegexToken('YYYY', match1to4, match4);\n  addRegexToken('YYYYY', match1to6, match6);\n  addRegexToken('YYYYYY', match1to6, match6);\n  addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n  addParseToken('YYYY', function (input, array) {\n    array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n  });\n  addParseToken('YY', function (input, array) {\n    array[YEAR] = hooks.parseTwoDigitYear(input);\n  });\n  addParseToken('Y', function (input, array) {\n    array[YEAR] = parseInt(input, 10);\n  }); // HELPERS\n\n  function daysInYear(year) {\n    return isLeapYear(year) ? 366 : 365;\n  } // HOOKS\n\n\n  hooks.parseTwoDigitYear = function (input) {\n    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n  }; // MOMENTS\n\n\n  var getSetYear = makeGetSet('FullYear', true);\n\n  function getIsLeapYear() {\n    return isLeapYear(this.year());\n  }\n\n  function createDate(y, m, d, h, M, s, ms) {\n    // can't just apply() to create a date:\n    // https://stackoverflow.com/q/181348\n    var date; // the date constructor remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      date = new Date(y + 400, m, d, h, M, s, ms);\n\n      if (isFinite(date.getFullYear())) {\n        date.setFullYear(y);\n      }\n    } else {\n      date = new Date(y, m, d, h, M, s, ms);\n    }\n\n    return date;\n  }\n\n  function createUTCDate(y) {\n    var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999\n\n    if (y < 100 && y >= 0) {\n      args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset\n\n      args[0] = y + 400;\n      date = new Date(Date.UTC.apply(null, args));\n\n      if (isFinite(date.getUTCFullYear())) {\n        date.setUTCFullYear(y);\n      }\n    } else {\n      date = new Date(Date.UTC.apply(null, arguments));\n    }\n\n    return date;\n  } // start-of-first-week - start-of-year\n\n\n  function firstWeekOffset(year, dow, doy) {\n    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n    fwd = 7 + dow - doy,\n        // first-week day local weekday -- which local weekday is fwd\n    fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n    return -fwdlw + fwd - 1;\n  } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\n\n  function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n    var localWeekday = (7 + weekday - dow) % 7,\n        weekOffset = firstWeekOffset(year, dow, doy),\n        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n        resYear,\n        resDayOfYear;\n\n    if (dayOfYear <= 0) {\n      resYear = year - 1;\n      resDayOfYear = daysInYear(resYear) + dayOfYear;\n    } else if (dayOfYear > daysInYear(year)) {\n      resYear = year + 1;\n      resDayOfYear = dayOfYear - daysInYear(year);\n    } else {\n      resYear = year;\n      resDayOfYear = dayOfYear;\n    }\n\n    return {\n      year: resYear,\n      dayOfYear: resDayOfYear\n    };\n  }\n\n  function weekOfYear(mom, dow, doy) {\n    var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n        resWeek,\n        resYear;\n\n    if (week < 1) {\n      resYear = mom.year() - 1;\n      resWeek = week + weeksInYear(resYear, dow, doy);\n    } else if (week > weeksInYear(mom.year(), dow, doy)) {\n      resWeek = week - weeksInYear(mom.year(), dow, doy);\n      resYear = mom.year() + 1;\n    } else {\n      resYear = mom.year();\n      resWeek = week;\n    }\n\n    return {\n      week: resWeek,\n      year: resYear\n    };\n  }\n\n  function weeksInYear(year, dow, doy) {\n    var weekOffset = firstWeekOffset(year, dow, doy),\n        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n  } // FORMATTING\n\n\n  addFormatToken('w', ['ww', 2], 'wo', 'week');\n  addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES\n\n  addUnitAlias('week', 'w');\n  addUnitAlias('isoWeek', 'W'); // PRIORITIES\n\n  addUnitPriority('week', 5);\n  addUnitPriority('isoWeek', 5); // PARSING\n\n  addRegexToken('w', match1to2);\n  addRegexToken('ww', match1to2, match2);\n  addRegexToken('W', match1to2);\n  addRegexToken('WW', match1to2, match2);\n  addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n    week[token.substr(0, 1)] = toInt(input);\n  }); // HELPERS\n  // LOCALES\n\n  function localeWeek(mom) {\n    return weekOfYear(mom, this._week.dow, this._week.doy).week;\n  }\n\n  var defaultLocaleWeek = {\n    dow: 0,\n    // Sunday is the first day of the week.\n    doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n  };\n\n  function localeFirstDayOfWeek() {\n    return this._week.dow;\n  }\n\n  function localeFirstDayOfYear() {\n    return this._week.doy;\n  } // MOMENTS\n\n\n  function getSetWeek(input) {\n    var week = this.localeData().week(this);\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  }\n\n  function getSetISOWeek(input) {\n    var week = weekOfYear(this, 1, 4).week;\n    return input == null ? week : this.add((input - week) * 7, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('d', 0, 'do', 'day');\n  addFormatToken('dd', 0, 0, function (format) {\n    return this.localeData().weekdaysMin(this, format);\n  });\n  addFormatToken('ddd', 0, 0, function (format) {\n    return this.localeData().weekdaysShort(this, format);\n  });\n  addFormatToken('dddd', 0, 0, function (format) {\n    return this.localeData().weekdays(this, format);\n  });\n  addFormatToken('e', 0, 0, 'weekday');\n  addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES\n\n  addUnitAlias('day', 'd');\n  addUnitAlias('weekday', 'e');\n  addUnitAlias('isoWeekday', 'E'); // PRIORITY\n\n  addUnitPriority('day', 11);\n  addUnitPriority('weekday', 11);\n  addUnitPriority('isoWeekday', 11); // PARSING\n\n  addRegexToken('d', match1to2);\n  addRegexToken('e', match1to2);\n  addRegexToken('E', match1to2);\n  addRegexToken('dd', function (isStrict, locale) {\n    return locale.weekdaysMinRegex(isStrict);\n  });\n  addRegexToken('ddd', function (isStrict, locale) {\n    return locale.weekdaysShortRegex(isStrict);\n  });\n  addRegexToken('dddd', function (isStrict, locale) {\n    return locale.weekdaysRegex(isStrict);\n  });\n  addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n    var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid\n\n\n    if (weekday != null) {\n      week.d = weekday;\n    } else {\n      getParsingFlags(config).invalidWeekday = input;\n    }\n  });\n  addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n    week[token] = toInt(input);\n  }); // HELPERS\n\n  function parseWeekday(input, locale) {\n    if (typeof input !== 'string') {\n      return input;\n    }\n\n    if (!isNaN(input)) {\n      return parseInt(input, 10);\n    }\n\n    input = locale.weekdaysParse(input);\n\n    if (typeof input === 'number') {\n      return input;\n    }\n\n    return null;\n  }\n\n  function parseIsoWeekday(input, locale) {\n    if (typeof input === 'string') {\n      return locale.weekdaysParse(input) % 7 || 7;\n    }\n\n    return isNaN(input) ? null : input;\n  } // LOCALES\n\n\n  function shiftWeekdays(ws, n) {\n    return ws.slice(n, 7).concat(ws.slice(0, n));\n  }\n\n  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n      defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n      defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n      defaultWeekdaysRegex = matchWord,\n      defaultWeekdaysShortRegex = matchWord,\n      defaultWeekdaysMinRegex = matchWord;\n\n  function localeWeekdays(m, format) {\n    var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n    return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n  }\n\n  function localeWeekdaysShort(m) {\n    return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n  }\n\n  function localeWeekdaysMin(m) {\n    return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n  }\n\n  function handleStrictParse$1(weekdayName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = weekdayName.toLocaleLowerCase();\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._minWeekdaysParse = [];\n\n      for (i = 0; i < 7; ++i) {\n        mom = createUTC([2000, 1]).day(i);\n        this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n        this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n        this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n      }\n    }\n\n    if (strict) {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    } else {\n      if (format === 'dddd') {\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else if (format === 'ddd') {\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      } else {\n        ii = indexOf.call(this._minWeekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._weekdaysParse, llc);\n\n        if (ii !== -1) {\n          return ii;\n        }\n\n        ii = indexOf.call(this._shortWeekdaysParse, llc);\n        return ii !== -1 ? ii : null;\n      }\n    }\n  }\n\n  function localeWeekdaysParse(weekdayName, format, strict) {\n    var i, mom, regex;\n\n    if (this._weekdaysParseExact) {\n      return handleStrictParse$1.call(this, weekdayName, format, strict);\n    }\n\n    if (!this._weekdaysParse) {\n      this._weekdaysParse = [];\n      this._minWeekdaysParse = [];\n      this._shortWeekdaysParse = [];\n      this._fullWeekdaysParse = [];\n    }\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n\n      if (strict && !this._fullWeekdaysParse[i]) {\n        this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n        this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n      }\n\n      if (!this._weekdaysParse[i]) {\n        regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n      } // test the regex\n\n\n      if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n        return i;\n      } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n        return i;\n      }\n    }\n  } // MOMENTS\n\n\n  function getSetDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\n    if (input != null) {\n      input = parseWeekday(input, this.localeData());\n      return this.add(input - day, 'd');\n    } else {\n      return day;\n    }\n  }\n\n  function getSetLocaleDayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n    return input == null ? weekday : this.add(input - weekday, 'd');\n  }\n\n  function getSetISODayOfWeek(input) {\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    } // behaves the same as moment#day except\n    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n    // as a setter, sunday should belong to the previous week.\n\n\n    if (input != null) {\n      var weekday = parseIsoWeekday(input, this.localeData());\n      return this.day(this.day() % 7 ? weekday : weekday - 7);\n    } else {\n      return this.day() || 7;\n    }\n  }\n\n  function weekdaysRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysStrictRegex;\n      } else {\n        return this._weekdaysRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        this._weekdaysRegex = defaultWeekdaysRegex;\n      }\n\n      return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n    }\n  }\n\n  function weekdaysShortRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysShortStrictRegex;\n      } else {\n        return this._weekdaysShortRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n        this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n      }\n\n      return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n    }\n  }\n\n  function weekdaysMinRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n      if (!hasOwnProp(this, '_weekdaysRegex')) {\n        computeWeekdaysParse.call(this);\n      }\n\n      if (isStrict) {\n        return this._weekdaysMinStrictRegex;\n      } else {\n        return this._weekdaysMinRegex;\n      }\n    } else {\n      if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n        this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n      }\n\n      return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n    }\n  }\n\n  function computeWeekdaysParse() {\n    function cmpLenRev(a, b) {\n      return b.length - a.length;\n    }\n\n    var minPieces = [],\n        shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom,\n        minp,\n        shortp,\n        longp;\n\n    for (i = 0; i < 7; i++) {\n      // make the regex if we don't have it already\n      mom = createUTC([2000, 1]).day(i);\n      minp = regexEscape(this.weekdaysMin(mom, ''));\n      shortp = regexEscape(this.weekdaysShort(mom, ''));\n      longp = regexEscape(this.weekdays(mom, ''));\n      minPieces.push(minp);\n      shortPieces.push(shortp);\n      longPieces.push(longp);\n      mixedPieces.push(minp);\n      mixedPieces.push(shortp);\n      mixedPieces.push(longp);\n    } // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n    // will match the longer piece.\n\n\n    minPieces.sort(cmpLenRev);\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._weekdaysShortRegex = this._weekdaysRegex;\n    this._weekdaysMinRegex = this._weekdaysRegex;\n    this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n    this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  function hFormat() {\n    return this.hours() % 12 || 12;\n  }\n\n  function kFormat() {\n    return this.hours() || 24;\n  }\n\n  addFormatToken('H', ['HH', 2], 0, 'hour');\n  addFormatToken('h', ['hh', 2], 0, hFormat);\n  addFormatToken('k', ['kk', 2], 0, kFormat);\n  addFormatToken('hmm', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('hmmss', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n  addFormatToken('Hmm', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2);\n  });\n  addFormatToken('Hmmss', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n  });\n\n  function meridiem(token, lowercase) {\n    addFormatToken(token, 0, 0, function () {\n      return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n    });\n  }\n\n  meridiem('a', true);\n  meridiem('A', false); // ALIASES\n\n  addUnitAlias('hour', 'h'); // PRIORITY\n\n  addUnitPriority('hour', 13); // PARSING\n\n  function matchMeridiem(isStrict, locale) {\n    return locale._meridiemParse;\n  }\n\n  addRegexToken('a', matchMeridiem);\n  addRegexToken('A', matchMeridiem);\n  addRegexToken('H', match1to2);\n  addRegexToken('h', match1to2);\n  addRegexToken('k', match1to2);\n  addRegexToken('HH', match1to2, match2);\n  addRegexToken('hh', match1to2, match2);\n  addRegexToken('kk', match1to2, match2);\n  addRegexToken('hmm', match3to4);\n  addRegexToken('hmmss', match5to6);\n  addRegexToken('Hmm', match3to4);\n  addRegexToken('Hmmss', match5to6);\n  addParseToken(['H', 'HH'], HOUR);\n  addParseToken(['k', 'kk'], function (input, array, config) {\n    var kInput = toInt(input);\n    array[HOUR] = kInput === 24 ? 0 : kInput;\n  });\n  addParseToken(['a', 'A'], function (input, array, config) {\n    config._isPm = config._locale.isPM(input);\n    config._meridiem = input;\n  });\n  addParseToken(['h', 'hh'], function (input, array, config) {\n    array[HOUR] = toInt(input);\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('hmmss', function (input, array, config) {\n    var pos1 = input.length - 4,\n        pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n    getParsingFlags(config).bigHour = true;\n  });\n  addParseToken('Hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n  });\n  addParseToken('Hmmss', function (input, array, config) {\n    var pos1 = input.length - 4,\n        pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n  }); // LOCALES\n\n  function localeIsPM(input) {\n    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n    // Using charAt should be more compatible.\n    return (input + '').toLowerCase().charAt(0) === 'p';\n  }\n\n  var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n      // Setting the hour should keep the time, because the user explicitly\n  // specified which hour they want. So trying to maintain the same hour (in\n  // a new timezone) makes sense. Adding/subtracting hours does not follow\n  // this rule.\n  getSetHour = makeGetSet('Hours', true);\n\n  function localeMeridiem(hours, minutes, isLower) {\n    if (hours > 11) {\n      return isLower ? 'pm' : 'PM';\n    } else {\n      return isLower ? 'am' : 'AM';\n    }\n  }\n\n  var baseConfig = {\n    calendar: defaultCalendar,\n    longDateFormat: defaultLongDateFormat,\n    invalidDate: defaultInvalidDate,\n    ordinal: defaultOrdinal,\n    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n    relativeTime: defaultRelativeTime,\n    months: defaultLocaleMonths,\n    monthsShort: defaultLocaleMonthsShort,\n    week: defaultLocaleWeek,\n    weekdays: defaultLocaleWeekdays,\n    weekdaysMin: defaultLocaleWeekdaysMin,\n    weekdaysShort: defaultLocaleWeekdaysShort,\n    meridiemParse: defaultLocaleMeridiemParse\n  }; // internal storage for locale config files\n\n  var locales = {},\n      localeFamilies = {},\n      globalLocale;\n\n  function commonPrefix(arr1, arr2) {\n    var i,\n        minl = Math.min(arr1.length, arr2.length);\n\n    for (i = 0; i < minl; i += 1) {\n      if (arr1[i] !== arr2[i]) {\n        return i;\n      }\n    }\n\n    return minl;\n  }\n\n  function normalizeLocale(key) {\n    return key ? key.toLowerCase().replace('_', '-') : key;\n  } // pick the locale from the array\n  // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n  // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n\n\n  function chooseLocale(names) {\n    var i = 0,\n        j,\n        next,\n        locale,\n        split;\n\n    while (i < names.length) {\n      split = normalizeLocale(names[i]).split('-');\n      j = split.length;\n      next = normalizeLocale(names[i + 1]);\n      next = next ? next.split('-') : null;\n\n      while (j > 0) {\n        locale = loadLocale(split.slice(0, j).join('-'));\n\n        if (locale) {\n          return locale;\n        }\n\n        if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n          //the next array item is better than a shallower substring of this one\n          break;\n        }\n\n        j--;\n      }\n\n      i++;\n    }\n\n    return globalLocale;\n  }\n\n  function loadLocale(name) {\n    var oldLocale = null,\n        aliasedRequire; // TODO: Find a better way to register and load all the locales in Node\n\n    if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports) {\n      try {\n        oldLocale = globalLocale._abbr;\n        aliasedRequire = require;\n        aliasedRequire('./locale/' + name);\n        getSetGlobalLocale(oldLocale);\n      } catch (e) {\n        // mark as not found to avoid repeating expensive file require call causing high CPU\n        // when trying to find en-US, en_US, en-us for every format call\n        locales[name] = null; // null means not found\n      }\n    }\n\n    return locales[name];\n  } // This function will load locale and then set the global locale.  If\n  // no arguments are passed in, it will simply return the current global\n  // locale key.\n\n\n  function getSetGlobalLocale(key, values) {\n    var data;\n\n    if (key) {\n      if (isUndefined(values)) {\n        data = getLocale(key);\n      } else {\n        data = defineLocale(key, values);\n      }\n\n      if (data) {\n        // moment.duration._locale = moment._locale = data;\n        globalLocale = data;\n      } else {\n        if (typeof console !== 'undefined' && console.warn) {\n          //warn user if arguments are passed but the locale could not be set\n          console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n        }\n      }\n    }\n\n    return globalLocale._abbr;\n  }\n\n  function defineLocale(name, config) {\n    if (config !== null) {\n      var locale,\n          parentConfig = baseConfig;\n      config.abbr = name;\n\n      if (locales[name] != null) {\n        deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n        parentConfig = locales[name]._config;\n      } else if (config.parentLocale != null) {\n        if (locales[config.parentLocale] != null) {\n          parentConfig = locales[config.parentLocale]._config;\n        } else {\n          locale = loadLocale(config.parentLocale);\n\n          if (locale != null) {\n            parentConfig = locale._config;\n          } else {\n            if (!localeFamilies[config.parentLocale]) {\n              localeFamilies[config.parentLocale] = [];\n            }\n\n            localeFamilies[config.parentLocale].push({\n              name: name,\n              config: config\n            });\n            return null;\n          }\n        }\n      }\n\n      locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n      if (localeFamilies[name]) {\n        localeFamilies[name].forEach(function (x) {\n          defineLocale(x.name, x.config);\n        });\n      } // backwards compat for now: also set the locale\n      // make sure we set the locale AFTER all child locales have been\n      // created, so we won't end up with the child locale set.\n\n\n      getSetGlobalLocale(name);\n      return locales[name];\n    } else {\n      // useful for testing\n      delete locales[name];\n      return null;\n    }\n  }\n\n  function updateLocale(name, config) {\n    if (config != null) {\n      var locale,\n          tmpLocale,\n          parentConfig = baseConfig;\n\n      if (locales[name] != null && locales[name].parentLocale != null) {\n        // Update existing child locale in-place to avoid memory-leaks\n        locales[name].set(mergeConfigs(locales[name]._config, config));\n      } else {\n        // MERGE\n        tmpLocale = loadLocale(name);\n\n        if (tmpLocale != null) {\n          parentConfig = tmpLocale._config;\n        }\n\n        config = mergeConfigs(parentConfig, config);\n\n        if (tmpLocale == null) {\n          // updateLocale is called for creating a new locale\n          // Set abbr so it will have a name (getters return\n          // undefined otherwise).\n          config.abbr = name;\n        }\n\n        locale = new Locale(config);\n        locale.parentLocale = locales[name];\n        locales[name] = locale;\n      } // backwards compat for now: also set the locale\n\n\n      getSetGlobalLocale(name);\n    } else {\n      // pass null for config to unupdate, useful for tests\n      if (locales[name] != null) {\n        if (locales[name].parentLocale != null) {\n          locales[name] = locales[name].parentLocale;\n\n          if (name === getSetGlobalLocale()) {\n            getSetGlobalLocale(name);\n          }\n        } else if (locales[name] != null) {\n          delete locales[name];\n        }\n      }\n    }\n\n    return locales[name];\n  } // returns locale data\n\n\n  function getLocale(key) {\n    var locale;\n\n    if (key && key._locale && key._locale._abbr) {\n      key = key._locale._abbr;\n    }\n\n    if (!key) {\n      return globalLocale;\n    }\n\n    if (!isArray(key)) {\n      //short-circuit everything else\n      locale = loadLocale(key);\n\n      if (locale) {\n        return locale;\n      }\n\n      key = [key];\n    }\n\n    return chooseLocale(key);\n  }\n\n  function listLocales() {\n    return keys(locales);\n  }\n\n  function checkOverflow(m) {\n    var overflow,\n        a = m._a;\n\n    if (a && getParsingFlags(m).overflow === -2) {\n      overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n      if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n        overflow = DATE;\n      }\n\n      if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n        overflow = WEEK;\n      }\n\n      if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n        overflow = WEEKDAY;\n      }\n\n      getParsingFlags(m).overflow = overflow;\n    }\n\n    return m;\n  } // iso 8601 regex\n  // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n\n\n  var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n      basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n      tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n      isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n      // iso time formats and regexes\n  isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n      aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n      // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n  rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n      obsOffsets = {\n    UT: 0,\n    GMT: 0,\n    EDT: -4 * 60,\n    EST: -5 * 60,\n    CDT: -5 * 60,\n    CST: -6 * 60,\n    MDT: -6 * 60,\n    MST: -7 * 60,\n    PDT: -7 * 60,\n    PST: -8 * 60\n  }; // date from iso format\n\n  function configFromISO(config) {\n    var i,\n        l,\n        string = config._i,\n        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n        allowTime,\n        dateFormat,\n        timeFormat,\n        tzFormat;\n\n    if (match) {\n      getParsingFlags(config).iso = true;\n\n      for (i = 0, l = isoDates.length; i < l; i++) {\n        if (isoDates[i][1].exec(match[1])) {\n          dateFormat = isoDates[i][0];\n          allowTime = isoDates[i][2] !== false;\n          break;\n        }\n      }\n\n      if (dateFormat == null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[3]) {\n        for (i = 0, l = isoTimes.length; i < l; i++) {\n          if (isoTimes[i][1].exec(match[3])) {\n            // match[2] should be 'T' or space\n            timeFormat = (match[2] || ' ') + isoTimes[i][0];\n            break;\n          }\n        }\n\n        if (timeFormat == null) {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      if (!allowTime && timeFormat != null) {\n        config._isValid = false;\n        return;\n      }\n\n      if (match[4]) {\n        if (tzRegex.exec(match[4])) {\n          tzFormat = 'Z';\n        } else {\n          config._isValid = false;\n          return;\n        }\n      }\n\n      config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n      configFromStringAndFormat(config);\n    } else {\n      config._isValid = false;\n    }\n  }\n\n  function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n    var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n\n    if (secondStr) {\n      result.push(parseInt(secondStr, 10));\n    }\n\n    return result;\n  }\n\n  function untruncateYear(yearStr) {\n    var year = parseInt(yearStr, 10);\n\n    if (year <= 49) {\n      return 2000 + year;\n    } else if (year <= 999) {\n      return 1900 + year;\n    }\n\n    return year;\n  }\n\n  function preprocessRFC2822(s) {\n    // Remove comments and folding whitespace and replace multiple-spaces with a single space\n    return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n  }\n\n  function checkWeekday(weekdayStr, parsedInput, config) {\n    if (weekdayStr) {\n      // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n      var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n          weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n\n      if (weekdayProvided !== weekdayActual) {\n        getParsingFlags(config).weekdayMismatch = true;\n        config._isValid = false;\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  function calculateOffset(obsOffset, militaryOffset, numOffset) {\n    if (obsOffset) {\n      return obsOffsets[obsOffset];\n    } else if (militaryOffset) {\n      // the only allowed military tz is Z\n      return 0;\n    } else {\n      var hm = parseInt(numOffset, 10),\n          m = hm % 100,\n          h = (hm - m) / 100;\n      return h * 60 + m;\n    }\n  } // date and time from ref 2822 format\n\n\n  function configFromRFC2822(config) {\n    var match = rfc2822.exec(preprocessRFC2822(config._i)),\n        parsedArray;\n\n    if (match) {\n      parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n\n      if (!checkWeekday(match[1], parsedArray, config)) {\n        return;\n      }\n\n      config._a = parsedArray;\n      config._tzm = calculateOffset(match[8], match[9], match[10]);\n      config._d = createUTCDate.apply(null, config._a);\n\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n      getParsingFlags(config).rfc2822 = true;\n    } else {\n      config._isValid = false;\n    }\n  } // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n\n\n  function configFromString(config) {\n    var matched = aspNetJsonRegex.exec(config._i);\n\n    if (matched !== null) {\n      config._d = new Date(+matched[1]);\n      return;\n    }\n\n    configFromISO(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    }\n\n    configFromRFC2822(config);\n\n    if (config._isValid === false) {\n      delete config._isValid;\n    } else {\n      return;\n    }\n\n    if (config._strict) {\n      config._isValid = false;\n    } else {\n      // Final attempt, use Input Fallback\n      hooks.createFromInputFallback(config);\n    }\n  }\n\n  hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged and will be removed in an upcoming major release. Please refer to ' + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n    config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n  }); // Pick the first defined of two or three arguments.\n\n  function defaults(a, b, c) {\n    if (a != null) {\n      return a;\n    }\n\n    if (b != null) {\n      return b;\n    }\n\n    return c;\n  }\n\n  function currentDateArray(config) {\n    // hooks is actually the exported moment object\n    var nowValue = new Date(hooks.now());\n\n    if (config._useUTC) {\n      return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n    }\n\n    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n  } // convert an array to a date.\n  // the array should mirror the parameters below\n  // note: all values past the year are optional and will default to the lowest possible value.\n  // [year, month, day , hour, minute, second, millisecond]\n\n\n  function configFromArray(config) {\n    var i,\n        date,\n        input = [],\n        currentDate,\n        expectedWeekday,\n        yearToUse;\n\n    if (config._d) {\n      return;\n    }\n\n    currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays\n\n    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n      dayOfYearFromWeekInfo(config);\n    } //if the day of the year is set, figure out what it is\n\n\n    if (config._dayOfYear != null) {\n      yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n      if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n        getParsingFlags(config)._overflowDayOfYear = true;\n      }\n\n      date = createUTCDate(yearToUse, 0, config._dayOfYear);\n      config._a[MONTH] = date.getUTCMonth();\n      config._a[DATE] = date.getUTCDate();\n    } // Default to current date.\n    // * if no year, month, day of month are given, default to today\n    // * if day of month is given, default month and year\n    // * if month is given, default only year\n    // * if year is given, don't default anything\n\n\n    for (i = 0; i < 3 && config._a[i] == null; ++i) {\n      config._a[i] = input[i] = currentDate[i];\n    } // Zero out whatever was not defaulted, including time\n\n\n    for (; i < 7; i++) {\n      config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n    } // Check for 24:00:00.000\n\n\n    if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n      config._nextDay = true;\n      config._a[HOUR] = 0;\n    }\n\n    config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n    expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed\n    // with parseZone.\n\n    if (config._tzm != null) {\n      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n    }\n\n    if (config._nextDay) {\n      config._a[HOUR] = 24;\n    } // check for mismatching day of week\n\n\n    if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n      getParsingFlags(config).weekdayMismatch = true;\n    }\n  }\n\n  function dayOfYearFromWeekInfo(config) {\n    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n    w = config._w;\n\n    if (w.GG != null || w.W != null || w.E != null) {\n      dow = 1;\n      doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on\n      // how we interpret now (local, utc, fixed offset). So create\n      // a now version of current config (take local/utc/offset flags, and\n      // create now).\n\n      weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n      week = defaults(w.W, 1);\n      weekday = defaults(w.E, 1);\n\n      if (weekday < 1 || weekday > 7) {\n        weekdayOverflow = true;\n      }\n    } else {\n      dow = config._locale._week.dow;\n      doy = config._locale._week.doy;\n      curWeek = weekOfYear(createLocal(), dow, doy);\n      weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.\n\n      week = defaults(w.w, curWeek.week);\n\n      if (w.d != null) {\n        // weekday -- low day numbers are considered next week\n        weekday = w.d;\n\n        if (weekday < 0 || weekday > 6) {\n          weekdayOverflow = true;\n        }\n      } else if (w.e != null) {\n        // local weekday -- counting starts from beginning of week\n        weekday = w.e + dow;\n\n        if (w.e < 0 || w.e > 6) {\n          weekdayOverflow = true;\n        }\n      } else {\n        // default to beginning of week\n        weekday = dow;\n      }\n    }\n\n    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n      getParsingFlags(config)._overflowWeeks = true;\n    } else if (weekdayOverflow != null) {\n      getParsingFlags(config)._overflowWeekday = true;\n    } else {\n      temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n      config._a[YEAR] = temp.year;\n      config._dayOfYear = temp.dayOfYear;\n    }\n  } // constant that refers to the ISO standard\n\n\n  hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form\n\n\n  hooks.RFC_2822 = function () {}; // date from string and format string\n\n\n  function configFromStringAndFormat(config) {\n    // TODO: Move this to another part of the creation flow to prevent circular deps\n    if (config._f === hooks.ISO_8601) {\n      configFromISO(config);\n      return;\n    }\n\n    if (config._f === hooks.RFC_2822) {\n      configFromRFC2822(config);\n      return;\n    }\n\n    config._a = [];\n    getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n    var string = '' + config._i,\n        i,\n        parsedInput,\n        tokens,\n        token,\n        skipped,\n        stringLength = string.length,\n        totalParsedInputLength = 0,\n        era;\n    tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n    for (i = 0; i < tokens.length; i++) {\n      token = tokens[i];\n      parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n\n      if (parsedInput) {\n        skipped = string.substr(0, string.indexOf(parsedInput));\n\n        if (skipped.length > 0) {\n          getParsingFlags(config).unusedInput.push(skipped);\n        }\n\n        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n        totalParsedInputLength += parsedInput.length;\n      } // don't parse if it's not a known token\n\n\n      if (formatTokenFunctions[token]) {\n        if (parsedInput) {\n          getParsingFlags(config).empty = false;\n        } else {\n          getParsingFlags(config).unusedTokens.push(token);\n        }\n\n        addTimeToArrayFromToken(token, parsedInput, config);\n      } else if (config._strict && !parsedInput) {\n        getParsingFlags(config).unusedTokens.push(token);\n      }\n    } // add remaining unparsed input length to the string\n\n\n    getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n\n    if (string.length > 0) {\n      getParsingFlags(config).unusedInput.push(string);\n    } // clear _12h flag if hour is <= 12\n\n\n    if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n      getParsingFlags(config).bigHour = undefined;\n    }\n\n    getParsingFlags(config).parsedDateParts = config._a.slice(0);\n    getParsingFlags(config).meridiem = config._meridiem; // handle meridiem\n\n    config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); // handle era\n\n    era = getParsingFlags(config).era;\n\n    if (era !== null) {\n      config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n    }\n\n    configFromArray(config);\n    checkOverflow(config);\n  }\n\n  function meridiemFixWrap(locale, hour, meridiem) {\n    var isPm;\n\n    if (meridiem == null) {\n      // nothing to do\n      return hour;\n    }\n\n    if (locale.meridiemHour != null) {\n      return locale.meridiemHour(hour, meridiem);\n    } else if (locale.isPM != null) {\n      // Fallback\n      isPm = locale.isPM(meridiem);\n\n      if (isPm && hour < 12) {\n        hour += 12;\n      }\n\n      if (!isPm && hour === 12) {\n        hour = 0;\n      }\n\n      return hour;\n    } else {\n      // this is not supposed to happen\n      return hour;\n    }\n  } // date from string and array of format strings\n\n\n  function configFromStringAndArray(config) {\n    var tempConfig,\n        bestMoment,\n        scoreToBeat,\n        i,\n        currentScore,\n        validFormatFound,\n        bestFormatIsValid = false;\n\n    if (config._f.length === 0) {\n      getParsingFlags(config).invalidFormat = true;\n      config._d = new Date(NaN);\n      return;\n    }\n\n    for (i = 0; i < config._f.length; i++) {\n      currentScore = 0;\n      validFormatFound = false;\n      tempConfig = copyConfig({}, config);\n\n      if (config._useUTC != null) {\n        tempConfig._useUTC = config._useUTC;\n      }\n\n      tempConfig._f = config._f[i];\n      configFromStringAndFormat(tempConfig);\n\n      if (isValid(tempConfig)) {\n        validFormatFound = true;\n      } // if there is any input that was not parsed add a penalty for that format\n\n\n      currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens\n\n      currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n      getParsingFlags(tempConfig).score = currentScore;\n\n      if (!bestFormatIsValid) {\n        if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n          scoreToBeat = currentScore;\n          bestMoment = tempConfig;\n\n          if (validFormatFound) {\n            bestFormatIsValid = true;\n          }\n        }\n      } else {\n        if (currentScore < scoreToBeat) {\n          scoreToBeat = currentScore;\n          bestMoment = tempConfig;\n        }\n      }\n    }\n\n    extend(config, bestMoment || tempConfig);\n  }\n\n  function configFromObject(config) {\n    if (config._d) {\n      return;\n    }\n\n    var i = normalizeObjectUnits(config._i),\n        dayOrDate = i.day === undefined ? i.date : i.day;\n    config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n      return obj && parseInt(obj, 10);\n    });\n    configFromArray(config);\n  }\n\n  function createFromConfig(config) {\n    var res = new Moment(checkOverflow(prepareConfig(config)));\n\n    if (res._nextDay) {\n      // Adding is smart enough around DST\n      res.add(1, 'd');\n      res._nextDay = undefined;\n    }\n\n    return res;\n  }\n\n  function prepareConfig(config) {\n    var input = config._i,\n        format = config._f;\n    config._locale = config._locale || getLocale(config._l);\n\n    if (input === null || format === undefined && input === '') {\n      return createInvalid({\n        nullInput: true\n      });\n    }\n\n    if (typeof input === 'string') {\n      config._i = input = config._locale.preparse(input);\n    }\n\n    if (isMoment(input)) {\n      return new Moment(checkOverflow(input));\n    } else if (isDate(input)) {\n      config._d = input;\n    } else if (isArray(format)) {\n      configFromStringAndArray(config);\n    } else if (format) {\n      configFromStringAndFormat(config);\n    } else {\n      configFromInput(config);\n    }\n\n    if (!isValid(config)) {\n      config._d = null;\n    }\n\n    return config;\n  }\n\n  function configFromInput(config) {\n    var input = config._i;\n\n    if (isUndefined(input)) {\n      config._d = new Date(hooks.now());\n    } else if (isDate(input)) {\n      config._d = new Date(input.valueOf());\n    } else if (typeof input === 'string') {\n      configFromString(config);\n    } else if (isArray(input)) {\n      config._a = map(input.slice(0), function (obj) {\n        return parseInt(obj, 10);\n      });\n      configFromArray(config);\n    } else if (isObject(input)) {\n      configFromObject(config);\n    } else if (isNumber(input)) {\n      // from milliseconds\n      config._d = new Date(input);\n    } else {\n      hooks.createFromInputFallback(config);\n    }\n  }\n\n  function createLocalOrUTC(input, format, locale, strict, isUTC) {\n    var c = {};\n\n    if (format === true || format === false) {\n      strict = format;\n      format = undefined;\n    }\n\n    if (locale === true || locale === false) {\n      strict = locale;\n      locale = undefined;\n    }\n\n    if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n      input = undefined;\n    } // object construction must be done this way.\n    // https://github.com/moment/moment/issues/1423\n\n\n    c._isAMomentObject = true;\n    c._useUTC = c._isUTC = isUTC;\n    c._l = locale;\n    c._i = input;\n    c._f = format;\n    c._strict = strict;\n    return createFromConfig(c);\n  }\n\n  function createLocal(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, false);\n  }\n\n  var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other < this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  }),\n      prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n    var other = createLocal.apply(null, arguments);\n\n    if (this.isValid() && other.isValid()) {\n      return other > this ? this : other;\n    } else {\n      return createInvalid();\n    }\n  }); // Pick a moment m from moments so that m[fn](other) is true for all\n  // other. This relies on the function fn to be transitive.\n  //\n  // moments should either be an array of moment objects or an array, whose\n  // first element is an array of moment objects.\n\n  function pickBy(fn, moments) {\n    var res, i;\n\n    if (moments.length === 1 && isArray(moments[0])) {\n      moments = moments[0];\n    }\n\n    if (!moments.length) {\n      return createLocal();\n    }\n\n    res = moments[0];\n\n    for (i = 1; i < moments.length; ++i) {\n      if (!moments[i].isValid() || moments[i][fn](res)) {\n        res = moments[i];\n      }\n    }\n\n    return res;\n  } // TODO: Use [].sort instead?\n\n\n  function min() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isBefore', args);\n  }\n\n  function max() {\n    var args = [].slice.call(arguments, 0);\n    return pickBy('isAfter', args);\n  }\n\n  var now = function now() {\n    return Date.now ? Date.now() : +new Date();\n  };\n\n  var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n  function isDurationValid(m) {\n    var key,\n        unitHasDecimal = false,\n        i;\n\n    for (key in m) {\n      if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n        return false;\n      }\n    }\n\n    for (i = 0; i < ordering.length; ++i) {\n      if (m[ordering[i]]) {\n        if (unitHasDecimal) {\n          return false; // only allow non-integers for smallest unit\n        }\n\n        if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n          unitHasDecimal = true;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  function isValid$1() {\n    return this._isValid;\n  }\n\n  function createInvalid$1() {\n    return createDuration(NaN);\n  }\n\n  function Duration(duration) {\n    var normalizedInput = normalizeObjectUnits(duration),\n        years = normalizedInput.year || 0,\n        quarters = normalizedInput.quarter || 0,\n        months = normalizedInput.month || 0,\n        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n        days = normalizedInput.day || 0,\n        hours = normalizedInput.hour || 0,\n        minutes = normalizedInput.minute || 0,\n        seconds = normalizedInput.second || 0,\n        milliseconds = normalizedInput.millisecond || 0;\n    this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove\n\n    this._milliseconds = +milliseconds + seconds * 1e3 + // 1000\n    minutes * 6e4 + // 1000 * 60\n    hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n    // Because of dateAddRemove treats 24 hours as different from a\n    // day when working around DST, we need to store them separately\n\n    this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing\n    // which months you are are talking about, so we have to store\n    // it separately.\n\n    this._months = +months + quarters * 3 + years * 12;\n    this._data = {};\n    this._locale = getLocale();\n\n    this._bubble();\n  }\n\n  function isDuration(obj) {\n    return obj instanceof Duration;\n  }\n\n  function absRound(number) {\n    if (number < 0) {\n      return Math.round(-1 * number) * -1;\n    } else {\n      return Math.round(number);\n    }\n  } // compare two arrays, return the number of differences\n\n\n  function compareArrays(array1, array2, dontConvert) {\n    var len = Math.min(array1.length, array2.length),\n        lengthDiff = Math.abs(array1.length - array2.length),\n        diffs = 0,\n        i;\n\n    for (i = 0; i < len; i++) {\n      if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n        diffs++;\n      }\n    }\n\n    return diffs + lengthDiff;\n  } // FORMATTING\n\n\n  function offset(token, separator) {\n    addFormatToken(token, 0, 0, function () {\n      var offset = this.utcOffset(),\n          sign = '+';\n\n      if (offset < 0) {\n        offset = -offset;\n        sign = '-';\n      }\n\n      return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n    });\n  }\n\n  offset('Z', ':');\n  offset('ZZ', ''); // PARSING\n\n  addRegexToken('Z', matchShortOffset);\n  addRegexToken('ZZ', matchShortOffset);\n  addParseToken(['Z', 'ZZ'], function (input, array, config) {\n    config._useUTC = true;\n    config._tzm = offsetFromString(matchShortOffset, input);\n  }); // HELPERS\n  // timezone chunker\n  // '+10:00' > ['10',  '00']\n  // '-1530'  > ['-15', '30']\n\n  var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n  function offsetFromString(matcher, string) {\n    var matches = (string || '').match(matcher),\n        chunk,\n        parts,\n        minutes;\n\n    if (matches === null) {\n      return null;\n    }\n\n    chunk = matches[matches.length - 1] || [];\n    parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n    minutes = +(parts[1] * 60) + toInt(parts[2]);\n    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n  } // Return a moment from input, that is local/utc/zone equivalent to model.\n\n\n  function cloneWithOffset(input, model) {\n    var res, diff;\n\n    if (model._isUTC) {\n      res = model.clone();\n      diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.\n\n      res._d.setTime(res._d.valueOf() + diff);\n\n      hooks.updateOffset(res, false);\n      return res;\n    } else {\n      return createLocal(input).local();\n    }\n  }\n\n  function getDateOffset(m) {\n    // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n    // https://github.com/moment/moment/pull/1871\n    return -Math.round(m._d.getTimezoneOffset());\n  } // HOOKS\n  // This function will be called whenever a moment is mutated.\n  // It is intended to keep the offset in sync with the timezone.\n\n\n  hooks.updateOffset = function () {}; // MOMENTS\n  // keepLocalTime = true means only change the timezone, without\n  // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n  // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n  // +0200, so we adjust the time as needed, to be valid.\n  //\n  // Keeping the time actually adds/subtracts (one hour)\n  // from the actual represented time. That is why we call updateOffset\n  // a second time. In case it wants us to change the offset again\n  // _changeInProgress == true case, then we have to adjust, because\n  // there is no such time in the given timezone.\n\n\n  function getSetOffset(input, keepLocalTime, keepMinutes) {\n    var offset = this._offset || 0,\n        localAdjust;\n\n    if (!this.isValid()) {\n      return input != null ? this : NaN;\n    }\n\n    if (input != null) {\n      if (typeof input === 'string') {\n        input = offsetFromString(matchShortOffset, input);\n\n        if (input === null) {\n          return this;\n        }\n      } else if (Math.abs(input) < 16 && !keepMinutes) {\n        input = input * 60;\n      }\n\n      if (!this._isUTC && keepLocalTime) {\n        localAdjust = getDateOffset(this);\n      }\n\n      this._offset = input;\n      this._isUTC = true;\n\n      if (localAdjust != null) {\n        this.add(localAdjust, 'm');\n      }\n\n      if (offset !== input) {\n        if (!keepLocalTime || this._changeInProgress) {\n          addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n        } else if (!this._changeInProgress) {\n          this._changeInProgress = true;\n          hooks.updateOffset(this, true);\n          this._changeInProgress = null;\n        }\n      }\n\n      return this;\n    } else {\n      return this._isUTC ? offset : getDateOffset(this);\n    }\n  }\n\n  function getSetZone(input, keepLocalTime) {\n    if (input != null) {\n      if (typeof input !== 'string') {\n        input = -input;\n      }\n\n      this.utcOffset(input, keepLocalTime);\n      return this;\n    } else {\n      return -this.utcOffset();\n    }\n  }\n\n  function setOffsetToUTC(keepLocalTime) {\n    return this.utcOffset(0, keepLocalTime);\n  }\n\n  function setOffsetToLocal(keepLocalTime) {\n    if (this._isUTC) {\n      this.utcOffset(0, keepLocalTime);\n      this._isUTC = false;\n\n      if (keepLocalTime) {\n        this.subtract(getDateOffset(this), 'm');\n      }\n    }\n\n    return this;\n  }\n\n  function setOffsetToParsedOffset() {\n    if (this._tzm != null) {\n      this.utcOffset(this._tzm, false, true);\n    } else if (typeof this._i === 'string') {\n      var tZone = offsetFromString(matchOffset, this._i);\n\n      if (tZone != null) {\n        this.utcOffset(tZone);\n      } else {\n        this.utcOffset(0, true);\n      }\n    }\n\n    return this;\n  }\n\n  function hasAlignedHourOffset(input) {\n    if (!this.isValid()) {\n      return false;\n    }\n\n    input = input ? createLocal(input).utcOffset() : 0;\n    return (this.utcOffset() - input) % 60 === 0;\n  }\n\n  function isDaylightSavingTime() {\n    return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n  }\n\n  function isDaylightSavingTimeShifted() {\n    if (!isUndefined(this._isDSTShifted)) {\n      return this._isDSTShifted;\n    }\n\n    var c = {},\n        other;\n    copyConfig(c, this);\n    c = prepareConfig(c);\n\n    if (c._a) {\n      other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n      this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n    } else {\n      this._isDSTShifted = false;\n    }\n\n    return this._isDSTShifted;\n  }\n\n  function isLocal() {\n    return this.isValid() ? !this._isUTC : false;\n  }\n\n  function isUtcOffset() {\n    return this.isValid() ? this._isUTC : false;\n  }\n\n  function isUtc() {\n    return this.isValid() ? this._isUTC && this._offset === 0 : false;\n  } // ASP.NET json date format regex\n\n\n  var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n      // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n  // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n  // and further modified to allow for strings containing both week and day\n  isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n  function createDuration(input, key) {\n    var duration = input,\n        // matching against regexp is expensive, do it on demand\n    match = null,\n        sign,\n        ret,\n        diffRes;\n\n    if (isDuration(input)) {\n      duration = {\n        ms: input._milliseconds,\n        d: input._days,\n        M: input._months\n      };\n    } else if (isNumber(input) || !isNaN(+input)) {\n      duration = {};\n\n      if (key) {\n        duration[key] = +input;\n      } else {\n        duration.milliseconds = +input;\n      }\n    } else if (match = aspNetRegex.exec(input)) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: 0,\n        d: toInt(match[DATE]) * sign,\n        h: toInt(match[HOUR]) * sign,\n        m: toInt(match[MINUTE]) * sign,\n        s: toInt(match[SECOND]) * sign,\n        ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n\n      };\n    } else if (match = isoRegex.exec(input)) {\n      sign = match[1] === '-' ? -1 : 1;\n      duration = {\n        y: parseIso(match[2], sign),\n        M: parseIso(match[3], sign),\n        w: parseIso(match[4], sign),\n        d: parseIso(match[5], sign),\n        h: parseIso(match[6], sign),\n        m: parseIso(match[7], sign),\n        s: parseIso(match[8], sign)\n      };\n    } else if (duration == null) {\n      // checks for null or undefined\n      duration = {};\n    } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n      diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n      duration = {};\n      duration.ms = diffRes.milliseconds;\n      duration.M = diffRes.months;\n    }\n\n    ret = new Duration(duration);\n\n    if (isDuration(input) && hasOwnProp(input, '_locale')) {\n      ret._locale = input._locale;\n    }\n\n    if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n      ret._isValid = input._isValid;\n    }\n\n    return ret;\n  }\n\n  createDuration.fn = Duration.prototype;\n  createDuration.invalid = createInvalid$1;\n\n  function parseIso(inp, sign) {\n    // We'd normally use ~~inp for this, but unfortunately it also\n    // converts floats to ints.\n    // inp may be undefined, so careful calling replace on it.\n    var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it\n\n    return (isNaN(res) ? 0 : res) * sign;\n  }\n\n  function positiveMomentsDifference(base, other) {\n    var res = {};\n    res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n\n    if (base.clone().add(res.months, 'M').isAfter(other)) {\n      --res.months;\n    }\n\n    res.milliseconds = +other - +base.clone().add(res.months, 'M');\n    return res;\n  }\n\n  function momentsDifference(base, other) {\n    var res;\n\n    if (!(base.isValid() && other.isValid())) {\n      return {\n        milliseconds: 0,\n        months: 0\n      };\n    }\n\n    other = cloneWithOffset(other, base);\n\n    if (base.isBefore(other)) {\n      res = positiveMomentsDifference(base, other);\n    } else {\n      res = positiveMomentsDifference(other, base);\n      res.milliseconds = -res.milliseconds;\n      res.months = -res.months;\n    }\n\n    return res;\n  } // TODO: remove 'name' arg after deprecation is removed\n\n\n  function createAdder(direction, name) {\n    return function (val, period) {\n      var dur, tmp; //invert the arguments, but complain about it\n\n      if (period !== null && !isNaN(+period)) {\n        deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n        tmp = val;\n        val = period;\n        period = tmp;\n      }\n\n      dur = createDuration(val, period);\n      addSubtract(this, dur, direction);\n      return this;\n    };\n  }\n\n  function addSubtract(mom, duration, isAdding, updateOffset) {\n    var milliseconds = duration._milliseconds,\n        days = absRound(duration._days),\n        months = absRound(duration._months);\n\n    if (!mom.isValid()) {\n      // No op\n      return;\n    }\n\n    updateOffset = updateOffset == null ? true : updateOffset;\n\n    if (months) {\n      setMonth(mom, get(mom, 'Month') + months * isAdding);\n    }\n\n    if (days) {\n      set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n    }\n\n    if (milliseconds) {\n      mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n    }\n\n    if (updateOffset) {\n      hooks.updateOffset(mom, days || months);\n    }\n  }\n\n  var add = createAdder(1, 'add'),\n      subtract = createAdder(-1, 'subtract');\n\n  function isString(input) {\n    return typeof input === 'string' || input instanceof String;\n  } // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n\n\n  function isMomentInput(input) {\n    return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n  }\n\n  function isMomentInputObject(input) {\n    var objectTest = isObject(input) && !isObjectEmpty(input),\n        propertyTest = false,\n        properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n        i,\n        property;\n\n    for (i = 0; i < properties.length; i += 1) {\n      property = properties[i];\n      propertyTest = propertyTest || hasOwnProp(input, property);\n    }\n\n    return objectTest && propertyTest;\n  }\n\n  function isNumberOrStringArray(input) {\n    var arrayTest = isArray(input),\n        dataTypeTest = false;\n\n    if (arrayTest) {\n      dataTypeTest = input.filter(function (item) {\n        return !isNumber(item) && isString(input);\n      }).length === 0;\n    }\n\n    return arrayTest && dataTypeTest;\n  }\n\n  function isCalendarSpec(input) {\n    var objectTest = isObject(input) && !isObjectEmpty(input),\n        propertyTest = false,\n        properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n        i,\n        property;\n\n    for (i = 0; i < properties.length; i += 1) {\n      property = properties[i];\n      propertyTest = propertyTest || hasOwnProp(input, property);\n    }\n\n    return objectTest && propertyTest;\n  }\n\n  function getCalendarFormat(myMoment, now) {\n    var diff = myMoment.diff(now, 'days', true);\n    return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n  }\n\n  function calendar$1(time, formats) {\n    // Support for single parameter, formats only overload to the calendar function\n    if (arguments.length === 1) {\n      if (isMomentInput(arguments[0])) {\n        time = arguments[0];\n        formats = undefined;\n      } else if (isCalendarSpec(arguments[0])) {\n        formats = arguments[0];\n        time = undefined;\n      }\n    } // We want to compare the start of today, vs this.\n    // Getting start-of-today depends on whether we're local/utc/offset or not.\n\n\n    var now = time || createLocal(),\n        sod = cloneWithOffset(now, this).startOf('day'),\n        format = hooks.calendarFormat(this, sod) || 'sameElse',\n        output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n    return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n  }\n\n  function clone() {\n    return new Moment(this);\n  }\n\n  function isAfter(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() > localInput.valueOf();\n    } else {\n      return localInput.valueOf() < this.clone().startOf(units).valueOf();\n    }\n  }\n\n  function isBefore(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() < localInput.valueOf();\n    } else {\n      return this.clone().endOf(units).valueOf() < localInput.valueOf();\n    }\n  }\n\n  function isBetween(from, to, units, inclusivity) {\n    var localFrom = isMoment(from) ? from : createLocal(from),\n        localTo = isMoment(to) ? to : createLocal(to);\n\n    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n      return false;\n    }\n\n    inclusivity = inclusivity || '()';\n    return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n  }\n\n  function isSame(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input),\n        inputMs;\n\n    if (!(this.isValid() && localInput.isValid())) {\n      return false;\n    }\n\n    units = normalizeUnits(units) || 'millisecond';\n\n    if (units === 'millisecond') {\n      return this.valueOf() === localInput.valueOf();\n    } else {\n      inputMs = localInput.valueOf();\n      return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n    }\n  }\n\n  function isSameOrAfter(input, units) {\n    return this.isSame(input, units) || this.isAfter(input, units);\n  }\n\n  function isSameOrBefore(input, units) {\n    return this.isSame(input, units) || this.isBefore(input, units);\n  }\n\n  function diff(input, units, asFloat) {\n    var that, zoneDelta, output;\n\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    that = cloneWithOffset(input, this);\n\n    if (!that.isValid()) {\n      return NaN;\n    }\n\n    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n    units = normalizeUnits(units);\n\n    switch (units) {\n      case 'year':\n        output = monthDiff(this, that) / 12;\n        break;\n\n      case 'month':\n        output = monthDiff(this, that);\n        break;\n\n      case 'quarter':\n        output = monthDiff(this, that) / 3;\n        break;\n\n      case 'second':\n        output = (this - that) / 1e3;\n        break;\n      // 1000\n\n      case 'minute':\n        output = (this - that) / 6e4;\n        break;\n      // 1000 * 60\n\n      case 'hour':\n        output = (this - that) / 36e5;\n        break;\n      // 1000 * 60 * 60\n\n      case 'day':\n        output = (this - that - zoneDelta) / 864e5;\n        break;\n      // 1000 * 60 * 60 * 24, negate dst\n\n      case 'week':\n        output = (this - that - zoneDelta) / 6048e5;\n        break;\n      // 1000 * 60 * 60 * 24 * 7, negate dst\n\n      default:\n        output = this - that;\n    }\n\n    return asFloat ? output : absFloor(output);\n  }\n\n  function monthDiff(a, b) {\n    if (a.date() < b.date()) {\n      // end-of-month calculations work correct when the start month has more\n      // days than the end month.\n      return -monthDiff(b, a);\n    } // difference in months\n\n\n    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n        // b is in (anchor - 1 month, anchor + 1 month)\n    anchor = a.clone().add(wholeMonthDiff, 'months'),\n        anchor2,\n        adjust;\n\n    if (b - anchor < 0) {\n      anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor - anchor2);\n    } else {\n      anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month\n\n      adjust = (b - anchor) / (anchor2 - anchor);\n    } //check for negative zero, return zero if negative zero\n\n\n    return -(wholeMonthDiff + adjust) || 0;\n  }\n\n  hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n  hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n  function toString() {\n    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n  }\n\n  function toISOString(keepOffset) {\n    if (!this.isValid()) {\n      return null;\n    }\n\n    var utc = keepOffset !== true,\n        m = utc ? this.clone().utc() : this;\n\n    if (m.year() < 0 || m.year() > 9999) {\n      return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    if (isFunction(Date.prototype.toISOString)) {\n      // native implementation is ~50x faster, use it when we can\n      if (utc) {\n        return this.toDate().toISOString();\n      } else {\n        return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n      }\n    }\n\n    return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n  }\n  /**\n   * Return a human readable representation of a moment that can\n   * also be evaluated to get a new moment which is the same\n   *\n   * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n   */\n\n\n  function inspect() {\n    if (!this.isValid()) {\n      return 'moment.invalid(/* ' + this._i + ' */)';\n    }\n\n    var func = 'moment',\n        zone = '',\n        prefix,\n        year,\n        datetime,\n        suffix;\n\n    if (!this.isLocal()) {\n      func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n      zone = 'Z';\n    }\n\n    prefix = '[' + func + '(\"]';\n    year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n    datetime = '-MM-DD[T]HH:mm:ss.SSS';\n    suffix = zone + '[\")]';\n    return this.format(prefix + year + datetime + suffix);\n  }\n\n  function format(inputString) {\n    if (!inputString) {\n      inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n    }\n\n    var output = formatMoment(this, inputString);\n    return this.localeData().postformat(output);\n  }\n\n  function from(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        to: this,\n        from: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function fromNow(withoutSuffix) {\n    return this.from(createLocal(), withoutSuffix);\n  }\n\n  function to(time, withoutSuffix) {\n    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n      return createDuration({\n        from: this,\n        to: time\n      }).locale(this.locale()).humanize(!withoutSuffix);\n    } else {\n      return this.localeData().invalidDate();\n    }\n  }\n\n  function toNow(withoutSuffix) {\n    return this.to(createLocal(), withoutSuffix);\n  } // If passed a locale key, it will set the locale for this\n  // instance.  Otherwise, it will return the locale configuration\n  // variables for this instance.\n\n\n  function locale(key) {\n    var newLocaleData;\n\n    if (key === undefined) {\n      return this._locale._abbr;\n    } else {\n      newLocaleData = getLocale(key);\n\n      if (newLocaleData != null) {\n        this._locale = newLocaleData;\n      }\n\n      return this;\n    }\n  }\n\n  var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n    if (key === undefined) {\n      return this.localeData();\n    } else {\n      return this.locale(key);\n    }\n  });\n\n  function localeData() {\n    return this._locale;\n  }\n\n  var MS_PER_SECOND = 1000,\n      MS_PER_MINUTE = 60 * MS_PER_SECOND,\n      MS_PER_HOUR = 60 * MS_PER_MINUTE,\n      MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):\n\n  function mod$1(dividend, divisor) {\n    return (dividend % divisor + divisor) % divisor;\n  }\n\n  function localStartOfDate(y, m, d) {\n    // the date constructor remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return new Date(y, m, d).valueOf();\n    }\n  }\n\n  function utcStartOfDate(y, m, d) {\n    // Date.UTC remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n      // preserve leap years using a full 400 year cycle, then reset\n      return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n      return Date.UTC(y, m, d);\n    }\n  }\n\n  function startOf(units) {\n    var time, startOfDate;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year(), 0, 1);\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month(), 1);\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date());\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_MINUTE);\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time -= mod$1(time, MS_PER_SECOND);\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function endOf(units) {\n    var time, startOfDate;\n    units = normalizeUnits(units);\n\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n      return this;\n    }\n\n    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n      case 'year':\n        time = startOfDate(this.year() + 1, 0, 1) - 1;\n        break;\n\n      case 'quarter':\n        time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n        break;\n\n      case 'month':\n        time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n        break;\n\n      case 'week':\n        time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n        break;\n\n      case 'isoWeek':\n        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n        break;\n\n      case 'day':\n      case 'date':\n        time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n        break;\n\n      case 'hour':\n        time = this._d.valueOf();\n        time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n        break;\n\n      case 'minute':\n        time = this._d.valueOf();\n        time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n        break;\n\n      case 'second':\n        time = this._d.valueOf();\n        time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n        break;\n    }\n\n    this._d.setTime(time);\n\n    hooks.updateOffset(this, true);\n    return this;\n  }\n\n  function valueOf() {\n    return this._d.valueOf() - (this._offset || 0) * 60000;\n  }\n\n  function unix() {\n    return Math.floor(this.valueOf() / 1000);\n  }\n\n  function toDate() {\n    return new Date(this.valueOf());\n  }\n\n  function toArray() {\n    var m = this;\n    return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n  }\n\n  function toObject() {\n    var m = this;\n    return {\n      years: m.year(),\n      months: m.month(),\n      date: m.date(),\n      hours: m.hours(),\n      minutes: m.minutes(),\n      seconds: m.seconds(),\n      milliseconds: m.milliseconds()\n    };\n  }\n\n  function toJSON() {\n    // new Date(NaN).toJSON() === null\n    return this.isValid() ? this.toISOString() : null;\n  }\n\n  function isValid$2() {\n    return isValid(this);\n  }\n\n  function parsingFlags() {\n    return extend({}, getParsingFlags(this));\n  }\n\n  function invalidAt() {\n    return getParsingFlags(this).overflow;\n  }\n\n  function creationData() {\n    return {\n      input: this._i,\n      format: this._f,\n      locale: this._locale,\n      isUTC: this._isUTC,\n      strict: this._strict\n    };\n  }\n\n  addFormatToken('N', 0, 0, 'eraAbbr');\n  addFormatToken('NN', 0, 0, 'eraAbbr');\n  addFormatToken('NNN', 0, 0, 'eraAbbr');\n  addFormatToken('NNNN', 0, 0, 'eraName');\n  addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n  addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n  addFormatToken('y', ['yy', 2], 0, 'eraYear');\n  addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n  addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n  addRegexToken('N', matchEraAbbr);\n  addRegexToken('NN', matchEraAbbr);\n  addRegexToken('NNN', matchEraAbbr);\n  addRegexToken('NNNN', matchEraName);\n  addRegexToken('NNNNN', matchEraNarrow);\n  addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n    var era = config._locale.erasParse(input, token, config._strict);\n\n    if (era) {\n      getParsingFlags(config).era = era;\n    } else {\n      getParsingFlags(config).invalidEra = input;\n    }\n  });\n  addRegexToken('y', matchUnsigned);\n  addRegexToken('yy', matchUnsigned);\n  addRegexToken('yyy', matchUnsigned);\n  addRegexToken('yyyy', matchUnsigned);\n  addRegexToken('yo', matchEraYearOrdinal);\n  addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n  addParseToken(['yo'], function (input, array, config, token) {\n    var match;\n\n    if (config._locale._eraYearOrdinalRegex) {\n      match = input.match(config._locale._eraYearOrdinalRegex);\n    }\n\n    if (config._locale.eraYearOrdinalParse) {\n      array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n    } else {\n      array[YEAR] = parseInt(input, 10);\n    }\n  });\n\n  function localeEras(m, format) {\n    var i,\n        l,\n        date,\n        eras = this._eras || getLocale('en')._eras;\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      switch (typeof eras[i].since) {\n        case 'string':\n          // truncate time\n          date = hooks(eras[i].since).startOf('day');\n          eras[i].since = date.valueOf();\n          break;\n      }\n\n      switch (typeof eras[i].until) {\n        case 'undefined':\n          eras[i].until = +Infinity;\n          break;\n\n        case 'string':\n          // truncate time\n          date = hooks(eras[i].until).startOf('day').valueOf();\n          eras[i].until = date.valueOf();\n          break;\n      }\n    }\n\n    return eras;\n  }\n\n  function localeErasParse(eraName, format, strict) {\n    var i,\n        l,\n        eras = this.eras(),\n        name,\n        abbr,\n        narrow;\n    eraName = eraName.toUpperCase();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      name = eras[i].name.toUpperCase();\n      abbr = eras[i].abbr.toUpperCase();\n      narrow = eras[i].narrow.toUpperCase();\n\n      if (strict) {\n        switch (format) {\n          case 'N':\n          case 'NN':\n          case 'NNN':\n            if (abbr === eraName) {\n              return eras[i];\n            }\n\n            break;\n\n          case 'NNNN':\n            if (name === eraName) {\n              return eras[i];\n            }\n\n            break;\n\n          case 'NNNNN':\n            if (narrow === eraName) {\n              return eras[i];\n            }\n\n            break;\n        }\n      } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n        return eras[i];\n      }\n    }\n  }\n\n  function localeErasConvertYear(era, year) {\n    var dir = era.since <= era.until ? +1 : -1;\n\n    if (year === undefined) {\n      return hooks(era.since).year();\n    } else {\n      return hooks(era.since).year() + (year - era.offset) * dir;\n    }\n  }\n\n  function getEraName() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      // truncate time\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until) {\n        return eras[i].name;\n      }\n\n      if (eras[i].until <= val && val <= eras[i].since) {\n        return eras[i].name;\n      }\n    }\n\n    return '';\n  }\n\n  function getEraNarrow() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      // truncate time\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until) {\n        return eras[i].narrow;\n      }\n\n      if (eras[i].until <= val && val <= eras[i].since) {\n        return eras[i].narrow;\n      }\n    }\n\n    return '';\n  }\n\n  function getEraAbbr() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      // truncate time\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until) {\n        return eras[i].abbr;\n      }\n\n      if (eras[i].until <= val && val <= eras[i].since) {\n        return eras[i].abbr;\n      }\n    }\n\n    return '';\n  }\n\n  function getEraYear() {\n    var i,\n        l,\n        dir,\n        val,\n        eras = this.localeData().eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      dir = eras[i].since <= eras[i].until ? +1 : -1; // truncate time\n\n      val = this.startOf('day').valueOf();\n\n      if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n        return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n      }\n    }\n\n    return this.year();\n  }\n\n  function erasNameRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasNameRegex')) {\n      computeErasParse.call(this);\n    }\n\n    return isStrict ? this._erasNameRegex : this._erasRegex;\n  }\n\n  function erasAbbrRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasAbbrRegex')) {\n      computeErasParse.call(this);\n    }\n\n    return isStrict ? this._erasAbbrRegex : this._erasRegex;\n  }\n\n  function erasNarrowRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasNarrowRegex')) {\n      computeErasParse.call(this);\n    }\n\n    return isStrict ? this._erasNarrowRegex : this._erasRegex;\n  }\n\n  function matchEraAbbr(isStrict, locale) {\n    return locale.erasAbbrRegex(isStrict);\n  }\n\n  function matchEraName(isStrict, locale) {\n    return locale.erasNameRegex(isStrict);\n  }\n\n  function matchEraNarrow(isStrict, locale) {\n    return locale.erasNarrowRegex(isStrict);\n  }\n\n  function matchEraYearOrdinal(isStrict, locale) {\n    return locale._eraYearOrdinalRegex || matchUnsigned;\n  }\n\n  function computeErasParse() {\n    var abbrPieces = [],\n        namePieces = [],\n        narrowPieces = [],\n        mixedPieces = [],\n        i,\n        l,\n        eras = this.eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n      namePieces.push(regexEscape(eras[i].name));\n      abbrPieces.push(regexEscape(eras[i].abbr));\n      narrowPieces.push(regexEscape(eras[i].narrow));\n      mixedPieces.push(regexEscape(eras[i].name));\n      mixedPieces.push(regexEscape(eras[i].abbr));\n      mixedPieces.push(regexEscape(eras[i].narrow));\n    }\n\n    this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n    this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n    this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n  } // FORMATTING\n\n\n  addFormatToken(0, ['gg', 2], 0, function () {\n    return this.weekYear() % 100;\n  });\n  addFormatToken(0, ['GG', 2], 0, function () {\n    return this.isoWeekYear() % 100;\n  });\n\n  function addWeekYearFormatToken(token, getter) {\n    addFormatToken(0, [token, token.length], 0, getter);\n  }\n\n  addWeekYearFormatToken('gggg', 'weekYear');\n  addWeekYearFormatToken('ggggg', 'weekYear');\n  addWeekYearFormatToken('GGGG', 'isoWeekYear');\n  addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES\n\n  addUnitAlias('weekYear', 'gg');\n  addUnitAlias('isoWeekYear', 'GG'); // PRIORITY\n\n  addUnitPriority('weekYear', 1);\n  addUnitPriority('isoWeekYear', 1); // PARSING\n\n  addRegexToken('G', matchSigned);\n  addRegexToken('g', matchSigned);\n  addRegexToken('GG', match1to2, match2);\n  addRegexToken('gg', match1to2, match2);\n  addRegexToken('GGGG', match1to4, match4);\n  addRegexToken('gggg', match1to4, match4);\n  addRegexToken('GGGGG', match1to6, match6);\n  addRegexToken('ggggg', match1to6, match6);\n  addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n    week[token.substr(0, 2)] = toInt(input);\n  });\n  addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n    week[token] = hooks.parseTwoDigitYear(input);\n  }); // MOMENTS\n\n  function getSetWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n  }\n\n  function getSetISOWeekYear(input) {\n    return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n  }\n\n  function getISOWeeksInYear() {\n    return weeksInYear(this.year(), 1, 4);\n  }\n\n  function getISOWeeksInISOWeekYear() {\n    return weeksInYear(this.isoWeekYear(), 1, 4);\n  }\n\n  function getWeeksInYear() {\n    var weekInfo = this.localeData()._week;\n\n    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n  }\n\n  function getWeeksInWeekYear() {\n    var weekInfo = this.localeData()._week;\n\n    return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n  }\n\n  function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n    var weeksTarget;\n\n    if (input == null) {\n      return weekOfYear(this, dow, doy).year;\n    } else {\n      weeksTarget = weeksInYear(input, dow, doy);\n\n      if (week > weeksTarget) {\n        week = weeksTarget;\n      }\n\n      return setWeekAll.call(this, input, week, weekday, dow, doy);\n    }\n  }\n\n  function setWeekAll(weekYear, week, weekday, dow, doy) {\n    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n    this.year(date.getUTCFullYear());\n    this.month(date.getUTCMonth());\n    this.date(date.getUTCDate());\n    return this;\n  } // FORMATTING\n\n\n  addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES\n\n  addUnitAlias('quarter', 'Q'); // PRIORITY\n\n  addUnitPriority('quarter', 7); // PARSING\n\n  addRegexToken('Q', match1);\n  addParseToken('Q', function (input, array) {\n    array[MONTH] = (toInt(input) - 1) * 3;\n  }); // MOMENTS\n\n  function getSetQuarter(input) {\n    return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n  } // FORMATTING\n\n\n  addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES\n\n  addUnitAlias('date', 'D'); // PRIORITY\n\n  addUnitPriority('date', 9); // PARSING\n\n  addRegexToken('D', match1to2);\n  addRegexToken('DD', match1to2, match2);\n  addRegexToken('Do', function (isStrict, locale) {\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n    return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n  });\n  addParseToken(['D', 'DD'], DATE);\n  addParseToken('Do', function (input, array) {\n    array[DATE] = toInt(input.match(match1to2)[0]);\n  }); // MOMENTS\n\n  var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING\n\n  addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES\n\n  addUnitAlias('dayOfYear', 'DDD'); // PRIORITY\n\n  addUnitPriority('dayOfYear', 4); // PARSING\n\n  addRegexToken('DDD', match1to3);\n  addRegexToken('DDDD', match3);\n  addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n    config._dayOfYear = toInt(input);\n  }); // HELPERS\n  // MOMENTS\n\n  function getSetDayOfYear(input) {\n    var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n  } // FORMATTING\n\n\n  addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES\n\n  addUnitAlias('minute', 'm'); // PRIORITY\n\n  addUnitPriority('minute', 14); // PARSING\n\n  addRegexToken('m', match1to2);\n  addRegexToken('mm', match1to2, match2);\n  addParseToken(['m', 'mm'], MINUTE); // MOMENTS\n\n  var getSetMinute = makeGetSet('Minutes', false); // FORMATTING\n\n  addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES\n\n  addUnitAlias('second', 's'); // PRIORITY\n\n  addUnitPriority('second', 15); // PARSING\n\n  addRegexToken('s', match1to2);\n  addRegexToken('ss', match1to2, match2);\n  addParseToken(['s', 'ss'], SECOND); // MOMENTS\n\n  var getSetSecond = makeGetSet('Seconds', false); // FORMATTING\n\n  addFormatToken('S', 0, 0, function () {\n    return ~~(this.millisecond() / 100);\n  });\n  addFormatToken(0, ['SS', 2], 0, function () {\n    return ~~(this.millisecond() / 10);\n  });\n  addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n  addFormatToken(0, ['SSSS', 4], 0, function () {\n    return this.millisecond() * 10;\n  });\n  addFormatToken(0, ['SSSSS', 5], 0, function () {\n    return this.millisecond() * 100;\n  });\n  addFormatToken(0, ['SSSSSS', 6], 0, function () {\n    return this.millisecond() * 1000;\n  });\n  addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n    return this.millisecond() * 10000;\n  });\n  addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n    return this.millisecond() * 100000;\n  });\n  addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n    return this.millisecond() * 1000000;\n  }); // ALIASES\n\n  addUnitAlias('millisecond', 'ms'); // PRIORITY\n\n  addUnitPriority('millisecond', 16); // PARSING\n\n  addRegexToken('S', match1to3, match1);\n  addRegexToken('SS', match1to3, match2);\n  addRegexToken('SSS', match1to3, match3);\n  var token, getSetMillisecond;\n\n  for (token = 'SSSS'; token.length <= 9; token += 'S') {\n    addRegexToken(token, matchUnsigned);\n  }\n\n  function parseMs(input, array) {\n    array[MILLISECOND] = toInt(('0.' + input) * 1000);\n  }\n\n  for (token = 'S'; token.length <= 9; token += 'S') {\n    addParseToken(token, parseMs);\n  }\n\n  getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING\n\n  addFormatToken('z', 0, 0, 'zoneAbbr');\n  addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS\n\n  function getZoneAbbr() {\n    return this._isUTC ? 'UTC' : '';\n  }\n\n  function getZoneName() {\n    return this._isUTC ? 'Coordinated Universal Time' : '';\n  }\n\n  var proto = Moment.prototype;\n  proto.add = add;\n  proto.calendar = calendar$1;\n  proto.clone = clone;\n  proto.diff = diff;\n  proto.endOf = endOf;\n  proto.format = format;\n  proto.from = from;\n  proto.fromNow = fromNow;\n  proto.to = to;\n  proto.toNow = toNow;\n  proto.get = stringGet;\n  proto.invalidAt = invalidAt;\n  proto.isAfter = isAfter;\n  proto.isBefore = isBefore;\n  proto.isBetween = isBetween;\n  proto.isSame = isSame;\n  proto.isSameOrAfter = isSameOrAfter;\n  proto.isSameOrBefore = isSameOrBefore;\n  proto.isValid = isValid$2;\n  proto.lang = lang;\n  proto.locale = locale;\n  proto.localeData = localeData;\n  proto.max = prototypeMax;\n  proto.min = prototypeMin;\n  proto.parsingFlags = parsingFlags;\n  proto.set = stringSet;\n  proto.startOf = startOf;\n  proto.subtract = subtract;\n  proto.toArray = toArray;\n  proto.toObject = toObject;\n  proto.toDate = toDate;\n  proto.toISOString = toISOString;\n  proto.inspect = inspect;\n\n  if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n    proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n      return 'Moment<' + this.format() + '>';\n    };\n  }\n\n  proto.toJSON = toJSON;\n  proto.toString = toString;\n  proto.unix = unix;\n  proto.valueOf = valueOf;\n  proto.creationData = creationData;\n  proto.eraName = getEraName;\n  proto.eraNarrow = getEraNarrow;\n  proto.eraAbbr = getEraAbbr;\n  proto.eraYear = getEraYear;\n  proto.year = getSetYear;\n  proto.isLeapYear = getIsLeapYear;\n  proto.weekYear = getSetWeekYear;\n  proto.isoWeekYear = getSetISOWeekYear;\n  proto.quarter = proto.quarters = getSetQuarter;\n  proto.month = getSetMonth;\n  proto.daysInMonth = getDaysInMonth;\n  proto.week = proto.weeks = getSetWeek;\n  proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n  proto.weeksInYear = getWeeksInYear;\n  proto.weeksInWeekYear = getWeeksInWeekYear;\n  proto.isoWeeksInYear = getISOWeeksInYear;\n  proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n  proto.date = getSetDayOfMonth;\n  proto.day = proto.days = getSetDayOfWeek;\n  proto.weekday = getSetLocaleDayOfWeek;\n  proto.isoWeekday = getSetISODayOfWeek;\n  proto.dayOfYear = getSetDayOfYear;\n  proto.hour = proto.hours = getSetHour;\n  proto.minute = proto.minutes = getSetMinute;\n  proto.second = proto.seconds = getSetSecond;\n  proto.millisecond = proto.milliseconds = getSetMillisecond;\n  proto.utcOffset = getSetOffset;\n  proto.utc = setOffsetToUTC;\n  proto.local = setOffsetToLocal;\n  proto.parseZone = setOffsetToParsedOffset;\n  proto.hasAlignedHourOffset = hasAlignedHourOffset;\n  proto.isDST = isDaylightSavingTime;\n  proto.isLocal = isLocal;\n  proto.isUtcOffset = isUtcOffset;\n  proto.isUtc = isUtc;\n  proto.isUTC = isUtc;\n  proto.zoneAbbr = getZoneAbbr;\n  proto.zoneName = getZoneName;\n  proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n  proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n  proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n  proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n  proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n  function createUnix(input) {\n    return createLocal(input * 1000);\n  }\n\n  function createInZone() {\n    return createLocal.apply(null, arguments).parseZone();\n  }\n\n  function preParsePostFormat(string) {\n    return string;\n  }\n\n  var proto$1 = Locale.prototype;\n  proto$1.calendar = calendar;\n  proto$1.longDateFormat = longDateFormat;\n  proto$1.invalidDate = invalidDate;\n  proto$1.ordinal = ordinal;\n  proto$1.preparse = preParsePostFormat;\n  proto$1.postformat = preParsePostFormat;\n  proto$1.relativeTime = relativeTime;\n  proto$1.pastFuture = pastFuture;\n  proto$1.set = set;\n  proto$1.eras = localeEras;\n  proto$1.erasParse = localeErasParse;\n  proto$1.erasConvertYear = localeErasConvertYear;\n  proto$1.erasAbbrRegex = erasAbbrRegex;\n  proto$1.erasNameRegex = erasNameRegex;\n  proto$1.erasNarrowRegex = erasNarrowRegex;\n  proto$1.months = localeMonths;\n  proto$1.monthsShort = localeMonthsShort;\n  proto$1.monthsParse = localeMonthsParse;\n  proto$1.monthsRegex = monthsRegex;\n  proto$1.monthsShortRegex = monthsShortRegex;\n  proto$1.week = localeWeek;\n  proto$1.firstDayOfYear = localeFirstDayOfYear;\n  proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n  proto$1.weekdays = localeWeekdays;\n  proto$1.weekdaysMin = localeWeekdaysMin;\n  proto$1.weekdaysShort = localeWeekdaysShort;\n  proto$1.weekdaysParse = localeWeekdaysParse;\n  proto$1.weekdaysRegex = weekdaysRegex;\n  proto$1.weekdaysShortRegex = weekdaysShortRegex;\n  proto$1.weekdaysMinRegex = weekdaysMinRegex;\n  proto$1.isPM = localeIsPM;\n  proto$1.meridiem = localeMeridiem;\n\n  function get$1(format, index, field, setter) {\n    var locale = getLocale(),\n        utc = createUTC().set(setter, index);\n    return locale[field](utc, format);\n  }\n\n  function listMonthsImpl(format, index, field) {\n    if (isNumber(format)) {\n      index = format;\n      format = undefined;\n    }\n\n    format = format || '';\n\n    if (index != null) {\n      return get$1(format, index, field, 'month');\n    }\n\n    var i,\n        out = [];\n\n    for (i = 0; i < 12; i++) {\n      out[i] = get$1(format, i, field, 'month');\n    }\n\n    return out;\n  } // ()\n  // (5)\n  // (fmt, 5)\n  // (fmt)\n  // (true)\n  // (true, 5)\n  // (true, fmt, 5)\n  // (true, fmt)\n\n\n  function listWeekdaysImpl(localeSorted, format, index, field) {\n    if (typeof localeSorted === 'boolean') {\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    } else {\n      format = localeSorted;\n      index = format;\n      localeSorted = false;\n\n      if (isNumber(format)) {\n        index = format;\n        format = undefined;\n      }\n\n      format = format || '';\n    }\n\n    var locale = getLocale(),\n        shift = localeSorted ? locale._week.dow : 0,\n        i,\n        out = [];\n\n    if (index != null) {\n      return get$1(format, (index + shift) % 7, field, 'day');\n    }\n\n    for (i = 0; i < 7; i++) {\n      out[i] = get$1(format, (i + shift) % 7, field, 'day');\n    }\n\n    return out;\n  }\n\n  function listMonths(format, index) {\n    return listMonthsImpl(format, index, 'months');\n  }\n\n  function listMonthsShort(format, index) {\n    return listMonthsImpl(format, index, 'monthsShort');\n  }\n\n  function listWeekdays(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n  }\n\n  function listWeekdaysShort(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n  }\n\n  function listWeekdaysMin(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n  }\n\n  getSetGlobalLocale('en', {\n    eras: [{\n      since: '0001-01-01',\n      until: +Infinity,\n      offset: 1,\n      name: 'Anno Domini',\n      narrow: 'AD',\n      abbr: 'AD'\n    }, {\n      since: '0000-12-31',\n      until: -Infinity,\n      offset: 1,\n      name: 'Before Christ',\n      narrow: 'BC',\n      abbr: 'BC'\n    }],\n    dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n    ordinal: function ordinal(number) {\n      var b = number % 10,\n          output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n      return number + output;\n    }\n  }); // Side effect imports\n\n  hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n  hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n  var mathAbs = Math.abs;\n\n  function abs() {\n    var data = this._data;\n    this._milliseconds = mathAbs(this._milliseconds);\n    this._days = mathAbs(this._days);\n    this._months = mathAbs(this._months);\n    data.milliseconds = mathAbs(data.milliseconds);\n    data.seconds = mathAbs(data.seconds);\n    data.minutes = mathAbs(data.minutes);\n    data.hours = mathAbs(data.hours);\n    data.months = mathAbs(data.months);\n    data.years = mathAbs(data.years);\n    return this;\n  }\n\n  function addSubtract$1(duration, input, value, direction) {\n    var other = createDuration(input, value);\n    duration._milliseconds += direction * other._milliseconds;\n    duration._days += direction * other._days;\n    duration._months += direction * other._months;\n    return duration._bubble();\n  } // supports only 2.0-style add(1, 's') or add(duration)\n\n\n  function add$1(input, value) {\n    return addSubtract$1(this, input, value, 1);\n  } // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\n\n  function subtract$1(input, value) {\n    return addSubtract$1(this, input, value, -1);\n  }\n\n  function absCeil(number) {\n    if (number < 0) {\n      return Math.floor(number);\n    } else {\n      return Math.ceil(number);\n    }\n  }\n\n  function bubble() {\n    var milliseconds = this._milliseconds,\n        days = this._days,\n        months = this._months,\n        data = this._data,\n        seconds,\n        minutes,\n        hours,\n        years,\n        monthsFromDays; // if we have a mix of positive and negative values, bubble down first\n    // check: https://github.com/moment/moment/issues/2166\n\n    if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n      milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n      days = 0;\n      months = 0;\n    } // The following code bubbles up values, see the tests for\n    // examples of what that means.\n\n\n    data.milliseconds = milliseconds % 1000;\n    seconds = absFloor(milliseconds / 1000);\n    data.seconds = seconds % 60;\n    minutes = absFloor(seconds / 60);\n    data.minutes = minutes % 60;\n    hours = absFloor(minutes / 60);\n    data.hours = hours % 24;\n    days += absFloor(hours / 24); // convert days to months\n\n    monthsFromDays = absFloor(daysToMonths(days));\n    months += monthsFromDays;\n    days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12;\n    data.days = days;\n    data.months = months;\n    data.years = years;\n    return this;\n  }\n\n  function daysToMonths(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    // 400 years have 12 months === 4800\n    return days * 4800 / 146097;\n  }\n\n  function monthsToDays(months) {\n    // the reverse of daysToMonths\n    return months * 146097 / 4800;\n  }\n\n  function as(units) {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    var days,\n        months,\n        milliseconds = this._milliseconds;\n    units = normalizeUnits(units);\n\n    if (units === 'month' || units === 'quarter' || units === 'year') {\n      days = this._days + milliseconds / 864e5;\n      months = this._months + daysToMonths(days);\n\n      switch (units) {\n        case 'month':\n          return months;\n\n        case 'quarter':\n          return months / 3;\n\n        case 'year':\n          return months / 12;\n      }\n    } else {\n      // handle milliseconds separately because of floating point math errors (issue #1867)\n      days = this._days + Math.round(monthsToDays(this._months));\n\n      switch (units) {\n        case 'week':\n          return days / 7 + milliseconds / 6048e5;\n\n        case 'day':\n          return days + milliseconds / 864e5;\n\n        case 'hour':\n          return days * 24 + milliseconds / 36e5;\n\n        case 'minute':\n          return days * 1440 + milliseconds / 6e4;\n\n        case 'second':\n          return days * 86400 + milliseconds / 1000;\n        // Math.floor prevents floating point math errors here\n\n        case 'millisecond':\n          return Math.floor(days * 864e5) + milliseconds;\n\n        default:\n          throw new Error('Unknown unit ' + units);\n      }\n    }\n  } // TODO: Use this.as('ms')?\n\n\n  function valueOf$1() {\n    if (!this.isValid()) {\n      return NaN;\n    }\n\n    return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n  }\n\n  function makeAs(alias) {\n    return function () {\n      return this.as(alias);\n    };\n  }\n\n  var asMilliseconds = makeAs('ms'),\n      asSeconds = makeAs('s'),\n      asMinutes = makeAs('m'),\n      asHours = makeAs('h'),\n      asDays = makeAs('d'),\n      asWeeks = makeAs('w'),\n      asMonths = makeAs('M'),\n      asQuarters = makeAs('Q'),\n      asYears = makeAs('y');\n\n  function clone$1() {\n    return createDuration(this);\n  }\n\n  function get$2(units) {\n    units = normalizeUnits(units);\n    return this.isValid() ? this[units + 's']() : NaN;\n  }\n\n  function makeGetter(name) {\n    return function () {\n      return this.isValid() ? this._data[name] : NaN;\n    };\n  }\n\n  var milliseconds = makeGetter('milliseconds'),\n      seconds = makeGetter('seconds'),\n      minutes = makeGetter('minutes'),\n      hours = makeGetter('hours'),\n      days = makeGetter('days'),\n      months = makeGetter('months'),\n      years = makeGetter('years');\n\n  function weeks() {\n    return absFloor(this.days() / 7);\n  }\n\n  var round = Math.round,\n      thresholds = {\n    ss: 44,\n    // a few seconds to seconds\n    s: 45,\n    // seconds to minute\n    m: 45,\n    // minutes to hour\n    h: 22,\n    // hours to day\n    d: 26,\n    // days to month/week\n    w: null,\n    // weeks to month\n    M: 11 // months to year\n\n  }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\n  function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n  }\n\n  function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n    var duration = createDuration(posNegDuration).abs(),\n        seconds = round(duration.as('s')),\n        minutes = round(duration.as('m')),\n        hours = round(duration.as('h')),\n        days = round(duration.as('d')),\n        months = round(duration.as('M')),\n        weeks = round(duration.as('w')),\n        years = round(duration.as('y')),\n        a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n\n    if (thresholds.w != null) {\n      a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n    }\n\n    a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n    a[2] = withoutSuffix;\n    a[3] = +posNegDuration > 0;\n    a[4] = locale;\n    return substituteTimeAgo.apply(null, a);\n  } // This function allows you to set the rounding function for relative time strings\n\n\n  function getSetRelativeTimeRounding(roundingFunction) {\n    if (roundingFunction === undefined) {\n      return round;\n    }\n\n    if (typeof roundingFunction === 'function') {\n      round = roundingFunction;\n      return true;\n    }\n\n    return false;\n  } // This function allows you to set a threshold for relative time strings\n\n\n  function getSetRelativeTimeThreshold(threshold, limit) {\n    if (thresholds[threshold] === undefined) {\n      return false;\n    }\n\n    if (limit === undefined) {\n      return thresholds[threshold];\n    }\n\n    thresholds[threshold] = limit;\n\n    if (threshold === 's') {\n      thresholds.ss = limit - 1;\n    }\n\n    return true;\n  }\n\n  function humanize(argWithSuffix, argThresholds) {\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var withSuffix = false,\n        th = thresholds,\n        locale,\n        output;\n\n    if (typeof argWithSuffix === 'object') {\n      argThresholds = argWithSuffix;\n      argWithSuffix = false;\n    }\n\n    if (typeof argWithSuffix === 'boolean') {\n      withSuffix = argWithSuffix;\n    }\n\n    if (typeof argThresholds === 'object') {\n      th = Object.assign({}, thresholds, argThresholds);\n\n      if (argThresholds.s != null && argThresholds.ss == null) {\n        th.ss = argThresholds.s - 1;\n      }\n    }\n\n    locale = this.localeData();\n    output = relativeTime$1(this, !withSuffix, th, locale);\n\n    if (withSuffix) {\n      output = locale.pastFuture(+this, output);\n    }\n\n    return locale.postformat(output);\n  }\n\n  var abs$1 = Math.abs;\n\n  function sign(x) {\n    return (x > 0) - (x < 0) || +x;\n  }\n\n  function toISOString$1() {\n    // for ISO strings we do not use the normal bubbling rules:\n    //  * milliseconds bubble up until they become hours\n    //  * days do not bubble at all\n    //  * months bubble up until they become years\n    // This is because there is no context-free conversion between hours and days\n    // (think of clock changes)\n    // and also not between days and months (28-31 days per month)\n    if (!this.isValid()) {\n      return this.localeData().invalidDate();\n    }\n\n    var seconds = abs$1(this._milliseconds) / 1000,\n        days = abs$1(this._days),\n        months = abs$1(this._months),\n        minutes,\n        hours,\n        years,\n        s,\n        total = this.asSeconds(),\n        totalSign,\n        ymSign,\n        daysSign,\n        hmsSign;\n\n    if (!total) {\n      // this is the same as C#'s (Noda) and python (isodate)...\n      // but not other JS (goog.date)\n      return 'P0D';\n    } // 3600 seconds -> 60 minutes -> 1 hour\n\n\n    minutes = absFloor(seconds / 60);\n    hours = absFloor(minutes / 60);\n    seconds %= 60;\n    minutes %= 60; // 12 months -> 1 year\n\n    years = absFloor(months / 12);\n    months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\n    s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n    totalSign = total < 0 ? '-' : '';\n    ymSign = sign(this._months) !== sign(total) ? '-' : '';\n    daysSign = sign(this._days) !== sign(total) ? '-' : '';\n    hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n    return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n  }\n\n  var proto$2 = Duration.prototype;\n  proto$2.isValid = isValid$1;\n  proto$2.abs = abs;\n  proto$2.add = add$1;\n  proto$2.subtract = subtract$1;\n  proto$2.as = as;\n  proto$2.asMilliseconds = asMilliseconds;\n  proto$2.asSeconds = asSeconds;\n  proto$2.asMinutes = asMinutes;\n  proto$2.asHours = asHours;\n  proto$2.asDays = asDays;\n  proto$2.asWeeks = asWeeks;\n  proto$2.asMonths = asMonths;\n  proto$2.asQuarters = asQuarters;\n  proto$2.asYears = asYears;\n  proto$2.valueOf = valueOf$1;\n  proto$2._bubble = bubble;\n  proto$2.clone = clone$1;\n  proto$2.get = get$2;\n  proto$2.milliseconds = milliseconds;\n  proto$2.seconds = seconds;\n  proto$2.minutes = minutes;\n  proto$2.hours = hours;\n  proto$2.days = days;\n  proto$2.weeks = weeks;\n  proto$2.months = months;\n  proto$2.years = years;\n  proto$2.humanize = humanize;\n  proto$2.toISOString = toISOString$1;\n  proto$2.toString = toISOString$1;\n  proto$2.toJSON = toISOString$1;\n  proto$2.locale = locale;\n  proto$2.localeData = localeData;\n  proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n  proto$2.lang = lang; // FORMATTING\n\n  addFormatToken('X', 0, 0, 'unix');\n  addFormatToken('x', 0, 0, 'valueOf'); // PARSING\n\n  addRegexToken('x', matchSigned);\n  addRegexToken('X', matchTimestamp);\n  addParseToken('X', function (input, array, config) {\n    config._d = new Date(parseFloat(input) * 1000);\n  });\n  addParseToken('x', function (input, array, config) {\n    config._d = new Date(toInt(input));\n  }); //! moment.js\n\n  hooks.version = '2.27.0';\n  setHookCallback(createLocal);\n  hooks.fn = proto;\n  hooks.min = min;\n  hooks.max = max;\n  hooks.now = now;\n  hooks.utc = createUTC;\n  hooks.unix = createUnix;\n  hooks.months = listMonths;\n  hooks.isDate = isDate;\n  hooks.locale = getSetGlobalLocale;\n  hooks.invalid = createInvalid;\n  hooks.duration = createDuration;\n  hooks.isMoment = isMoment;\n  hooks.weekdays = listWeekdays;\n  hooks.parseZone = createInZone;\n  hooks.localeData = getLocale;\n  hooks.isDuration = isDuration;\n  hooks.monthsShort = listMonthsShort;\n  hooks.weekdaysMin = listWeekdaysMin;\n  hooks.defineLocale = defineLocale;\n  hooks.updateLocale = updateLocale;\n  hooks.locales = listLocales;\n  hooks.weekdaysShort = listWeekdaysShort;\n  hooks.normalizeUnits = normalizeUnits;\n  hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n  hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n  hooks.calendarFormat = getCalendarFormat;\n  hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats\n\n  hooks.HTML5_FMT = {\n    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n    // <input type=\"datetime-local\" />\n    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n    // <input type=\"datetime-local\" step=\"1\" />\n    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n    // <input type=\"datetime-local\" step=\"0.001\" />\n    DATE: 'YYYY-MM-DD',\n    // <input type=\"date\" />\n    TIME: 'HH:mm',\n    // <input type=\"time\" />\n    TIME_SECONDS: 'HH:mm:ss',\n    // <input type=\"time\" step=\"1\" />\n    TIME_MS: 'HH:mm:ss.SSS',\n    // <input type=\"time\" step=\"0.001\" />\n    WEEK: 'GGGG-[W]WW',\n    // <input type=\"week\" />\n    MONTH: 'YYYY-MM' // <input type=\"month\" />\n\n  };\n  return hooks;\n});","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/index.html b/index.html
index 499f278..97fff9c 100644
--- a/index.html
+++ b/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.51a6f681b234fe6f2f73.css">/*!
  * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/component---src-pages-index-js-742d9c9328e3978208ef.js"/><link as="script" rel="preload" href="/openj9/commons-995392a5e28deac70171.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js"/><link as="fetch" rel="preload" href="/openj9/page-data/index/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="wcfgnq">.css-wcfgnq{display:none;background-color:#00000000;position:absolute;width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-wcfgnq{display:none;}}@media screen and (min-width:62.5rem){.css-wcfgnq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-wcfgnq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-wcfgnq"><style data-emotion-css="7jnxbv">.css-7jnxbv{-webkit-flex:1;-ms-flex:1;flex:1;opacity:0;pointer-events:none;}</style><div class="css-7jnxbv"><a aria-current="page" class="" href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="vfnkif">.css-vfnkif{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:32rem;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}@media screen and (min-width:35rem){.css-vfnkif{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}}@media screen and (min-width:62.5rem){.css-vfnkif{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}@media screen and (min-width:85rem){.css-vfnkif{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}</style><section class="css-vfnkif"><style data-emotion-css="1njushj">.css-1njushj{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);width:100%;min-height:12.5rem;}@media screen and (min-width:35rem){.css-1njushj{width:100%;}}@media screen and (min-width:62.5rem){.css-1njushj{width:30%;}}@media screen and (min-width:85rem){.css-1njushj{width:30%;}}</style><div class="css-1njushj"></div><style data-emotion-css="190h46h">.css-190h46h{height:15rem;width:15rem;border-radius:50%;background-color:#434343;position:absolute;left:calc(50% - 8rem);top:4.5rem;border:white solid 0.15rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-190h46h{left:calc(50% - 8rem);top:4.5rem;}}@media screen and (min-width:62.5rem){.css-190h46h{left:calc(30% - 8rem);top:8rem;}}@media screen and (min-width:85rem){.css-190h46h{left:calc(30% - 8rem);top:8rem;}}</style><div class="css-190h46h"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></div><style data-emotion-css="1o8fo9j">.css-1o8fo9j{width:90%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;margin-top:8rem;margin-left:5%;}@media screen and (min-width:35rem){.css-1o8fo9j{width:90%;margin-top:8rem;margin-left:5%;}}@media screen and (min-width:62.5rem){.css-1o8fo9j{width:40%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:20%;}}@media screen and (min-width:85rem){.css-1o8fo9j{width:33%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:15%;}}</style><div class="css-1o8fo9j"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">Unleash the power of Java</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.</p></div></section><style data-emotion-css="16fon6c">.css-16fon6c{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);}</style><section class="css-16fon6c"><style data-emotion-css="9v605b">.css-9v605b{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;padding:4rem 5% 0 5%;}</style><div class="css-9v605b"><style data-emotion-css="gu2vom">.css-gu2vom{min-height:12.5rem;border-radius:0.5rem;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-gu2vom"><i class="fas fa-rocket fa-5x"></i><style data-emotion-css="1m3g4j3">.css-1m3g4j3{text-align:center;margin-bottom:0.25rem;}</style><style data-emotion-css="2ezcdc">.css-2ezcdc{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;text-align:center;margin-bottom:0.25rem;}</style><h4 class="css-2ezcdc">Optimized for the Cloud</h4><style data-emotion-css="xi606m">.css-xi606m{text-align:center;}</style><style data-emotion-css="1kwj0e6">.css-1kwj0e6{margin-bottom:40px;font-size:18px;text-align:center;}</style><p class="css-1kwj0e6">for microservices and monoliths too!</p></article><article class="css-gu2vom"><i class="fas fa-tachometer-alt fa-5x"></i><h4 class="css-2ezcdc">42% Faster Startup</h4><p class="css-1kwj0e6">over HotSpot</p></article><article class="css-gu2vom"><i class="fas fa-chart-line fa-5x"></i><h4 class="css-2ezcdc">28% Faster Ramp-up</h4><p class="css-1kwj0e6">when deployed to cloud vs HotSpot</p></article><article class="css-gu2vom"><i class="fas fa-archive fa-5x"></i><h4 class="css-2ezcdc">66% Smaller</h4><p class="css-1kwj0e6">when compared to HotSpot</p></article></div><style data-emotion-css="ybl7a">.css-ybl7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-bottom:4rem;}</style><div class="css-ybl7a"><style data-emotion-css="e7yd4b">.css-e7yd4b{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:15rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-e7yd4b:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a class="css-e7yd4b" href="/openj9/performance">Read performance details</a></div></section><style data-emotion-css="4yursh">.css-4yursh{padding:calc(5% + 2.5rem);background-color:#F5F9FC;min-height:50vh;}</style><section class="css-4yursh"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Join the conversation</h3><style data-emotion-css="1r8z3uo">.css-1r8z3uo{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);background-color:white;border-radius:0.5rem;padding-left:5%;padding-right:5%;padding-top:4rem;padding-bottom:4rem;}@media screen and (min-width:35rem){.css-1r8z3uo{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1r8z3uo{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1r8z3uo{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1r8z3uo"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we&#x27;d love to hear from you.</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA" rel="noopener noreferrer" target="_blank" class="css-1575med">Join OpenJ9 slack<style data-emotion-css="npnnwu">.css-npnnwu{width:10%;margin-left:0.8rem;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="slack Logo" class="css-npnnwu"/></a></div><div class="css-1b6n4o1"><p class="css-fza3g9">Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having.</p><a href="https://github.com/eclipse/openj9/issues" rel="noopener noreferrer" target="_blank" class="css-1575med">See OpenJ9 issues<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo" class="css-npnnwu"/></a></div></div></section><style data-emotion-css="17e95nl">.css-17e95nl{background-image:url(/openj9/static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg);height:50vh;background-repeat:no-repeat;background-size:cover;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:white;padding-left:15%;}</style><section class="css-17e95nl"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Participate in the <br/> Eclipse OpenJ9 project</h2></section><style data-emotion-css="1x9b3zy">.css-1x9b3zy{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);padding:calc(5% + 2.5rem);padding-top:4rem;padding-bottom:4rem;}@media screen and (min-width:35rem){.css-1x9b3zy{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1x9b3zy{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1x9b3zy{grid-template-columns:repeat(2,1fr);}}</style><section class="css-1x9b3zy"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Become a contributor</h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we&#x27;d love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9/blob/master/CONTRIBUTING.md" rel="noopener noreferrer" target="_blank" class="css-1575med">Contributor Guide</a></div><div class="css-1b6n4o1"><h3 class="css-4ddra2">Join community calls</h3><p class="css-fza3g9">Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel.</p><a href="https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ" rel="noopener noreferrer" target="_blank" class="css-1575med">Add to Calendar</a></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/component---src-pages-index-js-95eb74b93a53ac66e3a0.js"/><link as="script" rel="preload" href="/openj9/commons-2ee5517a8df806aebc87.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-f3eca94263f09fdd722d.js"/><link as="fetch" rel="preload" href="/openj9/page-data/index/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="wcfgnq">.css-wcfgnq{display:none;background-color:#00000000;position:absolute;width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-wcfgnq{display:none;}}@media screen and (min-width:62.5rem){.css-wcfgnq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-wcfgnq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-wcfgnq"><style data-emotion-css="7jnxbv">.css-7jnxbv{-webkit-flex:1;-ms-flex:1;flex:1;opacity:0;pointer-events:none;}</style><div class="css-7jnxbv"><a aria-current="page" class="" href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a aria-current="page" class="" href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="vfnkif">.css-vfnkif{background-color:var(--theme-ui-colors-primary,#434343);color:var(--theme-ui-colors-lightText,#d8d8d8);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:32rem;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}@media screen and (min-width:35rem){.css-vfnkif{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:4rem;}}@media screen and (min-width:62.5rem){.css-vfnkif{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}@media screen and (min-width:85rem){.css-vfnkif{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding-bottom:0;}}</style><section class="css-vfnkif"><style data-emotion-css="1njushj">.css-1njushj{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSI2MjVweCIgdmlld0JveD0iMCAwIDI1IDYyNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNpcmNsZSBPdmVybGF5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ik9wZW5KOS1Ib21lLUJsYW5rIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI4Ni4wMDAwMDAsIC0yNTExLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJHcmF5LUJHIiBmaWxsPSIjNURBN0EzIiB4PSIwIiB5PSIxNDMxIiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIxMjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSJQYXJ0aWNpcGF0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg3LjAwMDAwMCwgMjUxMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJCbHVlLUJHIiBmaWxsPSIjMzQzNDM0IiB4PSI4NyIgeT0iMTU2IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSIzNjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODcuMDAwMDAwLCAwLjAwMDAwMCkiIGZpbGw9IiM1REE3QTMiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgeD0iMCIgeT0iMTU1IiB3aWR0aD0iMTQ0MCIgaGVpZ2h0PSI1NjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJDaXJjbGUtT3ZlcmxheXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc4LjAwMDAwMCwgMC4wMDAwMDApIiBvcGFjaXR5PSIwLjc1MDMzNDgyMSIgc3Ryb2tlPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iQ2lyY2xlLU92ZXJsYXkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0My41MDAwMDAsIDMxMS41MDAwMDApIHJvdGF0ZSg5MC4wMDAwMDApIHRyYW5zbGF0ZSgtNzQzLjUwMDAwMCwgLTMxMS41MDAwMDApIHRyYW5zbGF0ZSg0MzIuMDAwMDAwLCAtNDMyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNpcmNsZS1PdmVybGF5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU3RhY2tlZC1Hcm91cC04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMTY4LjAwMDAwMCkiIG9wYWNpdHk9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI2MTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTg3LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjU2My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI1MTUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTM5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ2Ny41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI0OTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNDE5LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjQ0My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNzEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzk1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjMyMy41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIzNDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjc1LjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjI5OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMjcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMjUxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE3OS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIyMDMuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTMxLjUiIGN5PSIxMS41IiByPSIxMS41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC0xNiIgY3g9IjE1NS41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSI4My41IiBjeT0iMTEuNSIgcj0iMTEuNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTYiIGN4PSIxMDcuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMzUuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iNTkuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTE2IiBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjExLjUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIyIiBmaWxsPSIjNURBN0EzIiB4PSI3MzQiIHk9IjUyMCIgd2lkdGg9Ijc5MyIgaGVpZ2h0PSIyIj48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);width:100%;min-height:12.5rem;}@media screen and (min-width:35rem){.css-1njushj{width:100%;}}@media screen and (min-width:62.5rem){.css-1njushj{width:30%;}}@media screen and (min-width:85rem){.css-1njushj{width:30%;}}</style><div class="css-1njushj"></div><style data-emotion-css="190h46h">.css-190h46h{height:15rem;width:15rem;border-radius:50%;background-color:#434343;position:absolute;left:calc(50% - 8rem);top:4.5rem;border:white solid 0.15rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-190h46h{left:calc(50% - 8rem);top:4.5rem;}}@media screen and (min-width:62.5rem){.css-190h46h{left:calc(30% - 8rem);top:8rem;}}@media screen and (min-width:85rem){.css-190h46h{left:calc(30% - 8rem);top:8rem;}}</style><div class="css-190h46h"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAxcHgiIGhlaWdodD0iODRweCIgdmlld0JveD0iMCAwIDIwMSA4NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDEzPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikdyb3VwLTEzIj4KICAgICAgICAgICAgPGcgaWQ9IkxvZ28iPjwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTI1LjUwNzI1OTUsNDkuMjgyMzQ2NyBDMjMuNDY0Mjk2OSw1Mi40MjA2NDYgMjAuNjM0MzYzNiw1My45ODg5MjE0IDE3LjAxNDg4NjYsNTMuOTg4OTIxNCBDMTMuNDk3MjI3LDUzLjk4ODkyMTQgMTAuNjg2Nzc1LDUyLjQ3MzA5NjYgOC41ODMxNjMwNiw0OS40NDEwOTc1IEM2LjQ4MDY1Mzg0LDQ2LjQwODM5ODkgNS40MjkwMzE2Nyw0Mi40NzcwNDU0IDUuNDI5MDMxNjcsMzcuNjQ0NTg5MSBDNS40MjkwMzE2NywzMi42OTY3NDEyIDYuNDcwMzYxODQsMjguNjkxOTU2NyA4LjU1MzAyMjE5LDI1LjYzMDkzNDggQzEwLjYzNjA1MDEsMjIuNTcwMjYyNiAxMy40NDU3NjcsMjEuMDM5MDUyMyAxNi45ODQzNzgyLDIxLjAzOTA1MjMgQzIwLjQ4MjkyNDEsMjEuMDM5MDUyMyAyMy4yODc4NjI2LDIyLjQ1NTIyMDggMjUuNDAxMDMxNCwyNS4yODQwNjEgQzI3LjUxNDIwMDIsMjguMTE0NjQ5NSAyOC41NzA5NjgzLDMyLjA3MTUyOTEgMjguNTcwOTY4MywzNy4xNTMzMDEgQzI4LjU3MDk2ODMsNDIuMTAxNDk4NSAyNy41NDk0ODcsNDYuMTQ0Mzk3MiAyNS41MDcyNTk1LDQ5LjI4MjM0NjcgTTE3LjA0NTM5NTEsMTcgQzExLjkwOTMxNzksMTcgNy43ODQ0MzAxLDE4Ljk0NDg3MTMgNC42NzAzNjQsMjIuODMyNTE2IEMxLjU1NzAzMzA1LDI2LjcyMDUxMDMgMCwzMS42NDg0MjY5IDAsMzcuNjE1NTY2MyBDMCw0My4zMzI2OTA4IDEuNDg2NDU5MzEsNDguMTU5NTUyNCA0LjQ1OTAxMDM3LDUyLjA5NTEwMiBDNy40MzExOTM4NSw1Ni4wMzE3MDA3IDExLjU3NTkzMDYsNTggMTYuODkzNTg4LDU4IEMyMi4yOTI0Nzg4LDU4IDI2LjQ5MzA4NjQsNTUuOTI1NDAwNiAyOS40OTY1MTM1LDUxLjc3Nzk1MDIgQzMyLjQ5ODQ3MDMsNDcuNjI5ODAwNSAzNCw0Mi43NjM3NzU4IDM0LDM3LjE4MjY3MzQgQzM0LDMxLjM2OTczODkgMzIuNDUyODkxNCwyNi41NTIzMTg1IDI5LjM1OTQwOTMsMjIuNzMwNzYxNyBDMjYuMjY1NTU5NiwxOC45MTA5NTMyIDIyLjE2MDg4ODIsMTcgMTcuMDQ1Mzk1MSwxNyIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTU4LjA5NjAyODUsNTQuMTU5NTk4OCBDNTYuNDMxOTk0NSw1NS45NDM3MTE5IDU0LjUxOTMwNzMsNTYuODM3MjEwMSA1Mi4zNjIxNTU1LDU2LjgzNzIxMDEgQzUwLjQ5ODIwODksNTYuODM3MjEwMSA0OC43MTA4MDAyLDU2LjA5NjE3MjQgNDYuOTkzODM2OSw1NC42MTM3MzY3IEM0NS4yNzYxMTIsNTMuMTMzNDYzNCA0NC4zMzEwMDE2LDUxLjI1NjM2MDIgNDMuOTUwMjE1OCw0OC45ODYwMzEzIEw0My45NTAyMTU4LDQwLjUwODc5MDkgQzQ0LjcxMTc4NzQsMzguNDQ2Nzg4NyA0NS40ODA1OTQsMzYuNjkyMjMwNiA0Ny4wNDEwNTQ0LDM1LjI0NTExNjcgQzQ4LjYwMTUxNDcsMzMuNzk4MDAyNyA1MC4zNjM3OTE1LDMzLjA3NDI2NTUgNTIuMzMyODM1LDMzLjA3NDI2NTUgQzU0LjgyNTQ1OTEsMzMuMDc0MjY1NSA1Ni44MjU3MjcsMzQuMTAwNDAwOSA1OC4zMzQwMTk3LDM2LjE1MjMxMTEgQzU5Ljg0MTU1MDgsMzguMjA0MjIxNCA2MC41OTU1MDY3LDQxLjEyMzY3OTIgNjAuNTk1NTA2Nyw0NC45MTEwNDQ5IEM2MC41OTU1MDY3LDQ5LjI5Mjc1NDUgNTkuNzYxNTg1OCw1Mi4zNzY1NjcgNTguMDk2MDI4NSw1NC4xNTk1OTg4IE01My41Mjk2NDQ5LDI5IEM0OS4wOTUwMTMxLDI5IDQ1Ljg1NDE0NDksMzEuMjIwOTUwNSA0My41Njk0Mjk5LDM1LjY2MDY4ODkgTDQzLjU2OTQyOTksMjkuNjMyMTg4OCBMMzksMjkuNjMyMTg4OCBMMzksNzAgTDQzLjk1MDIxNTgsNzAgTDQzLjk1MDIxNTgsNTUuMzE5ODEyOSBDNDYuMjM0OTMwOCw1OC45MDc4NjI2IDQ5LjM2MTE4MjQsNjAuNzAyNzg4NSA1My4zNDAzOTQzLDYwLjcwMjc4ODUgQzU3LjA0ODg2NzUsNjAuNzAyNzg4NSA2MC4wODMzNDk4LDU5LjI2MzYwMzkgNjIuNDUwNjk1Myw1Ni4zODY2NzY1IEM2NC44MTY4OTg0LDUzLjUwODMwNzQgNjYsNDkuNjE4OTQwOSA2Niw0NC43MTc4NTYxIEM2Niw0MC4xNzI1MTI2IDY0Ljg3Mjg3MzksMzYuNDE2ODY0NSA2Mi41NzI5Mjc1LDMzLjQ1MDE5MDggQzYwLjI3MTgzODgsMzAuNDgzMTU2NiA1Ny4yNzM1MzEyLDI5IDUzLjUyOTY0NDksMjkiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03Ny40MDY0Nzk2LDQxLjU2NzE4NTkgQzc3LjYwMzM4NjQsMzguNzQzMDk5MiA3OC41MDk4MDYsMzYuNTY3ODQ2NCA4MC4xMjM5Mzg0LDM0LjkzNjU4MzMgQzgxLjczNjk5MDksMzMuMzA0OTY3MiA4My43MDI0NTk4LDMyLjQ2NTE1NDQgODYuMDE5NjI1NCwzMi40NjUxNTQ0IEM4Ny43NDIxMTA1LDMyLjQ2NTE1NDQgODkuMjE2NTcyMiwzMi45MDQyOTk5IDkwLjQ0NTE3MDMsMzMuODA4MDA3NyBDOTEuNjcyNjg4NSwzNC43MTAzMDM0IDkyLjU0NDU1MDQsMzUuODQ1MjMzMiA5My4wNTg5NTYxLDM3LjEyNzAxNTYgQzkzLjU3NDgwMTcsMzguNDA4NDQ0OSA5My44NTA1NDMzLDM5LjgwMjEzMTcgOTMuODkwNTAwNiw0MS41NjcxODU5IEw3Ny40MDY0Nzk2LDQxLjU2NzE4NTkgWiBNOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEM5Mi45NDUyMDM3LDMwLjM4NDE1NTUgODkuNzkyMTczOSwyOSA4NS44NzA5NTUzLDI5IEM4MS44OTE0MjA2LDI5IDc4LjU4MzYwMTEsMzAuNDE1NTczNSA3NS45NTA3MzY2LDMzLjMwMjQ5NjEgQzczLjMxNzE1MjIsMzYuMTg4MDA2NyA3MiwzOS45NjAyODA2IDcyLDQ0LjY0NTA4NzUgQzcyLDQ5LjIzMjQ2MzMgNzMuMjY2Mzk1Niw1Mi45MzE2NjM5IDc1LjgwMTcwNjYsNTUuNzU5OTg2OCBDNzguMzM2Mjk3Niw1OC41ODk3MjE3IDgxLjY1MzQ3NjQsNjAgODUuNzUyODgzMSw2MCBDODguODYxNjM1OSw2MCA5MS41NjM2MTU4LDU5LjE3NTM2NjcgOTMuODYwNjIyNiw1Ny41Mjc4NjUxIEM5Ni4xNTgzNDk0LDU1Ljg4MTA2OTUgOTcuNzAyNjQ2NSw1My44MDExMjk2IDk4LjQ5NDk1MzcsNTEuMjg2NjMzNCBMOTQuMTU5MDQyNyw1MC40MTM2Mzc2IEM5Mi41OTM4NjcxLDU0LjI3Njk4ODIgODkuOTAwODg2Niw1Ni4yMDk3MjI2IDg2LjA3OTAyMTQsNTYuMjA5NzIyNiBDODMuOTYwMjAyNyw1Ni4yMDk3MjI2IDgxLjk1MDQ1NjYsNTUuNTQxODI2MSA4MC4wNDk3ODMzLDUzLjk4ODU3ODQgQzc4LjE0ODc1MDEsNTIuNDM0NjI0NyA3Ny4xOTc2OTM1LDQ5LjMzMzQyNDQgNzcuMTk3NjkzNSw0NS4wOTcyOTQzIEw5OSw0NS4wOTcyOTQzIEM5OC45NDA2MDQsMzkuNDQ5MTIwOSA5Ny43MTc3NjU1LDM1LjcwNDczNDkgOTUuMzMxODQ0NSwzMy4wNDQ3OTgyIEw5NS4zMzE4NDQ1LDMzLjA0NDc5ODIgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyMy40MDI0LDMwLjc0NDkzNTUgQzEyMS42NTMyLDI5LjU4MjAwNjcgMTE5LjQ3NTYsMjkgMTE2Ljk4ODgsMjkgQzExMi42NzYsMjkgMTA5LjIsMzEuMTI4MTIwMSAxMDYuNCwzNS4zODMyNzU3IEwxMDYuNCwyOS42MzQ0MjM0IEwxMDIsMjkuNjM0NDIzNCBMMTAyLDYwIEwxMDYuOCw2MCBMMTA2LjgsNDMuNDM2NjU3NSBDMTA2LjgsNDAuMzE1ODcyNyAxMDcuNzM4NCwzNy43OTk1MDcyIDEwOS41MzE2LDM1Ljg4OTczIEMxMTEuMzIzNiwzMy45ODEwMzczIDExMy41NjI0LDMzLjAyNjY5MDkgMTE2LjIwMjQsMzMuMDI2NjkwOSBDMTE4LjExNzIsMzMuMDI2NjkwOSAxMTkuNzk1MiwzMy41OTM1MTQ4IDEyMS4xMzcyLDM0LjcyNzE2MjYgQzEyMi40Nzk2LDM1Ljg2MDA4NzQgMTIzLjIsMzcuODE5MDI3OSAxMjMuMiw0MC42MDM2MjI2IEwxMjMuMiw2MCBMMTI4LDYwIEwxMjgsNDIuNTQxOTU3OCBDMTI4LDM4Ljc0NDA5MzEgMTI3LjY2MjQsMzYuMTE5NjQwNyAxMjcuMDEyNCwzNC42Njc1MTU5IEMxMjYuMzYzMiwzMy4yMTUzOTEyIDEyNS4xNTIsMzEuOTA3ODY0NCAxMjMuNDAyNCwzMC43NDQ5MzU1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDcuMjk3ODcyLDQ5LjYwNTg3OTYgQzE0Ny4yOTc4NzIsNTEuODU4MzkzNCAxNDcuMTIyODA5LDUzLjQ4NjUyNzUgMTQ2Ljc4MjA4NSw1NC40OTI4Mzc3IEMxNDYuNDQwMjc3LDU1LjQ5ODA1MjYgMTQ1Ljc3MDQwNCw1Ni4zMTY2ODM4IDE0NC43NzUsNTYuOTUwNTU3MSBDMTQzLjc4MDMxOSw1Ny41ODM3IDE0Mi4xMjYyNTUsNTcuODk5MTc2MSAxNDAuMDI2NTc0LDU3Ljg5OTE3NjEgQzEzOC41NTA0NjgsNTcuODk5MTc2MSAxMzcuMTcwMjEzLDU3LjcwMzgyOTIgMTM1LDU3LjMxMjc3MDMgTDEzNSw2MS4yMTg5Nzc2IEMxMzcuMTcwMjEzLDYxLjczODkyODkgMTM4Ljc4MDg3Miw2MiAxNDAuNjA1NjYsNjIgQzE0NC4wMTM2MTcsNjIgMTQ2Ljc5NTQ2OCw2MS4wODc1MjkzIDE0OC44NTkzNCw1OS4yNjQ0MTM0IEMxNTAuOTIyNDg5LDU3LjQ0MDIwMjIgMTUyLDU0LjIyMDA4MjQgMTUyLDQ5LjYwMjk1ODUgTDE1MiwyMyBMMTQ3LjI5Nzg3MiwyMyBMMTQ3LjI5Nzg3Miw0OS42MDU4Nzk2IFoiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNzYuMjc2Mjg3LDQxLjgwOTg1MDUgQzE3NC41NzcyODcsNDMuNjE0NjkxMSAxNzIuNDczNjEzLDQ0LjUxNzI5MDkgMTY5Ljk2NjMxMyw0NC41MTcyOTA5IEMxNjcuNjg4NzU4LDQ0LjUxNzI5MDkgMTY1LjY5Mjk3NCw0My43Mzg2MDU1IDE2My45NzY1MTYsNDIuMTgxNTkzOCBDMTYyLjI2MDQwNyw0MC42MjM1MDQ2IDE2MS40MDIxNzgsMzguNTA3MjYxNyAxNjEuNDAyMTc4LDM1LjgzMTA2OTMgQzE2MS40MDIxNzgsMzMuMzQwMjA5OCAxNjIuMTc2MjYsMzEuMjI2NDgxMSAxNjMuNzIzNzI2LDI5LjQ5NTYzMDEgQzE2NS4yNjk3OTUsMjcuNzYzNzAxNSAxNjcuMzc3NjU5LDI2Ljg5ODA5NjQgMTcwLjA0NTkyMSwyNi44OTgwOTY0IEMxNzIuNjc4MjE5LDI2Ljg5ODA5NjQgMTc0Ljc5OTcsMjcuNzQwMzU1MyAxNzYuNDA4OTY3LDI5LjQyNjY2OSBDMTc4LjAxODkzMiwzMS4xMTI2MjM1IDE3OC44MjM3NCwzMy4xMjkwMTY1IDE3OC44MjM3NCwzNS40NzM2OTI5IEMxNzguODIzNzQsMzcuODkyNzE4IDE3Ny45NzM4OTEsNDAuMDA1MDEgMTc2LjI3NjI4Nyw0MS44MDk4NTA1IE0xODAuMzQ0MzIxLDI3Ljk1NzY1NDUgQzE3Ny45MDgyNDksMjQuNjUzOTg4MiAxNzQuNDA0MTA1LDIzIDE2OS44MzIyMzYsMjMgQzE2Ni4wOTc2NDgsMjMgMTYzLjAyNDcxMywyNC4yNjQyODYzIDE2MC42MTUxNzcsMjYuNzkxNzgxNCBDMTU4LjIwNDI0NCwyOS4zMTk5OTQ4IDE1NywzMi4zNjAzODc5IDE1NywzNS45MTQwMzgxIEMxNTcsMzkuNDEyNzM1IDE1OC4xNDYyODQsNDIuMzQ3ODkwNiAxNjAuNDQwOTQ3LDQ0LjcxOTg2NDEgQzE2Mi43MzU5NTksNDcuMDkxNDc4NCAxNjUuNTcyNTE1LDQ4LjI3NzgyNDMgMTY4Ljk1MTMxMiw0OC4yNzc4MjQzIEMxNzMuNzM2MTY2LDQ4LjI3NzgyNDMgMTc3LjMyMDYxNyw0Ni4wMjY4OTE5IDE3OS43MDQzMTUsNDEuNTI1NzQ1MyBDMTc5LjY1MDU0NSw0Ni42NjcyOTYgMTc4Ljc0NzYyNCw1MC43Mzg4NzI2IDE3Ni45OTY1OTksNTMuNzM5Mzk3NSBDMTc1LjI0NDE3Nyw1Ni43NDA2NDA4IDE3Mi42MzQyMjUsNTguMjM5ODI1OCAxNjkuMTY0OTk2LDU4LjIzOTgyNTggQzE2NS41OTEwMiw1OC4yMzk4MjU4IDE2My4wNDcwNTksNTYuNTExNDg4OSAxNjEuNTM0ODU4LDUzLjA1MzAxOTMgTDE1Ny44Nzk4NzcsNTQuNDI1Nzc1NyBDMTU5LjgwMDI0Myw1OS40NzUzNzgzIDE2My41NDQyNTksNjIgMTY5LjExMjYyMyw2MiBDMTczLjg3ODI3Myw2MiAxNzcuNTUyMTA5LDYwLjExOTAxNDkgMTgwLjEzMDk4Niw1Ni4zNTY2ODU3IEMxODIuNzA5ODYzLDUyLjU5Mzk5NzIgMTg0LDQ3LjY3Mjk3ODMgMTg0LDQxLjU5MzYyODggQzE4NCwzNS44MDgwODIzIDE4Mi43ODE0NCwzMS4yNjI3NTc1IDE4MC4zNDQzMjEsMjcuOTU3NjU0NSIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTEyNC4zMzAyOTMsNjIuNzMyMDAzNiBDMTI2LjExMDM2Niw2NS45NDEzOTgxIDEyOC4zMzYxNzgsNjguOTYxNzY3NSAxMzEuMDA3NzMsNzEuNjk4NDQyNSBDMTQ3LjAxOTQxMiw4OC4xMDA1MTkyIDE3Mi45Nzk0NzgsODguMTAwNTE5MiAxODguOTkxMTYsNzEuNjk4NDQyNSBDMjA1LjAwMjk0Nyw1NS4yOTY0MzcxIDIwNS4wMDI5NDcsMjguNzAzNTY4MyAxODguOTkxMTYsMTIuMzAxNTYyOCBDMTcyLjk3OTQ3OCwtNC4xMDA1MjA5NSAxNDcuMDE5NDEyLC00LjEwMDUyMDk1IDEzMS4wMDc3MywxMi4zMDE1NjI4IEMxMjYuMjY5OTMzLDE3LjE1NDgyODggMTIyLjkzNDAxOCwyMi45MDAzNDY4IDEyMSwyOS4wMTAwOTQ3IEwxMjMuMTI2NCwyOS45Nzk5MDQ0IEMxMjQuOTM5NTY1LDI0LjEyNjU4MDcgMTI4LjExMTk2OSwxOC42MTkzOTIyIDEzMi42NDM2MDQsMTMuOTc3MzE3MyBDMTQ3Ljc1MTgyNywtMS40OTkyNzA5MiAxNzIuMjQ3MDgsLTEuNDk5MjcwOTIgMTg3LjM1NTI4NiwxMy45NzczMTczIEMyMDIuNDYzNTk3LDI5LjQ1MzgyIDIwMi40NjM1OTcsNTQuNTQ2MTc4MyAxODcuMzU1Mjg2LDcwLjAyMjY5MTYgQzE3Mi4yNDcwOCw4NS40OTkyNTQ5IDE0Ny43NTE4MjcsODUuNDk5MjU0OSAxMzIuNjQzNjA0LDcwLjAyMjY5MTYgQzEzMC4xNzg1NjIsNjcuNDk3NTYwMyAxMjguMTE1NzI1LDY0LjcxNjQ2NzggMTI2LjQ1NTA1OCw2MS43NjI5Mjc2IEwxMjQuMzMwMjkzLDYyLjczMjAwMzYgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></div><style data-emotion-css="1o8fo9j">.css-1o8fo9j{width:90%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;margin-top:8rem;margin-left:5%;}@media screen and (min-width:35rem){.css-1o8fo9j{width:90%;margin-top:8rem;margin-left:5%;}}@media screen and (min-width:62.5rem){.css-1o8fo9j{width:40%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:20%;}}@media screen and (min-width:85rem){.css-1o8fo9j{width:33%;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;text-align:left;margin-top:3rem;margin-left:15%;}}</style><div class="css-1o8fo9j"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">Unleash the power of Java</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Optimized to run Java™ applications cost-effectively in the cloud, Eclipse OpenJ9 is a fast and efficient JVM that delivers power and performance when you need it most.</p></div></section><style data-emotion-css="16fon6c">.css-16fon6c{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);}</style><section class="css-16fon6c"><style data-emotion-css="9v605b">.css-9v605b{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;padding:4rem 5% 0 5%;}</style><div class="css-9v605b"><style data-emotion-css="gu2vom">.css-gu2vom{min-height:12.5rem;border-radius:0.5rem;background-color:white;color:var(--theme-ui-colors-darkText,#4d4f50);margin-top:40px;margin-bottom:40px;margin-left:16px;margin-right:16px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><article class="css-gu2vom"><i class="fas fa-rocket fa-5x"></i><style data-emotion-css="1m3g4j3">.css-1m3g4j3{text-align:center;margin-bottom:0.25rem;}</style><style data-emotion-css="2ezcdc">.css-2ezcdc{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;text-align:center;margin-bottom:0.25rem;}</style><h4 class="css-2ezcdc">Optimized for the Cloud</h4><style data-emotion-css="xi606m">.css-xi606m{text-align:center;}</style><style data-emotion-css="1kwj0e6">.css-1kwj0e6{margin-bottom:40px;font-size:18px;text-align:center;}</style><p class="css-1kwj0e6">for microservices and monoliths too!</p></article><article class="css-gu2vom"><i class="fas fa-tachometer-alt fa-5x"></i><h4 class="css-2ezcdc">42% Faster Startup</h4><p class="css-1kwj0e6">over HotSpot</p></article><article class="css-gu2vom"><i class="fas fa-chart-line fa-5x"></i><h4 class="css-2ezcdc">28% Faster Ramp-up</h4><p class="css-1kwj0e6">when deployed to cloud vs HotSpot</p></article><article class="css-gu2vom"><i class="fas fa-archive fa-5x"></i><h4 class="css-2ezcdc">66% Smaller</h4><p class="css-1kwj0e6">when compared to HotSpot</p></article></div><style data-emotion-css="ybl7a">.css-ybl7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-bottom:4rem;}</style><div class="css-ybl7a"><style data-emotion-css="e7yd4b">.css-e7yd4b{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:15rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-e7yd4b:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a class="css-e7yd4b" href="/openj9/performance">Read performance details</a></div></section><style data-emotion-css="4yursh">.css-4yursh{padding:calc(5% + 2.5rem);background-color:#F5F9FC;min-height:50vh;}</style><section class="css-4yursh"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Join the conversation</h3><style data-emotion-css="1r8z3uo">.css-1r8z3uo{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);background-color:white;border-radius:0.5rem;padding-left:5%;padding-right:5%;padding-top:4rem;padding-bottom:4rem;}@media screen and (min-width:35rem){.css-1r8z3uo{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1r8z3uo{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1r8z3uo{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1r8z3uo"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Join us on Slack where you can ask questions and chat directly with our developers. Whether you simply have a question about using OpenJ9, an idea for improvement, or a problem you want to discuss, we&#x27;d love to hear from you.</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://openj9.slack.com/join/shared_invite/enQtNDU4MDI4Mjk0MTk2LWVhNTMzMGY1N2JkODQ1OWE0NTNmZjM4ZDcxOTBiMjk3NGFjM2U0ZDNhMmY0MDZlNzU0ZjAyNzQ1ODlmYjg3MjA" rel="noopener noreferrer" target="_blank" class="css-1575med">Join OpenJ9 slack<style data-emotion-css="npnnwu">.css-npnnwu{width:10%;margin-left:0.8rem;}</style><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zbGFjay1pY29uPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InNsYWNrLWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xLjAwMDAwMCwgLTEuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJiYWNrZ3JvdW5kIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJjYW52YXNfYmFja2dyb3VuZCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2Ij48L3JlY3Q+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkxheWVyLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJzdmdfMSIgc3Ryb2tlPSIjRkZGRkZGIiAgY3g9IjExIiBjeT0iMTEiIHI9IjExIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiICBzdHJva2Utd2lkdGg9IjAuNSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z182IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NDA4MSwgMC45NzE0MjUpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z183IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgOC40NjAxMjgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjQyMjg3NTQ2LDEuNzMwMTYyNTkgQzMuNDIyODc1NDYsMi42NTQyNjg4MyAyLjY2Nzk3MTc3LDMuNDA5MTcyNTIgMS43NDM4NjU1MywzLjQwOTE3MjUyIEMwLjgxOTc1OTI4OCwzLjQwOTE3MjUyIDAuMDY0ODU1NTk4MSwyLjY1NDI2ODgzIDAuMDY0ODU1NTk4MSwxLjczMDE2MjU5IEMwLjA2NDg1NTU5ODEsMC44MDYwNTYzNTQgMC44MTk3NTkyODgsMC4wNTExNTI2NjQ1IDEuNzQzODY1NTMsMC4wNTExNTI2NjQ1IEwzLjQyMjg3NTQ2LDAuMDUxMTUyNjY0NSBMMy40MjI4NzU0NiwxLjczMDE2MjU5IFoiIGlkPSJzdmdfOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjY4ODg4MjEsMS43MzAxNjI1OSBDNC4yNjg4ODgyMSwwLjgwNjA1NjM1NCA1LjAyMzc5MTksMC4wNTExNTI2NjQ1IDUuOTQ3ODk4MTQsMC4wNTExNTI2NjQ1IEM2Ljg3MjAwNDM4LDAuMDUxMTUyNjY0NSA3LjYyNjkwODA3LDAuODA2MDU2MzU0IDcuNjI2OTA4MDcsMS43MzAxNjI1OSBMNy42MjY5MDgwNyw1LjkzNDE5NTIxIEM3LjYyNjkwODA3LDYuODU4MzAxNDUgNi44NzIwMDQzOCw3LjYxMzIwNTE0IDUuOTQ3ODk4MTQsNy42MTMyMDUxNCBDNS4wMjM3OTE5LDcuNjEzMjA1MTQgNC4yNjg4ODgyMSw2Ljg1ODMwMTQ1IDQuMjY4ODg4MjEsNS45MzQxOTUyMSBDNC4yNjg4ODgyMSw1LjkzNDE5NTIxIDQuMjY4ODg4MjEsMS43MzAxNjI1OSA0LjI2ODg4ODIxLDEuNzMwMTYyNTkgTDQuMjY4ODg4MjEsMS43MzAxNjI1OSBaIiBpZD0ic3ZnXzkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0ic3ZnXzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDMuNDQ4MjE5MjcgQzUuMDIzNzkxOSwzLjQ0ODIxOTI3IDQuMjY4ODg4MjEsMi42OTMzMTU1OCA0LjI2ODg4ODIxLDEuNzY5MjA5MzQgQzQuMjY4ODg4MjEsMC44NDUxMDMwOTYgNS4wMjM3OTE5LDAuMDkwMTk5NDA3IDUuOTQ3ODk4MTQsMC4wOTAxOTk0MDcgQzYuODcyMDA0MzgsMC4wOTAxOTk0MDcgNy42MjY5MDgwNywwLjg0NTEwMzA5NiA3LjYyNjkwODA3LDEuNzY5MjA5MzQgTDcuNjI2OTA4MDcsMy40NDgyMTkyNyBMNS45NDc4OTgxNCwzLjQ0ODIxOTI3IFoiIGlkPSJzdmdfMTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgQzYuODcyMDA0MzgsNC4yOTQyMzIwMiA3LjYyNjkwODA3LDUuMDQ5MTM1NzEgNy42MjY5MDgwNyw1Ljk3MzI0MTk1IEM3LjYyNjkwODA3LDYuODk3MzQ4MTkgNi44NzIwMDQzOCw3LjY1MjI1MTg4IDUuOTQ3ODk4MTQsNy42NTIyNTE4OCBMMS43NDM4NjU1Myw3LjY1MjI1MTg4IEMwLjgxOTc1OTI4OCw3LjY1MjI1MTg4IDAuMDY0ODU1NTk4MSw2Ljg5NzM0ODE5IDAuMDY0ODU1NTk4MSw1Ljk3MzI0MTk1IEMwLjA2NDg1NTU5ODEsNS4wNDkxMzU3MSAwLjgxOTc1OTI4OCw0LjI5NDIzMjAyIDEuNzQzODY1NTMsNC4yOTQyMzIwMiBDMS43NDM4NjU1Myw0LjI5NDIzMjAyIDUuOTQ3ODk4MTQsNC4yOTQyMzIwMiA1Ljk0Nzg5ODE0LDQuMjk0MjMyMDIgWiIgaWQ9InN2Z18xMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdmdfMTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguNDYwMTI4LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQuMjI5ODQxNDcsNS45NzMyNDE5NSBDNC4yMjk4NDE0Nyw1LjA0OTEzNTcxIDQuOTg0NzQ1MTYsNC4yOTQyMzIwMiA1LjkwODg1MTQsNC4yOTQyMzIwMiBDNi44MzI5NTc2NCw0LjI5NDIzMjAyIDcuNTg3ODYxMzMsNS4wNDkxMzU3MSA3LjU4Nzg2MTMzLDUuOTczMjQxOTUgQzcuNTg3ODYxMzMsNi44OTczNDgxOSA2LjgzMjk1NzY0LDcuNjUyMjUxODggNS45MDg4NTE0LDcuNjUyMjUxODggTDQuMjI5ODQxNDcsNy42NTIyNTE4OCBMNC4yMjk4NDE0Nyw1Ljk3MzI0MTk1IFoiIGlkPSJzdmdfMTQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjM4MzgyODcyLDUuOTczMjQxOTUgQzMuMzgzODI4NzIsNi44OTczNDgxOSAyLjYyODkyNTAzLDcuNjUyMjUxODggMS43MDQ4MTg3OSw3LjY1MjI1MTg4IEMwLjc4MDcxMjU0NSw3LjY1MjI1MTg4IDAuMDI1ODA4ODU1Niw2Ljg5NzM0ODE5IDAuMDI1ODA4ODU1Niw1Ljk3MzI0MTk1IEwwLjAyNTgwODg1NTYsMS43NjkyMDkzNCBDMC4wMjU4MDg4NTU2LDAuODQ1MTAzMDk2IDAuNzgwNzEyNTQ1LDAuMDkwMTk5NDA3IDEuNzA0ODE4NzksMC4wOTAxOTk0MDcgQzIuNjI4OTI1MDMsMC4wOTAxOTk0MDcgMy4zODM4Mjg3MiwwLjg0NTEwMzA5NiAzLjM4MzgyODcyLDEuNzY5MjA5MzQgTDMuMzgzODI4NzIsNS45NzMyNDE5NSBaIiBpZD0ic3ZnXzE1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InN2Z18xNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC40NjAxMjgsIDguNDYwMTI4KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMS43MDQ4MTg3OSw0LjI1NTE4NTI4IEMyLjYyODkyNTAzLDQuMjU1MTg1MjggMy4zODM4Mjg3Miw1LjAxMDA4ODk3IDMuMzgzODI4NzIsNS45MzQxOTUyMSBDMy4zODM4Mjg3Miw2Ljg1ODMwMTQ1IDIuNjI4OTI1MDMsNy42MTMyMDUxNCAxLjcwNDgxODc5LDcuNjEzMjA1MTQgQzAuNzgwNzEyNTQ1LDcuNjEzMjA1MTQgMC4wMjU4MDg4NTU2LDYuODU4MzAxNDUgMC4wMjU4MDg4NTU2LDUuOTM0MTk1MjEgTDAuMDI1ODA4ODU1Niw0LjI1NTE4NTI4IEwxLjcwNDgxODc5LDQuMjU1MTg1MjggWiIgaWQ9InN2Z18xNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEuNzA0ODE4NzksMy40MDkxNzI1MiBDMC43ODA3MTI1NDUsMy40MDkxNzI1MiAwLjAyNTgwODg1NTYsMi42NTQyNjg4MyAwLjAyNTgwODg1NTYsMS43MzAxNjI1OSBDMC4wMjU4MDg4NTU2LDAuODA2MDU2MzU0IDAuNzgwNzEyNTQ1LDAuMDUxMTUyNjY0NSAxLjcwNDgxODc5LDAuMDUxMTUyNjY0NSBMNS45MDg4NTE0LDAuMDUxMTUyNjY0NSBDNi44MzI5NTc2NCwwLjA1MTE1MjY2NDUgNy41ODc4NjEzMywwLjgwNjA1NjM1NCA3LjU4Nzg2MTMzLDEuNzMwMTYyNTkgQzcuNTg3ODYxMzMsMi42NTQyNjg4MyA2LjgzMjk1NzY0LDMuNDA5MTcyNTIgNS45MDg4NTE0LDMuNDA5MTcyNTIgTDEuNzA0ODE4NzksMy40MDkxNzI1MiBMMS43MDQ4MTg3OSwzLjQwOTE3MjUyIFoiIGlkPSJzdmdfMTgiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="slack Logo" class="css-npnnwu"/></a></div><div class="css-1b6n4o1"><p class="css-fza3g9">Like all great open source projects, we have a vibrant and busy GitHub repository where you can create issues to explore ideas, request new features, or report any difficulties you are having.</p><a href="https://github.com/eclipse-openj9/openj9/issues" rel="noopener noreferrer" target="_blank" class="css-1575med">See OpenJ9 issues<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo" class="css-npnnwu"/></a></div></div></section><style data-emotion-css="17e95nl">.css-17e95nl{background-image:url(/openj9/static/circle-pattern-big-96604574cf60a59e399e87bb5043431c.svg);height:50vh;background-repeat:no-repeat;background-size:cover;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:white;padding-left:15%;}</style><section class="css-17e95nl"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Participate in the <br/> Eclipse OpenJ9 project</h2></section><style data-emotion-css="1x9b3zy">.css-1x9b3zy{display:grid;grid-gap:6rem;grid-template-columns:repeat(1,1fr);padding:calc(5% + 2.5rem);padding-top:4rem;padding-bottom:4rem;}@media screen and (min-width:35rem){.css-1x9b3zy{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1x9b3zy{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1x9b3zy{grid-template-columns:repeat(2,1fr);}}</style><section class="css-1x9b3zy"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><style data-emotion-css="4ddra2">.css-4ddra2{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;}</style><h3 class="css-4ddra2">Become a contributor</h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">We welcome contributions to the project in all shapes and forms. If you are interested in JVM development, we&#x27;d love to hear your ideas and help you collaborate with us on the code base. There are other ways you can contribute too, such as working on our website and docs. Be a part of the project and share in our success!</p><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse-openj9/openj9/blob/master/CONTRIBUTING.md" rel="noopener noreferrer" target="_blank" class="css-1575med">Contributor Guide</a></div><div class="css-1b6n4o1"><h3 class="css-4ddra2">Join community calls</h3><p class="css-fza3g9">Our regular calls are a great place to find out what is going on in the project. As well as discussing our release plans and development status, we often feature lightning talks by members of the community. For example, technical deep dives or overviews about new features. To see agendas and recordings, look in the Slack #planning channel.</p><a href="https://calendar.google.com/calendar?cid=YjBnYjB0ZzNxaTZhb3NhZGZnbG0wa3BjY29AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ" rel="noopener noreferrer" target="_blank" class="css-1575med">Add to Calendar</a></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -17,4 +17,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-742d9c9328e3978208ef.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-51cfc654fd38628b84c4.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/commons-995392a5e28deac70171.js" async=""></script><script src="/openj9/component---src-pages-index-js-742d9c9328e3978208ef.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-95eb74b93a53ac66e3a0.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-528a44fbfd1bc3044539.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-f3eca94263f09fdd722d.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/commons-2ee5517a8df806aebc87.js" async=""></script><script src="/openj9/component---src-pages-index-js-95eb74b93a53ac66e3a0.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/news/index.html b/news/index.html
index 52723d9..2484843 100644
--- a/news/index.html
+++ b/news/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.51a6f681b234fe6f2f73.css">/*!
  * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/component---src-pages-news-js-a9900c0d67642d471ec6.js"/><link as="script" rel="preload" href="/openj9/commons-995392a5e28deac70171.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js"/><link as="fetch" rel="preload" href="/openj9/page-data/news/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="4maxs9">.css-4maxs9{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:4rem;}</style><section class="css-4maxs9"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">What&#x27;s new in the OpenJ9 project</h1><style data-emotion-css="i1r53t">.css-i1r53t{padding-top:2rem;padding-bottom:2rem;padding-left:5%;padding-right:5%;}</style><div class="css-i1r53t"><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Find out what&#x27;s happening at the project. Read about the highlights of our latest release. Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community.</p></div></section><style data-emotion-css="1ra88bn">.css-1ra88bn{padding-left:7%;padding-right:7%;background-color:#F5F9FC;}</style><section class="css-1ra88bn"><style data-emotion-css="vi8sek">.css-vi8sek{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:white;padding-left:5%;padding-right:5%;padding-top:2rem;padding-bottom:2rem;border-radius:0.5rem;}</style><div class="css-vi8sek"><article><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Latest release</h2><style data-emotion-css="11k1070">.css-11k1070{word-wrap:break-word;min-height:10rem;margin-bottom:3rem;}@media screen and (min-width:35rem){.css-11k1070{min-height:13rem;}}@media screen and (min-width:62.5rem){.css-11k1070{min-height:10rem;}}@media screen and (min-width:85rem){.css-11k1070{min-height:8rem;}}.css-11k1070 p{margin:1rem 0;}.css-11k1070 ul{margin-left:5%;}.css-11k1070 ul p{margin:0;}.css-11k1070 a{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}.css-11k1070 a:hover{font-weight:bold;-webkit-text-decoration:none;text-decoration:none;}</style><div class="css-11k1070"><!--
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/component---src-pages-news-js-a9900c0d67642d471ec6.js"/><link as="script" rel="preload" href="/openj9/commons-2ee5517a8df806aebc87.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-f3eca94263f09fdd722d.js"/><link as="fetch" rel="preload" href="/openj9/page-data/news/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="4maxs9">.css-4maxs9{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:4rem;}</style><section class="css-4maxs9"><style data-emotion-css="tfdfz8">.css-tfdfz8{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;}</style><h1 class="css-tfdfz8">What&#x27;s new in the OpenJ9 project</h1><style data-emotion-css="i1r53t">.css-i1r53t{padding-top:2rem;padding-bottom:2rem;padding-left:5%;padding-right:5%;}</style><div class="css-i1r53t"><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Find out what&#x27;s happening at the project. Read about the highlights of our latest release. Catch the latest blog posts from our blog site; get top tips or deep dives about key features of OpenJ9 or simply read about experiences of working in the community.</p></div></section><style data-emotion-css="1ra88bn">.css-1ra88bn{padding-left:7%;padding-right:7%;background-color:#F5F9FC;}</style><section class="css-1ra88bn"><style data-emotion-css="vi8sek">.css-vi8sek{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:white;padding-left:5%;padding-right:5%;padding-top:2rem;padding-bottom:2rem;border-radius:0.5rem;}</style><div class="css-vi8sek"><article><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">Latest release</h2><style data-emotion-css="11k1070">.css-11k1070{word-wrap:break-word;min-height:10rem;margin-bottom:3rem;}@media screen and (min-width:35rem){.css-11k1070{min-height:13rem;}}@media screen and (min-width:62.5rem){.css-11k1070{min-height:10rem;}}@media screen and (min-width:85rem){.css-11k1070{min-height:8rem;}}.css-11k1070 p{margin:1rem 0;}.css-11k1070 ul{margin-left:5%;}.css-11k1070 ul p{margin:0;}.css-11k1070 a{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}.css-11k1070 a:hover{font-weight:bold;-webkit-text-decoration:none;text-decoration:none;}</style><div class="css-11k1070"><!--
 Copyright (c) 2017, 2021 IBM Corp. and others
 
 This program and the accompanying materials are made available under
@@ -43,7 +43,7 @@
 </ul>
 <p>To read more about the changes for v0.25.0 and v.0.26.0, see the <a href="docs/openj9_releases/">OpenJ9 user documentation</a>.</p></div><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_releases/" rel="noopener noreferrer" target="_blank" class="css-1575med">New release info</a></article></div></section><style data-emotion-css="1gvakxd">.css-1gvakxd{padding-left:7%;padding-right:7%;padding-top:2rem;padding-bottom:4rem;background-color:#F5F9FC;}</style><section class="css-1gvakxd"><style data-emotion-css="i51og3">.css-i51og3{margin-top:2rem;}</style><style data-emotion-css="rs5k25">.css-rs5k25{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;margin-top:2rem;}</style><h2 class="css-rs5k25">Recent blogs</h2><style data-emotion-css="khllxn">.css-khllxn{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);}@media screen and (min-width:35rem){.css-khllxn{grid-gap:3rem;grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-khllxn{grid-gap:3rem;grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-khllxn{grid-gap:6rem;grid-template-columns:repeat(2,1fr);}}</style><div class="css-khllxn"><style data-emotion-css="1b6n4o1">.css-1b6n4o1{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}</style><div class="css-1b6n4o1"><div><style data-emotion-css="cvuldg">.css-cvuldg{font-size:1.25rem;}@media screen and (min-width:35rem){.css-cvuldg{font-size:1.4rem;}}@media screen and (min-width:62.5rem){.css-cvuldg{font-size:1.4rem;}}@media screen and (min-width:85rem){.css-cvuldg{font-size:1.4rem;}}</style><style data-emotion-css="12gc2pp">.css-12gc2pp{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:24px;font-size:1.25rem;}@media screen and (min-width:35rem){.css-12gc2pp{font-size:1.4rem;}}@media screen and (min-width:62.5rem){.css-12gc2pp{font-size:1.4rem;}}@media screen and (min-width:85rem){.css-12gc2pp{font-size:1.4rem;}}</style><h3 class="css-12gc2pp"><style data-emotion-css="v1jxfn">.css-v1jxfn{cursor:pointer;color:black;margin-right:0.3rem;-webkit-text-decoration:none;text-decoration:none;}.css-v1jxfn:hover{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://blog.openj9.org/2021/03/20/introducing-the-eclipse-openj9-jitserver-helm-chart/" rel="noopener noreferrer" target="_blank" class="css-v1jxfn"> <!-- -->Introducing the Eclipse OpenJ9 JITServer Helm Chart<style data-emotion-css="1f2k2gl">.css-1f2k2gl{margin-left:0.5rem;}</style><i class="fas fa-external-link-alt fa-xs css-1f2k2gl"></i></a></h3><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9"><b>20 March 2021</b></p></div><p class="css-fza3g9"><p>The OpenJ9 JITServer helm chart provides an easy and straightforward option for deploying and enabling JITServer technology with three simple steps on cloud environment. </p>
 </p></div><style data-emotion-css="144c708">.css-144c708{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><div class="css-144c708"><div><h3 class="css-12gc2pp"><style data-emotion-css="1yj3fc5">.css-1yj3fc5{cursor:pointer;color:black;-webkit-text-decoration:none;text-decoration:none;margin-right:0.3rem;}.css-1yj3fc5:hover{color:#5DA7A3;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://blog.openj9.org/2020/11/19/setting-up-an-openj9-development-environment-with-visual-studio-code-docker-cmake/" rel="noopener noreferrer" target="_blank" class="css-1yj3fc5"> <!-- -->Setting up an OpenJ9 Development Environment with Visual Studio Code + Docker + CMake<i class="fas fa-external-link-alt fa-xs css-1f2k2gl"></i></a></h3><p class="css-fza3g9"><b>19 November 2020</b></p></div><p class="css-fza3g9"><p>Setting up a proficient development environment on a large project such as OpenJ9 with so many pieces in play can be a daunting task. Often times, setting up such a development environment and being able to navigate the codebase with familiar tools and with the full power of an IDE is worth the effort in terms of productivity. This blog post will guide you through setting up a development environment with a one-click build trigger, full Intellisense support, and full debugging support using Visual Studio Code, Docker, DevContainers extensions, and CMake.</p>
-</p></div></div><style data-emotion-css="tzcyjh">.css-tzcyjh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:5%;padding-right:5%;}</style><div class="css-tzcyjh"><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-1575med">See all blogs</a></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
+</p></div></div><style data-emotion-css="tzcyjh">.css-tzcyjh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:5%;padding-right:5%;}</style><div class="css-tzcyjh"><style data-emotion-css="1575med">.css-1575med{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:12rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-1575med:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-1575med">See all blogs</a></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -59,4 +59,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/news/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-742d9c9328e3978208ef.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-51cfc654fd38628b84c4.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/commons-995392a5e28deac70171.js" async=""></script><script src="/openj9/component---src-pages-news-js-a9900c0d67642d471ec6.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/news/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-95eb74b93a53ac66e3a0.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-528a44fbfd1bc3044539.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-f3eca94263f09fdd722d.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/commons-2ee5517a8df806aebc87.js" async=""></script><script src="/openj9/component---src-pages-news-js-a9900c0d67642d471ec6.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/page-data/app-data.json b/page-data/app-data.json
index ebe46b6..90875ec 100644
--- a/page-data/app-data.json
+++ b/page-data/app-data.json
@@ -1 +1 @@
-{"webpackCompilationHash":"b6ffd542314b9ee530a8"}
+{"webpackCompilationHash":"2aa997f4d490d52dbe4c"}
diff --git a/performance/index.html b/performance/index.html
index f1fe827..fec20f3 100644
--- a/performance/index.html
+++ b/performance/index.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/openj9/styles.51a6f681b234fe6f2f73.css">/*!
  * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-performance-js-51cfc654fd38628b84c4.js"/><link as="script" rel="preload" href="/openj9/commons-995392a5e28deac70171.js"/><link as="script" rel="preload" href="/openj9/4a3ea9cd-4fd2ebea143bb6faf8e7.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js"/><link as="fetch" rel="preload" href="/openj9/page-data/performance/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="10bmiq8">.css-10bmiq8{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:4rem;padding-bottom:0.1rem;}</style><section class="css-10bmiq8"><style data-emotion-css="acwcvw">.css-acwcvw{margin-bottom:1rem;}</style><style data-emotion-css="37umsu">.css-37umsu{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:1rem;}</style><h1 class="css-37umsu">Performance Overview</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads. We regularly test and optimize OpenJ9 performance when running the most popular Java frameworks such as Open Liberty, Quarkus, SpringBoot, and Micronaut. We&#x27;re proud of our results.</p></section><style data-emotion-css="1r67qcz">.css-1r67qcz{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:0.1rem;padding-bottom:4rem;}</style><section id="openjdk11" class="css-1r67qcz"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 11 performance with Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">OpenJDK 11 with OpenJ9 significantly outperforms HotSpot on Liberty startup, ramp up, and footprint.</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="97vs5v">.css-97vs5v{box-shadow:#DADADA 0 0 1.25rem;border-radius:0.5rem;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-97vs5v"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">51% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="1dvshnm">.css-1dvshnm{box-shadow-bottom:cardShadow;border-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;background-color:white;border-top:0.35rem solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-1dvshnm"><p>By using shared classes cache and AOT technology, OpenJ9 starts in roughly half the time it takes HotSpot.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">50% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>After startup, the OpenJ9 footprint is half the size of HotSpot, which makes it ideal for cloud workloads.</p></div></div><div class="css-97vs5v"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>OpenJ9 reaches peak throughput much faster than HotSpot making it especially suitable for running short-lived applications.</p></div></div><div class="css-97vs5v"><h5 class="css-1s2mfp0">33% smaller footprint during load</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>Consistent with the footprint results after startup, the OpenJ9 footprint remains much smaller than HotSpot when load is applied.</p></div></div></div><style data-emotion-css="1l4w6pd">.css-1l4w6pd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}</style><div class="css-1l4w6pd"><style data-emotion-css="v732fk">.css-v732fk{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:7rem;}.css-v732fk:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9-website/blob/master/benchmark/openjdk11-daytrader7.md" rel="noopener noreferrer" target="_blank" class="css-v732fk">Show me performance details</a></div><style data-emotion-css="1c9301q">.css-1c9301q{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);padding-top:4rem;}@media screen and (min-width:35rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1c9301q{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1c9301q"><style data-emotion-css="aratco">.css-aratco{display:block;grid-gap:0.5rem;grid-template-columns:repeat(1,1fr);grid-template-rows:5rem 1.5rem 1.5rem;color:#0b4237;box-sizing:border-box;margin-bottom:2rem;}@media screen and (min-width:35rem){.css-aratco{display:block;}}@media screen and (min-width:62.5rem){.css-aratco{display:block;}}@media screen and (min-width:85rem){.css-aratco{display:grid;}}</style><blockquote class="css-aratco"><style data-emotion-css="1fr9i7j">.css-1fr9i7j{font-family:'Gelasio',serif;font-style:italic;font-size:1.3rem;line-height:1.5rem;}</style><p class="css-1fr9i7j">With version 19.0.0.9 of Open Liberty and OpenJ9, Open Liberty managed to cut the startup time to their goal of almost exactly one second.</p><style data-emotion-css="1w1vbxm">.css-1w1vbxm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><cite class="css-1w1vbxm"><style data-emotion-css="2o9fek">.css-2o9fek{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-2o9fek:hover{color:#0b4237;-webkit-text-decoration:none;text-decoration:none;font-weight:bold;}</style><a href="https://openliberty.io/blog/2019/10/30/faster-startup-open-liberty.html" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Open Liberty blog<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote><blockquote class="css-aratco"><p class="css-1fr9i7j">Payara found that with datagrid enabled, Payara Micro with class data sharing, booted in about 6 seconds, improving startup time by almost 40%.</p><cite class="css-1w1vbxm"><a href="https://blog.payara.fish/faster-payara-micro-startup-times-with-openj9" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Payara Enterprise<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote></div></section><style data-emotion-css="1r67qcz">.css-1r67qcz{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:0.1rem;padding-bottom:4rem;}</style><section id="openjdk11quarkus" class="css-1r67qcz"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 11 performance with Quarkus and Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">Using Quarkus with OpenJ9 instead of HotSpot makes Java even more supersonic and subatomic!</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="97vs5v">.css-97vs5v{box-shadow:#DADADA 0 0 1.25rem;border-radius:0.5rem;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-97vs5v"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">66% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="1dvshnm">.css-1dvshnm{box-shadow-bottom:cardShadow;border-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;background-color:white;border-top:0.35rem solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-1dvshnm"><p>Quarkus might be supersonic, but running it with OpenJ9 instead of HotSpot reduces startup time by a further 66%.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">18% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>The ultra-supersonic startup time comes at some tradeoff to footprint, but OpenJ9 still has an edge over HotSpot.</p></div></div><div class="css-97vs5v"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>For short-lived cloud workloads running on Quarkus, OpenJ9 delivers excellent ramp-up performance compared to HotSpot.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">18% smaller footprint during load</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>When ramp-up completes, as well as getting there faster, OpenJ9 still retains a smaller footprint than HotSpot.</p></div></div></div><style data-emotion-css="1l4w6pd">.css-1l4w6pd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}</style><div class="css-1l4w6pd"><style data-emotion-css="v732fk">.css-v732fk{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:7rem;}.css-v732fk:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9-website/blob/master/benchmark/quarkus.md" rel="noopener noreferrer" target="_blank" class="css-v732fk">Show me performance details</a></div><style data-emotion-css="1c9301q">.css-1c9301q{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);padding-top:4rem;}@media screen and (min-width:35rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1c9301q{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1c9301q"><style data-emotion-css="aratco">.css-aratco{display:block;grid-gap:0.5rem;grid-template-columns:repeat(1,1fr);grid-template-rows:5rem 1.5rem 1.5rem;color:#0b4237;box-sizing:border-box;margin-bottom:2rem;}@media screen and (min-width:35rem){.css-aratco{display:block;}}@media screen and (min-width:62.5rem){.css-aratco{display:block;}}@media screen and (min-width:85rem){.css-aratco{display:grid;}}</style><blockquote class="css-aratco"><style data-emotion-css="1fr9i7j">.css-1fr9i7j{font-family:'Gelasio',serif;font-style:italic;font-size:1.3rem;line-height:1.5rem;}</style><p class="css-1fr9i7j">Trendyol Tech found 40% faster startup time and 73 MB less memory footprint when they ran Undertow + Rest + Couchbase Client with OpenJ9.</p><style data-emotion-css="1w1vbxm">.css-1w1vbxm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><cite class="css-1w1vbxm"><style data-emotion-css="2o9fek">.css-2o9fek{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-2o9fek:hover{color:#0b4237;-webkit-text-decoration:none;text-decoration:none;font-weight:bold;}</style><a href="https://medium.com/trendyol-tech/how-trendyol-jvm-applications-consume-less-memory-in-the-production-environment-87e419dd18a0" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Trendyol Tech blog<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote><blockquote class="css-aratco"><p class="css-1fr9i7j">As reported on twitter, Micronautfw startup with OpenJ9 is as fast as Node.js.</p><cite class="css-1w1vbxm"><a href="https://twitter.com/graemerocher/status/1090204088065802240?lang=en" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Graeme Rocher, Micronaut<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote></div></section><style data-emotion-css="1r67qcz">.css-1r67qcz{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:0.1rem;padding-bottom:4rem;}</style><section id="openjdk8" class="css-1r67qcz"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 8 performance with Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">Testing shows similar results for OpenJDK 8; OpenJ9 demonstrates significantly better performance than OpenJDK 8 with HotSpot</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="97vs5v">.css-97vs5v{box-shadow:#DADADA 0 0 1.25rem;border-radius:0.5rem;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-97vs5v"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">42% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="1dvshnm">.css-1dvshnm{box-shadow-bottom:cardShadow;border-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;background-color:white;border-top:0.35rem solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-1dvshnm"><p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">66% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.</p></div></div><div class="css-97vs5v"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud.</p></div></div><div class="css-97vs5v"><h5 class="css-1s2mfp0">63% smaller footprint during load</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot.</p></div></div></div><style data-emotion-css="1l4w6pd">.css-1l4w6pd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}</style><div class="css-1l4w6pd"><style data-emotion-css="v732fk">.css-v732fk{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:7rem;}.css-v732fk:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse/openj9-website/blob/master/benchmark/daytrader7.md" rel="noopener noreferrer" target="_blank" class="css-v732fk">Show me performance details</a></div><style data-emotion-css="1c9301q">.css-1c9301q{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);padding-top:4rem;}@media screen and (min-width:35rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1c9301q{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1c9301q"><style data-emotion-css="aratco">.css-aratco{display:block;grid-gap:0.5rem;grid-template-columns:repeat(1,1fr);grid-template-rows:5rem 1.5rem 1.5rem;color:#0b4237;box-sizing:border-box;margin-bottom:2rem;}@media screen and (min-width:35rem){.css-aratco{display:block;}}@media screen and (min-width:62.5rem){.css-aratco{display:block;}}@media screen and (min-width:85rem){.css-aratco{display:grid;}}</style><blockquote class="css-aratco"><style data-emotion-css="1fr9i7j">.css-1fr9i7j{font-family:'Gelasio',serif;font-style:italic;font-size:1.3rem;line-height:1.5rem;}</style><p class="css-1fr9i7j">Vert.x found that OpenJ9 was very efficient with respect to memory consumption, without compromising the latency.</p><style data-emotion-css="1w1vbxm">.css-1w1vbxm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><cite class="css-1w1vbxm"><style data-emotion-css="2o9fek">.css-2o9fek{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-2o9fek:hover{color:#0b4237;-webkit-text-decoration:none;text-decoration:none;font-weight:bold;}</style><a href="https://how-to.vertx.io/openj9-howto/" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Eclipse Vert.x how-to guide<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote><blockquote class="css-aratco"><p class="css-1fr9i7j">As reported on the Amis technology blog, when testing a number of JVMs, OpenJDK with OpenJ9 was the fastest to start for every framework.</p><cite class="css-1w1vbxm"><a href="https://technology.amis.nl/2019/09/03/microservice-framework-startup-time-on-different-jvms-aot-and-jit/" rel="noopener noreferrer" target="_blank" class="css-2o9fek">AMIS technology blog<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-bacteria:before{content:"\E059"}.fa-bacterium:before{content:"\E05A"}.fa-bahai:before{content:"\F666"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-box-tissue:before{content:"\E05B"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buy-n-large:before{content:"\F8A6"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caravan:before{content:"\F8FF"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-alt:before{content:"\F422"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-cotton-bureau:before{content:"\F89E"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dailymotion:before{content:"\E052"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-deezer:before{content:"\E077"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-disease:before{content:"\F7FA"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edge-legacy:before{content:"\E078"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-alt:before{content:"\F424"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-faucet:before{content:"\E005"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-firefox-browser:before{content:"\E007"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-pay:before{content:"\E079"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-medical:before{content:"\E05C"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-holding-water:before{content:"\F4C1"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-sparkles:before{content:"\E05D"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-hands-wash:before{content:"\E05E"}.fa-handshake:before{content:"\F2B5"}.fa-handshake-alt-slash:before{content:"\E05F"}.fa-handshake-slash:before{content:"\E060"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-cowboy:before{content:"\F8C0"}.fa-hat-cowboy-side:before{content:"\F8C1"}.fa-hat-wizard:before{content:"\F6E8"}.fa-hdd:before{content:"\F0A0"}.fa-head-side-cough:before{content:"\E061"}.fa-head-side-cough-slash:before{content:"\E062"}.fa-head-side-mask:before{content:"\E063"}.fa-head-side-virus:before{content:"\E064"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hospital-user:before{content:"\F80D"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-house-user:before{content:"\E065"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-ideal:before{content:"\E013"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-instagram-square:before{content:"\E055"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-house:before{content:"\E066"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lungs:before{content:"\F604"}.fa-lungs-virus:before{content:"\E067"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-mdb:before{content:"\F8CA"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microblog:before{content:"\E01A"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mixer:before{content:"\E056"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse:before{content:"\F8CC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-orcid:before{content:"\F8D2"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-arrows:before{content:"\E068"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-pied-piper-square:before{content:"\E01E"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-plane-slash:before{content:"\E069"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pump-medical:before{content:"\E06A"}.fa-pump-soap:before{content:"\E06B"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-record-vinyl:before{content:"\F8D9"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-rust:before{content:"\E07A"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-shield-virus:before{content:"\E06C"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopify:before{content:"\E057"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sink:before{content:"\E06D"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-soap:before{content:"\E06E"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-stopwatch-20:before{content:"\E06F"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-store-alt-slash:before{content:"\E070"}.fa-store-slash:before{content:"\E071"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swift:before{content:"\F8E1"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-tiktok:before{content:"\E07B"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toilet-paper-slash:before{content:"\E072"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-trailer:before{content:"\E041"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbraco:before{content:"\F8E8"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-unity:before{content:"\E049"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-unsplash:before{content:"\E07C"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-users-slash:before{content:"\E073"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-virus:before{content:"\E074"}.fa-virus-slash:before{content:"\E075"}.fa-viruses:before{content:"\E076"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot);src:url(/openj9/static/fa-brands-400-0fabb6606be4c45acfeedd115d0caca4.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-brands-400-cac68c831145804808381a7032fdc7c2.woff2) format("woff2"),url(/openj9/static/fa-brands-400-dc0bd022735ed218df547742a1b2f172.woff) format("woff"),url(/openj9/static/fa-brands-400-085b1dd8427dbeff10bd55410915a3f6.ttf) format("truetype"),url(/openj9/static/fa-brands-400-ccfdb9dc442be0c629d331e94497428b.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot);src:url(/openj9/static/fa-regular-400-ad3a7c0d77e09602f4ab73db3660ffd8.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-regular-400-3a3398a6ef60fc64eacf45665958342e.woff2) format("woff2"),url(/openj9/static/fa-regular-400-05b53beb21e3ef13d28244545977152d.woff) format("woff"),url(/openj9/static/fa-regular-400-1a78af4105d4d56e6c34f76dc70bf1bc.ttf) format("truetype"),url(/openj9/static/fa-regular-400-e75dfd904d366a2560c63c23cfc98ef8.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot);src:url(/openj9/static/fa-solid-900-89bd2e38475e441a5cd70f663f921d61.eot?#iefix) format("embedded-opentype"),url(/openj9/static/fa-solid-900-c500da19d776384ba69573ae6fe274e7.woff2) format("woff2"),url(/openj9/static/fa-solid-900-ee09ad7553b8ad3d81150d609d5341a0.woff) format("woff"),url(/openj9/static/fa-solid-900-781e85bb50c8e8301c30de56b31b1f04.ttf) format("truetype"),url(/openj9/static/fa-solid-900-03ba7cb710104df27f1c9c46d64bee4e.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}</style><meta name="generator" content="Gatsby 2.24.47"/><link rel="icon" href="/openj9/favicon.svg?v=8ca0cb061be306c2765110f5ef6c717b" type="image/svg+xml"/><link rel="icon" href="/openj9/favicon-32x32.png?v=8ca0cb061be306c2765110f5ef6c717b" type="image/png"/><link rel="manifest" href="/openj9/manifest.webmanifest"/><link rel="apple-touch-icon" sizes="48x48" href="/openj9/icons/icon-48x48.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="72x72" href="/openj9/icons/icon-72x72.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="96x96" href="/openj9/icons/icon-96x96.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="144x144" href="/openj9/icons/icon-144x144.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="192x192" href="/openj9/icons/icon-192x192.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="256x256" href="/openj9/icons/icon-256x256.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="384x384" href="/openj9/icons/icon-384x384.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="apple-touch-icon" sizes="512x512" href="/openj9/icons/icon-512x512.png?v=8ca0cb061be306c2765110f5ef6c717b"/><link rel="preconnect" href="https://www.google-analytics.com"/><link rel="dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/openj9/component---src-pages-performance-js-528a44fbfd1bc3044539.js"/><link as="script" rel="preload" href="/openj9/commons-2ee5517a8df806aebc87.js"/><link as="script" rel="preload" href="/openj9/4a3ea9cd-4fd2ebea143bb6faf8e7.js"/><link as="script" rel="preload" href="/openj9/app-35f96420b86d21858873.js"/><link as="script" rel="preload" href="/openj9/framework-63ec46a3540d83159f28.js"/><link as="script" rel="preload" href="/openj9/styles-f7a64dad1c13bebc31fd.js"/><link as="script" rel="preload" href="/openj9/webpack-runtime-f3eca94263f09fdd722d.js"/><link as="fetch" rel="preload" href="/openj9/page-data/performance/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/sq/d/965098542.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/openj9/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="t923zi">body{color:text;background-color:var(--theme-ui-colors-background,#FFFFFF);}</style><style data-emotion-css="1gb9wyy">*{box-sizing:border-box;}body{margin:0;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.5;font-weight:400;}</style><style data-emotion-css="1xgro3h">*{padding:0;margin:0;}</style><style data-emotion-css="gns71q">.css-gns71q{display:none;background-color:var(--theme-ui-colors-primary,#434343);width:100%;color:var(--theme-ui-colors-lightText,#d8d8d8);padding-left:40px;padding-right:40px;padding-top:32px;padding-bottom:32px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media screen and (min-width:35rem){.css-gns71q{display:none;}}@media screen and (min-width:62.5rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:85rem){.css-gns71q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><header class="css-gns71q"><style data-emotion-css="4golyb">.css-4golyb{-webkit-flex:1;-ms-flex:1;flex:1;opacity:1;pointer-events:all;}</style><div class="css-4golyb"><a href="/openj9/"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNzlweCIgaGVpZ2h0PSIzM3B4IiB2aWV3Qm94PSIwIDAgNzkgMzMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Mb2dvPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkxvZ28iIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNDUyMzE4LDE5LjQ2MTIzMzcgQzkuMjQwNjc1MjUsMjAuNjk4NDMyOCA4LjEyNjE5NTA0LDIxLjMxNjY4NzggNi43MDA3Nzc4OSwyMS4zMTY2ODc4IEM1LjMxNTQ1ODI5LDIxLjMxNjY4NzggNC4yMDg2NTAxNywyMC43MTkxMTAzIDMuMzgwMjA4NzgsMTkuNTIzODE3NCBDMi41NTIyMDE2NiwxOC4zMjgyNDg5IDIuMTM4MDUzMzUsMTYuNzc4NDA3MSAyLjEzODA1MzM1LDE0Ljg3MzMyNzMgQzIuMTM4MDUzMzUsMTIuOTIyNzU3MSAyLjU0ODE0ODQ4LDExLjM0Mzk2NyAzLjM2ODMzODc1LDEwLjEzNzIzMjYgQzQuMTg4NjczNzgsOC45MzA2MzYxMiA1LjI5NTE5MjM4LDguMzI2OTkzMjQgNi42ODg3NjMxLDguMzI2OTkzMjQgQzguMDY2NTU1MzcsOC4zMjY5OTMyNCA5LjE3MTE5MjE0LDguODg1MjgzNjUgMTAuMDAzMzk3MiwxMC4wMDA0ODYgQzEwLjgzNTYwMjMsMTEuMTE2Mzc3NSAxMS4yNTE3NzcyLDEyLjY3NjI4MjIgMTEuMjUxNzc3MiwxNC42Nzk2NDg4IEMxMS4yNTE3NzcyLDE2LjYzMDM1NjggMTAuODQ5NDk4OSwxOC4yMjQxNzI1IDEwLjA0NTIzMTgsMTkuNDYxMjMzNyBNNi43MTI3OTI2OCw2LjczNDY5Mzg4IEM0LjY5MDExMDI1LDYuNzM0NjkzODggMy4wNjU2NTI5Myw3LjUwMTQxMjcgMS44MzkyNzU5NSw5LjAzNDAyMzI0IEMwLjYxMzE4ODQ4OSwxMC41NjY3NzE2IDAsMTIuNTA5NDg0NCAwLDE0Ljg2MTg4NTggQzAsMTcuMTE1NzI0OCAwLjU4NTM5NTI0MywxOS4wMTg1OTkxIDEuNzU2MDQwOTcsMjAuNTcwMDk1IEMyLjkyNjU0MTk1LDIyLjEyMjAwNDQgNC41NTg4MTYxMiwyMi44OTc5NTkyIDYuNjUzMDA4MjUsMjIuODk3OTU5MiBDOC43NzkxOTE1NywyMi44OTc5NTkyIDEwLjQzMzQ2ODcsMjIuMDgwMDk4MiAxMS42MTYyNzQsMjAuNDQ1MDY1NSBDMTIuNzk4NTAwMiwxOC44MDk3NTcxIDEzLjM4OTgzMDUsMTYuODkxNDQzNyAxMy4zODk4MzA1LDE0LjY5MTIyODEgQzEzLjM4OTgzMDUsMTIuMzk5NjE4MyAxMi43ODA1NTA0LDEwLjUwMDQ2NiAxMS41NjIyNzk4LDguOTkzOTA5MDQgQzEwLjM0Mzg2NDUsNy40ODgwNDEzIDguNzI3MzY4NzQsNi43MzQ2OTM4OCA2LjcxMjc5MjY4LDYuNzM0NjkzODgiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNMjIuOTc0MzgxNywyMS4zNjc1NDcyIEMyMi4zMTQxOTk5LDIyLjA3MDg5MDkgMjEuNTU1MzY4NiwyMi40MjMxMzExIDIwLjY5OTU0OTUsMjIuNDIzMTMxMSBDMTkuOTYwMDU1MywyMi40MjMxMzExIDE5LjI1MDkyNjQsMjIuMTMwOTk0OCAxOC41Njk3NDU3LDIxLjU0NjU4MDEgQzE3Ljg4ODI2MjksMjAuOTYzMDE3OSAxNy41MTMzMDM4LDIwLjIyMzAxNTEgMTcuMzYyMjMyNSwxOS4zMjc5OTI0IEwxNy4zNjIyMzI1LDE1Ljk4NjA0NCBDMTcuNjY0Mzc1MiwxNS4xNzMxNDkxIDE3Ljk2OTM4ODIsMTQuNDgxNDU2OCAxOC41ODg0Nzg2LDEzLjkxMDk2NjggQzE5LjIwNzU2ODksMTMuMzQwNDc2OSAxOS45MDY3MjcxLDEzLjA1NTE2MDkgMjAuNjg3OTE3LDEzLjA1NTE2MDkgQzIxLjY3NjgzLDEzLjA1NTE2MDkgMjIuNDcwNDA3NywxMy40NTk2OTAxIDIzLjA2ODgwMTMsMTQuMjY4NjA2NSBDMjMuNjY2ODkyNywxNS4wNzc1MjI4IDIzLjk2NjAxNCwxNi4yMjg0NDg5IDIzLjk2NjAxNCwxNy43MjE1MjY5IEMyMy45NjYwMTQsMTkuNDQ4OTEwNyAyMy42MzUxNjc3LDIwLjY2NDYyOTcgMjIuOTc0MzgxNywyMS4zNjc1NDcyIE0yMS4xNjI3MzQyLDExLjQ0ODk3OTYgQzE5LjQwMzM1NzQsMTEuNDQ4OTc5NiAxOC4xMTc1ODkyLDEyLjMyNDUzNiAxNy4yMTExNjEyLDE0LjA3NDc5NjIgTDE3LjIxMTE2MTIsMTEuNjk4MjA0OCBMMTUuMzk4MzA1MSwxMS42OTgyMDQ4IEwxNS4zOTgzMDUxLDI3LjYxMjI0NDkgTDE3LjM2MjIzMjUsMjcuNjEyMjQ0OSBMMTcuMzYyMjMyNSwyMS44MjQ5MzM3IEMxOC4yNjg2NjA1LDIzLjIzOTQzNjEgMTkuNTA4OTU2MiwyMy45NDcwNDI1IDIxLjA4NzY1MTcsMjMuOTQ3MDQyNSBDMjIuNTU4OTM1NSwyMy45NDcwNDI1IDIzLjc2MjgyMywyMy4zNzk2Nzg2IDI0LjcwMjAzMzUsMjIuMjQ1NTE5MSBDMjUuNjQwNzkwOCwyMS4xMTA3OTEyIDI2LjExMDE2OTUsMTkuNTc3NTAxOCAyNi4xMTAxNjk1LDE3LjY0NTM2NjkgQzI2LjExMDE2OTUsMTUuODUzNDc0NCAyNS42NjI5OTgzLDE0LjM3MjkwMDMgMjQuNzUwNTI3NCwxMy4yMDMzNjA0IEMyMy44Mzc2MDMzLDEyLjAzMzY3ODUgMjIuNjQ4MDY3NiwxMS40NDg5Nzk2IDIxLjE2MjczNDIsMTEuNDQ4OTc5NiIgaWQ9IlNoYXBlIiBmaWxsPSIjNURBN0EzIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yNjM1ODc2LDE2LjM2MzMzNjcgQzMwLjM0MTcwNzYsMTUuMjU4OTg2OCAzMC43MDEzMTY2LDE0LjQwODM2MTMgMzEuMzQxNzAwNiwxMy43NzA0NjExIEMzMS45ODE2NTYxLDEzLjEzMjQyMyAzMi43NjE0Mjc5LDEyLjgwNDAxNjkgMzMuNjgwNzMwMiwxMi44MDQwMTY5IEMzNC4zNjQxMDE2LDEyLjgwNDAxNjkgMzQuOTQ5MDczMiwxMi45NzU3NDMzIDM1LjQzNjUwMiwxMy4zMjkxMzUzIEMzNS45MjM1MDIzLDEzLjY4MTk3NTEgMzYuMjY5NDAxLDE0LjEyNTc4NTcgMzYuNDczNDg0MSwxNC42MjcwMjI1IEMzNi42NzgxMzg1LDE1LjEyODEyMTMgMzYuNzg3NTM1MSwxNS42NzMxMTggMzYuODAzMzg3NiwxNi4zNjMzMzY3IEwzMC4yNjM1ODc2LDE2LjM2MzMzNjcgWiBNMzcuMzc1MjIwMiwxMy4wMzA2ODQ4IEMzNi40MjgzNTQ1LDExLjk5MDI0OTEgMzUuMTc3NDM1LDExLjQ0ODk3OTYgMzMuNjIxNzQ3NSwxMS40NDg5Nzk2IEMzMi4wNDI5MjM5LDExLjQ0ODk3OTYgMzAuNzMwNTkzOCwxMi4wMDI1MzUgMjkuNjg2MDQyNCwxMy4xMzE0NTY3IEMyOC42NDEyMDU0LDE0LjI1OTgyNjIgMjguMTE4NjQ0MSwxNS43MzQ5NjE2IDI4LjExODY0NDEsMTcuNTY2OTQwMSBDMjguMTE4NjQ0MSwxOS4zNjA4MTg0IDI4LjYyMTA2ODQsMjAuODA3Mzc4OCAyOS42MjY5MTY4LDIxLjkxMzM4NTIgQzMwLjYzMjQ3OTYsMjMuMDE5OTQzOCAzMS45NDg1MjMsMjMuNTcxNDI4NiAzMy41NzQ5MDQsMjMuNTcxNDI4NiBDMzQuODA4MjU3MywyMy41NzE0Mjg2IDM1Ljg4MDIyOTIsMjMuMjQ4OTU4NCAzNi43OTE1MzM5LDIyLjYwNDcwODMgQzM3LjcwMzEyNDIsMjEuOTYwNzM0MiAzOC4zMTU4MDIsMjEuMTQ3MzgwNSAzOC42MzAxMzg2LDIwLjE2NDA5NSBMMzYuOTA5OTI3OCwxOS44MjI3MTI4IEMzNi4yODg5NjY3LDIxLjMzMzQ2MzUgMzUuMjIwNTY1MiwyMi4wODkyNTI5IDMzLjcwNDI5NDcsMjIuMDg5MjUyOSBDMzIuODYzNjgzNywyMi4wODkyNTI5IDMyLjA2NjM0NTYsMjEuODI4MDc0MiAzMS4zMTIyODA3LDIxLjIyMDY4MTcgQzMwLjU1ODA3MjksMjAuNjEzMDEzMiAzMC4xODA3NTQ3LDE5LjQwMDI5OSAzMC4xODA3NTQ3LDE3Ljc0Mzc3NDEgTDM4LjgzMDUwODUsMTcuNzQzNzc0MSBDMzguODA2OTQzOSwxNS41MzUwNzQzIDM4LjMyMTgwMDIsMTQuMDcwODQ0MyAzNy4zNzUyMjAyLDEzLjAzMDY4NDggTDM3LjM3NTIyMDIsMTMuMDMwNjg0OCBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTQ4LjQzNjA2MzksMTIuMTMxMzMxIEM0Ny43NjA0NDM5LDExLjY3NjU3MTQgNDYuOTE5MzU2NiwxMS40NDg5Nzk2IDQ1Ljk1ODg0MjIsMTEuNDQ4OTc5NiBDNDQuMjkzMDQ0MywxMS40NDg5Nzk2IDQyLjk1MDQ1NjMsMTIuMjgxMTc0IDQxLjg2ODk3LDEzLjk0NTEzODggTDQxLjg2ODk3LDExLjY5NzA2ODggTDQwLjE2OTQ5MTUsMTEuNjk3MDY4OCBMNDAuMTY5NDkxNSwyMy41NzE0Mjg2IEw0Mi4wMjM0NjgxLDIzLjU3MTQyODYgTDQyLjAyMzQ2ODEsMTcuMDk0Mzg3NSBDNDIuMDIzNDY4MSwxNS44NzQwMTQ3IDQyLjM4NTkyMDUsMTQuODg5OTk4MiA0My4wNzg1MzUyLDE0LjE0MzE4NiBDNDMuNzcwNjg2NCwxMy4zOTY3OTggNDQuNjM1NDEyLDEzLjAyMzYwNCA0NS42NTUwOTkxLDEzLjAyMzYwNCBDNDYuMzk0NjgxMiwxMy4wMjM2MDQgNDcuMDQyODAwNSwxMy4yNDUyNTg2IDQ3LjU2MTE0MTUsMTMuNjg4NTY3OSBDNDguMDc5NjM2OSwxNC4xMzE1OTQ0IDQ4LjM1Nzg4NzksMTQuODk3NjMxNyA0OC4zNTc4ODc5LDE1Ljk4NjUzODQgTDQ4LjM1Nzg4NzksMjMuNTcxNDI4NiBMNTAuMjExODY0NCwyMy41NzE0Mjg2IEw1MC4yMTE4NjQ0LDE2Ljc0NDUxODEgQzUwLjIxMTg2NDQsMTUuMjU5Mzc1NSA1MC4wODE0NjgxLDE0LjIzMzA5MTkgNDkuODMwNDA4NywxMy42NjUyNDMyIEM0OS41Nzk2NTg0LDEzLjA5NzM5NDYgNDkuMTExODM4MywxMi41ODYwOTA1IDQ4LjQzNjA2MzksMTIuMTMxMzMxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzVEQTdBMyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTcuNzMyOTYwNywxOS4zMjIyNzI0IEM1Ny43MzI5NjA3LDIwLjIxNjkxMjkgNTcuNjY0MDE3MywyMC44NjM1NjU5IDU3LjUyOTgzNDEsMjEuMjYzMjQ2NCBDNTcuMzk1MjIzNiwyMS42NjI0OTE5IDU3LjEzMTQxNTQsMjEuOTg3NjMxMSA1Ni43Mzk0MDY4LDIyLjIzOTM4OTIgQzU2LjM0NzY4MywyMi40OTA4NTczIDU1LjY5NjI4MiwyMi42MTYxNTYzIDU0Ljg2OTM4ODcsMjIuNjE2MTU2MyBDNTQuMjg4MDcwNywyMi42MTYxNTYzIDUzLjc0NDUwMDUsMjIuNTM4NTY5NSA1Mi44ODk4MzA1LDIyLjM4MzI1MSBMNTIuODg5ODMwNSwyMy45MzQ2OTYgQzUzLjc0NDUwMDUsMjQuMTQxMjA3MyA1NC4zNzg4MDgyLDI0LjI0NDg5OCA1NS4wOTc0NDMyLDI0LjI0NDg5OCBDNTYuNDM5NTYsMjQuMjQ0ODk4IDU3LjUzNTEwNDYsMjMuODgyNDg4MSA1OC4zNDc4OTU4LDIzLjE1ODM5MzQgQzU5LjE2MDQwMjEsMjIuNDMzODYzNyA1OS41ODQ3NDU4LDIxLjE1NDkxNSA1OS41ODQ3NDU4LDE5LjMyMTExMjMgTDU5LjU4NDc0NTgsOC43NTUxMDIwNCBMNTcuNzMyOTYwNyw4Ljc1NTEwMjA0IEw1Ny43MzI5NjA3LDE5LjMyMjI3MjQgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02OS4yNDA4MTE5LDE2LjIyNTg5MDQgQzY4LjU2Njc1NzgsMTYuOTQyNzI2NiA2Ny43MzIxNTUyLDE3LjMwMTIxNiA2Ni43Mzc0MTk4LDE3LjMwMTIxNiBDNjUuODMzODMyNiwxNy4zMDEyMTYgNjUuMDQyMDMzNywxNi45OTE5NDIyIDY0LjM2MTA1MzQsMTYuMzczNTM3MyBDNjMuNjgwMjExNiwxNS43NTQ3MDQzIDYzLjMzOTcyMTUsMTQuOTE0MTg3MiA2My4zMzk3MjE1LDEzLjg1MTI3MjQgQzYzLjMzOTcyMTUsMTIuODYxOTY3MiA2My42NDY4Mjc1LDEyLjAyMjQ0ODUgNjQuMjYwNzYyNiwxMS4zMzQ5OTkxIEM2NC44NzQxNDM1LDEwLjY0NzEyMTYgNjUuNzEwNDA4NCwxMC4zMDMzMjU2IDY2Ljc2OTAwMzEsMTAuMzAzMzI1NiBDNjcuODEzMzI5OCwxMC4zMDMzMjU2IDY4LjY1NDk5NzEsMTAuNjM3ODQ5MSA2OS4yOTM0NTA4LDExLjMwNzYwOTUgQzY5LjkzMjE4MTUsMTEuOTc3MjI3MiA3MC4yNTE0Nzc2LDEyLjc3ODA4NjYgNzAuMjUxNDc3NiwxMy43MDkzMzE3IEM3MC4yNTE0Nzc2LDE0LjY3MDEwNjIgNjkuOTE0MzEyLDE1LjUwOTA1NDIgNjkuMjQwODExOSwxNi4yMjU4OTA0IE03MC44NTQ3NDYzLDEwLjcyNDE1NDggQzY5Ljg4ODI2OTYsOS40MTIwMjM1NyA2OC40OTgwNTAzLDguNzU1MTAyMDQgNjYuNjg0MjI2OCw4Ljc1NTEwMjA0IEM2NS4yMDI1ODIxLDguNzU1MTAyMDQgNjMuOTgzNDM5LDkuMjU3MjQ0MDEgNjMuMDI3NDkwMSwxMC4yNjExIEM2Mi4wNzA5ODcsMTEuMjY1MjQxMyA2MS41OTMyMjAzLDEyLjQ3MjgwNzEgNjEuNTkzMjIwMywxMy44ODQyMjU1IEM2MS41OTMyMjAzLDE1LjI3MzgxNzggNjIuMDQ3OTkyMiwxNi40Mzk1ODYgNjIuOTU4MzY3LDE3LjM4MTY3MjkgQzYzLjg2ODg4MDMsMTguMzIzNjE3IDY0Ljk5NDI0MzIsMTguNzk0ODAzMSA2Ni4zMzQ3MzI3LDE4Ljc5NDgwMzEgQzY4LjIzMzA1NTMsMTguNzk0ODAzMSA2OS42NTUxMzUsMTcuOTAwNzkwNiA3MC42MDA4MzMyLDE2LjExMzA1MTEgQzcwLjU3OTUwMDYsMTguMTU1MTQyNyA3MC4yMjEyNzk1LDE5Ljc3MjI2ODEgNjkuNTI2NTg1NCwyMC45NjM5OTkzIEM2OC44MzEzMzcyLDIyLjE1NjAxNTkgNjcuNzk1ODc1OSwyMi43NTE0NTM2IDY2LjQxOTUwODksMjIuNzUxNDUzNiBDNjUuMDAxNTg0OSwyMi43NTE0NTM2IDYzLjk5MjMwNDUsMjIuMDY1MDAyNyA2My4zOTIzNjAzLDIwLjY5MTM4NzYgTDYxLjk0MjI5ODksMjEuMjM2NjExMSBDNjIuNzA0MTc2OCwyMy4yNDIxODMyIDY0LjE4OTU2MTYsMjQuMjQ0ODk4IDY2LjM5ODczMDQsMjQuMjQ0ODk4IEM2OC4yODk0MzQyLDI0LjI0NDg5OCA2OS43NDY5NzU5LDIzLjQ5NzgxOTEgNzAuNzcwMTA4NiwyMi4wMDM1MTg4IEM3MS43OTMyNDEzLDIwLjUwOTA3NTggNzIuMzA1MDg0NywxOC41NTQ1NzM4IDcyLjMwNTA4NDcsMTYuMTQwMDEyNyBDNzIuMzA1MDg0NywxMy44NDIxNDI2IDcxLjgyMTYzODYsMTIuMDM2ODU2NiA3MC44NTQ3NDYzLDEwLjcyNDE1NDgiIGlkPSJTaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNDguODQzNzkwMSwyNC42NDQ3MTU3IEM0OS41NDM5Mzk0LDI1LjkwNTU0OTIgNTAuNDE5NDA5OCwyNy4wOTIxMjI5IDUxLjQ3MDIwMTMsMjguMTY3MjQ1MyBDNTcuNzY4MDE2NSwzNC42MTA5MTgyIDY3Ljk3ODc5MjcsMzQuNjEwOTE4MiA3NC4yNzY2MDc5LDI4LjE2NzI0NTMgQzgwLjU3NDQ2NCwyMS43MjM2MDAzIDgwLjU3NDQ2NCwxMS4yNzY0MDE4IDc0LjI3NjYwNzksNC44MzI3NTY4MyBDNjcuOTc4NzkyNywtMS42MTA5MTg5NCA1Ny43NjgwMTY1LC0xLjYxMDkxODk0IDUxLjQ3MDIwMTMsNC44MzI3NTY4MyBDNDkuNjA2NzAxNiw2LjczOTM5NzA0IDQ4LjI5NDU5ODMsOC45OTY1NjQ4MyA0Ny41MzM4OTgzLDExLjM5NjgyMjkgTDQ4LjM3MDI2NzIsMTEuNzc3ODE5NiBDNDkuMDgzNDMyNSw5LjQ3ODI5OTU2IDUwLjMzMTIyMjcsNy4zMTQ3NjEyMiA1Mi4xMTM2MzM1LDUuNDkxMDg4OTIgQzU4LjA1NjA5NDgsLTAuNTg4OTk5Mjg4IDY3LjY5MDcyMTIsLTAuNTg4OTk5Mjg4IDczLjYzMzE3NTcsNS40OTEwODg5MiBDNzkuNTc1NjcxMiwxMS41NzExNDM2IDc5LjU3NTY3MTIsMjEuNDI4ODU1NyA3My42MzMxNzU3LDI3LjUwODkxNDYgQzY3LjY5MDcyMTIsMzMuNTg4OTkzIDU4LjA1NjA5NDgsMzMuNTg4OTkzIDUyLjExMzYzMzUsMjcuNTA4OTE0NiBDNTEuMTQ0MDY3NywyNi41MTY4OTg3IDUwLjMzMjY5OTgsMjUuNDI0MzI2NyA0OS42Nzk1MTYxLDI0LjI2NDAwNzMgTDQ4Ljg0Mzc5MDEsMjQuNjQ0NzE1NyBaIiBpZD0iU2hhcGUiIGZpbGw9IiM1REE3QTMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="OpenJ9 Logo"/></a></div><style data-emotion-css="kzfr2u">.css-kzfr2u{-webkit-flex:2;-ms-flex:2;flex:2;}</style><nav class="css-kzfr2u"><style data-emotion-css="d1fq55">.css-d1fq55{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}.css-d1fq55 li{padding:8px;margin-left:8px;margin-right:8px;}.css-d1fq55 li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-d1fq55 li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-d1fq55 li:first-of-type{margin-left:0;}.css-d1fq55 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-d1fq55"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a></li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a></li><li><a href="/openj9/performance">Performance</a></li><li><a href="/openj9/news">News</a></li></ul></nav><style data-emotion-css="1rr4qq7">.css-1rr4qq7{-webkit-flex:1;-ms-flex:1;flex:1;}</style><nav class="css-1rr4qq7"><ul class="css-d1fq55"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></header><style data-emotion-css="1824c0p">.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;width:100%;bottom:0;background-color:white;height:3rem;box-shadow:0 0.5rem 2rem grey;z-index:9999;}@media screen and (min-width:35rem){.css-1824c0p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media screen and (min-width:62.5rem){.css-1824c0p{display:none;}}@media screen and (min-width:85rem){.css-1824c0p{display:none;}}</style><nav class="css-1824c0p"><style data-emotion-css="94xmc6">.css-94xmc6{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:space-evenly;-webkit-justify-content:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;width:100%;}.css-94xmc6 li a{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-94xmc6 li:first-of-type{margin-left:0;}.css-94xmc6 li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-94xmc6"><li><a href="/openj9/">Home</a></li><li><a href="/openj9/about">About</a> </li><li><a href="https://www.eclipse.org/openj9/docs/" rel="noopener noreferrer" target="_blank">Docs</a> </li><li><a href="/openj9/performance">Performance</a> </li><li><a href="/openj9/news">News</a> </li></ul></nav><style data-emotion-css="10bmiq8">.css-10bmiq8{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:4rem;padding-bottom:0.1rem;}</style><section class="css-10bmiq8"><style data-emotion-css="acwcvw">.css-acwcvw{margin-bottom:1rem;}</style><style data-emotion-css="37umsu">.css-37umsu{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:36px;margin-bottom:1rem;}</style><h1 class="css-37umsu">Performance Overview</h1><style data-emotion-css="fza3g9">.css-fza3g9{margin-bottom:40px;font-size:18px;}</style><p class="css-fza3g9">Application performance can be measured using many different metrics, including startup time, ramp-up time, footprint, and response time, as well as throughput. At Eclipse OpenJ9, we keep a watchful eye on all of these metrics, making sensible tradeoffs and providing tuning options that allow the virtual machine (VM) to be optimized for different workloads. We regularly test and optimize OpenJ9 performance when running the most popular Java frameworks such as Open Liberty, Quarkus, SpringBoot, and Micronaut. We&#x27;re proud of our results.</p></section><style data-emotion-css="1r67qcz">.css-1r67qcz{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:0.1rem;padding-bottom:4rem;}</style><section id="openjdk11" class="css-1r67qcz"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 11 performance with Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">OpenJDK 11 with OpenJ9 significantly outperforms HotSpot on Liberty startup, ramp up, and footprint.</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="97vs5v">.css-97vs5v{box-shadow:#DADADA 0 0 1.25rem;border-radius:0.5rem;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-97vs5v"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">51% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="1dvshnm">.css-1dvshnm{box-shadow-bottom:cardShadow;border-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;background-color:white;border-top:0.35rem solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-1dvshnm"><p>By using shared classes cache and AOT technology, OpenJ9 starts in roughly half the time it takes HotSpot.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">50% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>After startup, the OpenJ9 footprint is half the size of HotSpot, which makes it ideal for cloud workloads.</p></div></div><div class="css-97vs5v"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>OpenJ9 reaches peak throughput much faster than HotSpot making it especially suitable for running short-lived applications.</p></div></div><div class="css-97vs5v"><h5 class="css-1s2mfp0">33% smaller footprint during load</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>Consistent with the footprint results after startup, the OpenJ9 footprint remains much smaller than HotSpot when load is applied.</p></div></div></div><style data-emotion-css="1l4w6pd">.css-1l4w6pd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}</style><div class="css-1l4w6pd"><style data-emotion-css="v732fk">.css-v732fk{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:7rem;}.css-v732fk:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/openjdk11-daytrader7.md" rel="noopener noreferrer" target="_blank" class="css-v732fk">Show me performance details</a></div><style data-emotion-css="1c9301q">.css-1c9301q{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);padding-top:4rem;}@media screen and (min-width:35rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1c9301q{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1c9301q"><style data-emotion-css="aratco">.css-aratco{display:block;grid-gap:0.5rem;grid-template-columns:repeat(1,1fr);grid-template-rows:5rem 1.5rem 1.5rem;color:#0b4237;box-sizing:border-box;margin-bottom:2rem;}@media screen and (min-width:35rem){.css-aratco{display:block;}}@media screen and (min-width:62.5rem){.css-aratco{display:block;}}@media screen and (min-width:85rem){.css-aratco{display:grid;}}</style><blockquote class="css-aratco"><style data-emotion-css="1fr9i7j">.css-1fr9i7j{font-family:'Gelasio',serif;font-style:italic;font-size:1.3rem;line-height:1.5rem;}</style><p class="css-1fr9i7j">With version 19.0.0.9 of Open Liberty and OpenJ9, Open Liberty managed to cut the startup time to their goal of almost exactly one second.</p><style data-emotion-css="1w1vbxm">.css-1w1vbxm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><cite class="css-1w1vbxm"><style data-emotion-css="2o9fek">.css-2o9fek{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-2o9fek:hover{color:#0b4237;-webkit-text-decoration:none;text-decoration:none;font-weight:bold;}</style><a href="https://openliberty.io/blog/2019/10/30/faster-startup-open-liberty.html" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Open Liberty blog<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote><blockquote class="css-aratco"><p class="css-1fr9i7j">Payara found that with datagrid enabled, Payara Micro with class data sharing, booted in about 6 seconds, improving startup time by almost 40%.</p><cite class="css-1w1vbxm"><a href="https://blog.payara.fish/faster-payara-micro-startup-times-with-openj9" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Payara Enterprise<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote></div></section><style data-emotion-css="1r67qcz">.css-1r67qcz{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:0.1rem;padding-bottom:4rem;}</style><section id="openjdk11quarkus" class="css-1r67qcz"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 11 performance with Quarkus and Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">Using Quarkus with OpenJ9 instead of HotSpot makes Java even more supersonic and subatomic!</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="97vs5v">.css-97vs5v{box-shadow:#DADADA 0 0 1.25rem;border-radius:0.5rem;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-97vs5v"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">66% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="1dvshnm">.css-1dvshnm{box-shadow-bottom:cardShadow;border-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;background-color:white;border-top:0.35rem solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-1dvshnm"><p>Quarkus might be supersonic, but running it with OpenJ9 instead of HotSpot reduces startup time by a further 66%.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">18% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>The ultra-supersonic startup time comes at some tradeoff to footprint, but OpenJ9 still has an edge over HotSpot.</p></div></div><div class="css-97vs5v"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>For short-lived cloud workloads running on Quarkus, OpenJ9 delivers excellent ramp-up performance compared to HotSpot.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">18% smaller footprint during load</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>When ramp-up completes, as well as getting there faster, OpenJ9 still retains a smaller footprint than HotSpot.</p></div></div></div><style data-emotion-css="1l4w6pd">.css-1l4w6pd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}</style><div class="css-1l4w6pd"><style data-emotion-css="v732fk">.css-v732fk{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:7rem;}.css-v732fk:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/quarkus.md" rel="noopener noreferrer" target="_blank" class="css-v732fk">Show me performance details</a></div><style data-emotion-css="1c9301q">.css-1c9301q{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);padding-top:4rem;}@media screen and (min-width:35rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1c9301q{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1c9301q"><style data-emotion-css="aratco">.css-aratco{display:block;grid-gap:0.5rem;grid-template-columns:repeat(1,1fr);grid-template-rows:5rem 1.5rem 1.5rem;color:#0b4237;box-sizing:border-box;margin-bottom:2rem;}@media screen and (min-width:35rem){.css-aratco{display:block;}}@media screen and (min-width:62.5rem){.css-aratco{display:block;}}@media screen and (min-width:85rem){.css-aratco{display:grid;}}</style><blockquote class="css-aratco"><style data-emotion-css="1fr9i7j">.css-1fr9i7j{font-family:'Gelasio',serif;font-style:italic;font-size:1.3rem;line-height:1.5rem;}</style><p class="css-1fr9i7j">Trendyol Tech found 40% faster startup time and 73 MB less memory footprint when they ran Undertow + Rest + Couchbase Client with OpenJ9.</p><style data-emotion-css="1w1vbxm">.css-1w1vbxm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><cite class="css-1w1vbxm"><style data-emotion-css="2o9fek">.css-2o9fek{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-2o9fek:hover{color:#0b4237;-webkit-text-decoration:none;text-decoration:none;font-weight:bold;}</style><a href="https://medium.com/trendyol-tech/how-trendyol-jvm-applications-consume-less-memory-in-the-production-environment-87e419dd18a0" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Trendyol Tech blog<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote><blockquote class="css-aratco"><p class="css-1fr9i7j">As reported on twitter, Micronautfw startup with OpenJ9 is as fast as Node.js.</p><cite class="css-1w1vbxm"><a href="https://twitter.com/graemerocher/status/1090204088065802240?lang=en" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Graeme Rocher, Micronaut<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote></div></section><style data-emotion-css="1r67qcz">.css-1r67qcz{background-color:#F5F9FC;padding-left:7%;padding-right:7%;padding-top:0.1rem;padding-bottom:4rem;}</style><section id="openjdk8" class="css-1r67qcz"><style data-emotion-css="1v4dyq7">.css-1v4dyq7{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:28px;}</style><h2 class="css-1v4dyq7">OpenJDK 8 performance with Eclipse OpenJ9</h2><style data-emotion-css="cet0rr">.css-cet0rr{margin-bottom:0.5rem;}</style><style data-emotion-css="qgyt1l">.css-qgyt1l{margin-bottom:40px;font-size:18px;margin-bottom:0.5rem;}</style><p class="css-qgyt1l">Testing shows similar results for OpenJDK 8; OpenJ9 demonstrates significantly better performance than OpenJDK 8 with HotSpot</p><style data-emotion-css="1nvf2ph">.css-1nvf2ph{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-around;-webkit-justify-content:space-around;-ms-flex-pack:space-around;justify-content:space-around;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}</style><div class="css-1nvf2ph"><style data-emotion-css="97vs5v">.css-97vs5v{box-shadow:#DADADA 0 0 1.25rem;border-radius:0.5rem;background-color:var(--theme-ui-colors-primary,#434343);color:white;margin-top:40px;margin-bottom:40px;margin-left:8px;margin-right:8px;width:18rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><div class="css-97vs5v"><style data-emotion-css="1hio5pu">.css-1hio5pu{font-size:1.1rem;margin:0.5rem 1rem 0.5rem 1rem;text-align:center;height:3rem;}</style><h5 class="css-1hio5pu">42% faster startup time</h5><div><canvas height="220" width="250"></canvas></div><style data-emotion-css="1dvshnm">.css-1dvshnm{box-shadow-bottom:cardShadow;border-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;background-color:white;border-top:0.35rem solid #5DA7A3;color:var(--theme-ui-colors-darkText,#4d4f50);height:50%;padding:4rem 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin-bottom:-4rem;margin-top:1rem;}</style><div class="css-1dvshnm"><p>Shared classes and Ahead-of-Time (AOT) technologies typically reduce startup time. By using -Xquickstart mode as well, you can reduce startup time by up to 42%.</p></div></div><div class="css-97vs5v"><h5 class="css-1hio5pu">66% smaller footprint after startup</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>OpenJ9 is highly optimized for cloud workloads, where minimizing memory footprint is important. Out of the box, the footprint is 66% smaller than HotSpot.</p></div></div><div class="css-97vs5v"><style data-emotion-css="1s2mfp0">.css-1s2mfp0{font-size:1.1rem;margin:0.5rem 1.5rem 0.5rem 1.5rem;text-align:center;height:3rem;}</style><h5 class="css-1s2mfp0">Faster ramp-up time in the cloud</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>OpenJ9 reaches peak throughput on a single CPU core in 8.5 minutes compared with 30 minutes for Hotspot. Ideal for short-lived VMs running in the cloud.</p></div></div><div class="css-97vs5v"><h5 class="css-1s2mfp0">63% smaller footprint during load</h5><div><canvas height="220" width="250"></canvas></div><div class="css-1dvshnm"><p>Memory footprint increases rapidly when load is applied. However, at steady state, OpenJ9 consistently used around 63% less physical memory than HotSpot.</p></div></div></div><style data-emotion-css="1l4w6pd">.css-1l4w6pd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}</style><div class="css-1l4w6pd"><style data-emotion-css="v732fk">.css-v732fk{background-color:var(--theme-ui-colors-secondary,#5DA7A3);color:white;border-radius:2.5rem;height:2rem;width:16rem;border:none;font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';font-size:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;margin-top:7rem;}.css-v732fk:hover{cursor:pointer;background-color:var(--theme-ui-colors-secondaryDark,#5d9da3);border-color:var(--theme-ui-colors-secondaryDark,#5d9da3);-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://github.com/eclipse-openj9/openj9-website/blob/master/benchmark/daytrader7.md" rel="noopener noreferrer" target="_blank" class="css-v732fk">Show me performance details</a></div><style data-emotion-css="1c9301q">.css-1c9301q{display:grid;grid-gap:3rem;grid-template-columns:repeat(1,1fr);padding-top:4rem;}@media screen and (min-width:35rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:62.5rem){.css-1c9301q{grid-template-columns:repeat(1,1fr);}}@media screen and (min-width:85rem){.css-1c9301q{grid-template-columns:repeat(2,1fr);}}</style><div class="css-1c9301q"><style data-emotion-css="aratco">.css-aratco{display:block;grid-gap:0.5rem;grid-template-columns:repeat(1,1fr);grid-template-rows:5rem 1.5rem 1.5rem;color:#0b4237;box-sizing:border-box;margin-bottom:2rem;}@media screen and (min-width:35rem){.css-aratco{display:block;}}@media screen and (min-width:62.5rem){.css-aratco{display:block;}}@media screen and (min-width:85rem){.css-aratco{display:grid;}}</style><blockquote class="css-aratco"><style data-emotion-css="1fr9i7j">.css-1fr9i7j{font-family:'Gelasio',serif;font-style:italic;font-size:1.3rem;line-height:1.5rem;}</style><p class="css-1fr9i7j">Vert.x found that OpenJ9 was very efficient with respect to memory consumption, without compromising the latency.</p><style data-emotion-css="1w1vbxm">.css-1w1vbxm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}</style><cite class="css-1w1vbxm"><style data-emotion-css="2o9fek">.css-2o9fek{color:black;-webkit-text-decoration:none;text-decoration:none;}.css-2o9fek:hover{color:#0b4237;-webkit-text-decoration:none;text-decoration:none;font-weight:bold;}</style><a href="https://how-to.vertx.io/openj9-howto/" rel="noopener noreferrer" target="_blank" class="css-2o9fek">Eclipse Vert.x how-to guide<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote><blockquote class="css-aratco"><p class="css-1fr9i7j">As reported on the Amis technology blog, when testing a number of JVMs, OpenJDK with OpenJ9 was the fastest to start for every framework.</p><cite class="css-1w1vbxm"><a href="https://technology.amis.nl/2019/09/03/microservice-framework-startup-time-on-different-jvms-aot-and-jit/" rel="noopener noreferrer" target="_blank" class="css-2o9fek">AMIS technology blog<!-- --> <i class="fas fa-external-link-alt fa-xs"></i></a></cite></blockquote></div></section><style data-emotion-css="17cbhv0">.css-17cbhv0{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:var(--theme-ui-colors-primary,#434343);color:white;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1rem;padding-bottom:3rem;-webkit-flex-direction:reverse-column;-ms-flex-direction:reverse-column;flex-direction:reverse-column;}@media screen and (min-width:35rem){.css-17cbhv0{padding-bottom:3rem;}}@media screen and (min-width:62.5rem){.css-17cbhv0{padding-bottom:0;}}@media screen and (min-width:85rem){.css-17cbhv0{padding-bottom:0;}}</style><footer class="css-17cbhv0"><style data-emotion-css="vkolmb">.css-vkolmb{-webkit-flex:50%;-ms-flex:50%;flex:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-vkolmb{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media screen and (min-width:62.5rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-vkolmb{display:none;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-vkolmb"><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a><style data-emotion-css="1uno72p">.css-1uno72p{font-size:0.9rem;}</style><style data-emotion-css="2r9mng">.css-2r9mng{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;}</style><h6 class="css-2r9mng">OpenJ9 is an Eclipse Incubator Project</h6></section><style data-emotion-css="1hrevlp">.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:100%;-ms-flex:100%;flex:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}@media screen and (min-width:35rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1hrevlp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:50%;-ms-flex:50%;flex:50%;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1hrevlp a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1hrevlp a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><nav class="css-1hrevlp"><style data-emotion-css="1vm4d63">.css-1vm4d63{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;margin-right:1.1rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-1vm4d63{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}@media screen and (min-width:85rem){.css-1vm4d63{padding-left:0.8rem;font-size:1rem;}}</style><section class="css-1vm4d63"><style data-emotion-css="1p7eyhh">.css-1p7eyhh{margin-bottom:0.2rem;}</style><style data-emotion-css="shyl6e">.css-shyl6e{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:20px;margin-bottom:0.2rem;}</style><h4 class="css-shyl6e">Docs</h4><style data-emotion-css="1l04qsy">.css-1l04qsy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1l04qsy li{padding:0;}.css-1l04qsy li:first-of-type{margin-left:0;}.css-1l04qsy li:last-child{margin-right:0;padding-right:0;}</style><ul class="css-1l04qsy"><li><style data-emotion-css="14i0930">.css-14i0930{-webkit-text-decoration:none;text-decoration:none;color:white;}</style><a href="https://www.eclipse.org/openj9/docs/openj9_newuser/" rel="noopener noreferrer" target="_blank" class="css-14i0930">New to OpenJ9?</a></li><li><a href="https://www.eclipse.org/openj9/docs/introduction/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Getting started</a></li><li><a href="https://www.eclipse.org/openj9/docs/cmdline_specifying/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Command-line options</a></li></ul></section><style data-emotion-css="4nlx3l">.css-4nlx3l{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;}@media screen and (min-width:35rem){.css-4nlx3l{padding-left:0.8rem;padding:0;font-size:0.9rem;}}@media screen and (min-width:62.5rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-4nlx3l{padding-left:0;font-size:1rem;}}</style><section class="css-4nlx3l"><h4 class="css-shyl6e">Resources</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/about">About</a></li><li><a class="css-14i0930" href="/openj9/performance">Performance</a></li></ul></section><style data-emotion-css="1v1ksah">.css-1v1ksah{-webkit-flex:1;-ms-flex:1;flex:1;padding-left:2rem;padding:1rem;font-size:1rem;margin-left:0;}@media screen and (min-width:35rem){.css-1v1ksah{padding-left:0;padding:0;font-size:0.9rem;margin-left:1rem;}}@media screen and (min-width:62.5rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}@media screen and (min-width:85rem){.css-1v1ksah{padding-left:0;font-size:1rem;}}</style><section class="css-1v1ksah"><h4 class="css-shyl6e">Community</h4><ul class="css-1l04qsy"><li><a class="css-14i0930" href="/openj9/news">News</a></li><li><a href="https://blog.openj9.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Blogs</a></li></ul></section></nav><style data-emotion-css="1qgmx7a">.css-1qgmx7a{-webkit-flex:25%;-ms-flex:25%;flex:25%;display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:62.5rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}@media screen and (min-width:85rem){.css-1qgmx7a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}}</style><section class="css-1qgmx7a"><style data-emotion-css="10op7gg">.css-10op7gg{font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><style data-emotion-css="z87sw5">.css-z87sw5{font-family:'Helvetica Neue',Helvetica,Arial,'Lucida Grande';line-height:1.125;font-weight:700;margin-top:16px;margin-bottom:16px;font-size:16px;font-size:0.9rem;margin-top:1.3rem;margin-left:0.6rem;}</style><h6 class="css-z87sw5">OpenJ9 is an Eclipse Incubator Project</h6><a href="https://wiki.eclipse.org/Development_Resources/Process_Guidelines/What_is_Incubation" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTBweCIgaGVpZ2h0PSI3NXB4IiB2aWV3Qm94PSIwIDAgMTU3IDIzMSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNjEuMiAoODk2NTMpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPmVjbGlwc2VfaW5jdWJhdGlvbl92ZXJ0aWNhbF9zdmc8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iZWNsaXBzZV9pbmN1YmF0aW9uX3ZlcnRpY2FsX3N2ZyIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4wMDAwMDAsIDIxNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjAuNzUgMC4zNCAxLjkyIDAuMzQgMS45MiAxNi4wMyAwLjc1IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI1LjYyIDAuMzQgNi43MiAwLjM0IDE3LjU1IDEzLjk5IDE3LjU1IDAuMzQgMTguNjcgMC4zNCAxOC42NyAxNi4wMyAxNy44IDE2LjAzIDYuNzUgMi4wOSA2Ljc1IDE2LjAzIDUuNjMgMTYuMDMgNS42MyAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuODYsOC4yMyBMMjEuODYsOC4xOSBDMjEuODYsMy43NSAyNS4xOCwwLjA4IDI5LjcxLDAuMDggQzMyLjUxLDAuMDggMzQuMTksMS4xMSAzNS44MSwyLjU5IEwzNC45OCwzLjQ0IEMzMy42MSwyLjEyIDMyLjA0LDEuMTMgMjkuNjksMS4xMyBDMjUuOTIsMS4xMyAyMy4wOCw0LjIgMjMuMDgsOC4xNSBMMjMuMDgsOC4xOSBDMjMuMDgsMTIuMTYgMjUuOTcsMTUuMjUgMjkuNzEsMTUuMjUgQzMxLjk3LDE1LjI1IDMzLjUyLDE0LjM3IDM1LjExLDEyLjgxIEwzNS44OSwxMy41NyBDMzQuMjMsMTUuMjEgMzIuNDQsMTYuMyAyOS42NiwxNi4zIEMyNS4xOCwxNi4zIDIxLjg2LDEyLjc0IDIxLjg2LDguMjMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC40LDkuNTEgTDM4LjQsMC4zNCBMMzkuNTcsMC4zNCBMMzkuNTcsOS40IEMzOS41NywxMy4xIDQxLjU3LDE1LjIzIDQ0Ljg4LDE1LjIzIEM0OC4wNiwxNS4yMyA1MC4xLDEzLjMgNTAuMSw5LjUxIEw1MC4xLDAuMzQgTDUxLjI3LDAuMzQgTDUxLjI3LDkuMzcgQzUxLjI3LDEzLjg4IDQ4LjY1LDE2LjI3MDAzMTQgNDQuODQsMTYuMjcwMDMxNCBDNDEuMDcsMTYuMjggMzguNCwxMy45IDM4LjQsOS41MSBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTU0LjAyLDAuMzQgTDYwLjUsMC4zNCBDNjIuMjcsMC4zNCA2My43MSwwLjg2IDY0LjU4LDEuNzMgQzY1LjIzLDIuMzggNjUuNTksMy4yMSA2NS41OSw0LjIgTDY1LjU5LDQuMjQgQzY1LjU5LDYuMzcgNjQuMiw3LjQ1IDYyLjkyLDcuOTYgQzY0LjgsOC40NSA2Ni40Niw5LjUzIDY2LjQ2LDExLjcgTDY2LjQ2LDExLjc0IEM2Ni40NiwxNC4zNiA2NC4yMiwxNi4wMiA2MC44MywxNi4wMiBMNTQuMDIsMTYuMDIgTDU0LjAyLDAuMzQgTDU0LjAyLDAuMzQgWiBNNjQuNCw0LjMxIEM2NC40LDIuNTggNjIuOTksMS40MiA2MC40OCwxLjQyIEw1NS4xOSwxLjQyIEw1NS4xOSw3LjU4IEw2MC4zNyw3LjU4IEM2Mi43Miw3LjU4IDY0LjQsNi40NCA2NC40LDQuMzUgTDY0LjQsNC4zMSBaIE02MC41LDguNjYgTDU1LjE5LDguNjYgTDU1LjE5LDE0Ljk2IEw2MC44OCwxNC45NiBDNjMuNTcsMTQuOTYgNjUuMjcwMDQ0NCwxMy43MyA2NS4yNzAwNDQ0LDExLjc1IEw2NS4yNzAwNDQ0LDExLjcxIEM2NS4yOCw5Ljc4IDYzLjYsOC42NiA2MC41LDguNjYgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzYuMjgsMC4yMyBMNzcuNCwwLjIzIEw4NC43MSwxNi4wMyBMODMuNDMsMTYuMDMgTDgxLjQ0LDExLjY0IEw3Mi4xOCwxMS42NCBMNzAuMTksMTYuMDMgTDY4Ljk4LDE2LjAzIEw3Ni4yOCwwLjIzIFogTTgwLjk0LDEwLjU5IEw3Ni44MiwxLjUxIEw3Mi42NywxMC41OSBMODAuOTQsMTAuNTkgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI5MS4wNSAxLjQyIDg1LjU4IDEuNDIgODUuNTggMC4zNCA5Ny42OCAwLjM0IDk3LjY4IDEuNDIgOTIuMjEgMS40MiA5Mi4yMSAxNi4wMyA5MS4wNCAxNi4wMyA5MS4wNCAxLjQyIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSIxMDEuMjkgMC4zNCAxMDIuNDYgMC4zNCAxMDIuNDYgMTYuMDMgMTAxLjI5IDE2LjAzIj48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1LjkxLDguMjMgTDEwNS45MSw4LjE5IEMxMDUuOTEsMy45MSAxMDkuMDcsMC4wOCAxMTMuODIsMC4wOCBDMTE4LjU3LDAuMDggMTIxLjY5LDMuODcgMTIxLjY5LDguMTUgTDEyMS42OSw4LjE5IEMxMjEuNjksMTIuNDcgMTE4LjUzLDE2LjMgMTEzLjc4LDE2LjMgQzEwOS4wMywxNi4zIDEwNS45MSwxMi41MSAxMDUuOTEsOC4yMyBaIE0xMjAuNDgsOC4yMyBMMTIwLjQ4LDguMTkgQzEyMC40OCw0LjMxIDExNy42NiwxLjEzIDExMy43OCwxLjEzIEMxMDkuOSwxLjEzIDEwNy4xMiw0LjI3IDEwNy4xMiw4LjE1IEwxMDcuMTIsOC4xOSBDMTA3LjEyLDEyLjA3IDEwOS45NCwxNS4yNSAxMTMuODIsMTUuMjUgQzExNy43LDE1LjI1IDEyMC40OCwxMi4xMSAxMjAuNDgsOC4yMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyNC44OSAwLjM0IDEyNS45OSAwLjM0IDEzNi44MiAxMy45OSAxMzYuODIgMC4zNCAxMzcuOTQgMC4zNCAxMzcuOTQgMTYuMDMgMTM3LjA3IDE2LjAzIDEyNi4wMiAyLjA5IDEyNi4wMiAxNi4wMyAxMjQuOSAxNi4wMyAxMjQuOSAwLjM0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHBhdGggZD0iTTU2LjY2LDE2Ni4yMyBDNTcuNTEsMTYzLjQ4IDYwLjQzLDE2MS40MyA2My45NCwxNjEuNDMgQzY1LjE0LDE2MS40MyA2Ni4yNSwxNjEuNjkgNjcuMjUsMTYyLjExIEM2OS40NiwxNjAuNjQgNzIuMTksMTU5Ljc2IDc1LjE3LDE1OS43NiBMNzUuMTksMTU5Ljc2IEM3Ni4xMSwxNTcuOSA3OC40OCwxNTYuNTcgODEuMywxNTYuNTcgQzgyLjA0LDE1Ni41NyA4Mi43NSwxNTYuNjcgODMuNDIsMTU2Ljg0IEM4My4zMywxNTQuNTYgODMuNjksMTUyLjE4IDg0LjU1LDE0OS42OCBDODUuNTUsMTQ2Ljc5IDg3LDE0NC4wMyA4OC41MiwxNDEuMjggQzg4LjE3LDEzNy4xNiA4Ny45LDEzMy41IDgyLjc0LDEzMiBDODAuODIsMTMxLjQ0IDc4LjgyLDEzMS4yNyA3Ni44NiwxMzEuMDQgTDc2Ljg1LDEzMS4wNCBMNzYuODUsMTMxLjAzIEM3Ni4wMSwxMzAuOTMgNzUuMTcsMTMwLjgxIDc0LjM1LDEzMC42NSBDNjAuMTgsMTQ1LjQxIDQwLjIsMTA5Ljk3IDQwLjIsMTA5Ljk3IEM4NC4zLDEwMy4xMyA3Ni4wMSwxMjUuNjEgNzYuMDEsMTI1LjYxIEM3Mi44MSwxMjQuMDUgNzEuOTMsMTIyLjA4IDY5LjQ5LDExOS43MyBDNjMuOTIsMTE0LjM4IDUwLjYyLDExMy40NCA1MC42MiwxMTMuNDQgQzY2LjU0LDExNy41MSA2OC43MSwxMjUuMjIgNzQuOTcsMTI3LjY5IEM3Ni4zOSwxMjguMDEgNzcuOSwxMjguMTMgNzkuMzUsMTI4LjI5IEM4Mi4xNSwxMjguNTkgODQuODksMTI5LjExIDg3LjIyLDEzMC42MSBDODkuNjMsMTMyLjE2IDkwLjcxLDEzNC4wOSA5MS4yNiwxMzYuMjYgQzkzLDEzMi45NCA5NC41LDEyOS41NiA5NS4wNywxMjUuOTIgQzk1LjgsMTIxLjI3IDk1LjEzLDExNS44OCA5MS44MywxMTIuMDcgQzg4Ljc4LDEwOC41NSA4NC42NiwxMDUuODkgODEuNCwxMDIuNTIgQzc3LjkyLDk4LjkxIDc1LjYxLDk0LjQ2IDc1LjUyLDg5LjcxIEM3My43Niw4NS44NiA3MC45LDgxLjM5IDY4LjI4LDc5LjY1IEM1Ni45LDkwLjM0IDQxLjksNjIuNTggNDEuOSw2Mi41OCBDNzYuODgsNTcuNyA3MS4xLDc1LjY3IDcxLjEsNzUuNjcgQzYyLjcsNjYuMjggNTIuMzEsNjcuMTIgNTIuMzEsNjcuMTIgQzYwLjcxLDY5Ljc5IDY3LjM0LDc1LjE1IDcxLjIsNzguODMgTDcxLjczLDc5LjM2IEM3My4zLDgxIDc0LjksODIuNzUgNzYuMjQsODQuNjMgQzc3LjYsNzkuNDggODAuNzcsNzIuMjcgODMuMjYsNjcuOTcgQzgzLjI2LDY3Ljk3IDkxLjY2LDUzLjE1IDEwNS44LDQzLjkgQzEwNS44LDQzLjkgOTUuMDIsNDUuMTQgODMuNDEsNjIuODkgQzgzLjQxLDYyLjg5IDY3Ljk5LDM4LjcgMTE3LjgzLDM0LjIzIEMxMTcuODMsMzQuMjMgMTE0LjQsNzguMTcgODcuNDUsNjkuNjMgQzgyLjc3LDc2LjY3IDc5LjcsODQuNzQgODAuMzMsOTAuNDIgQzgwLjk1LDk1Ljk2IDg0LjgzLDk5Ljg2IDg5LjExLDEwMy41IEM5MC4yNSw5Ny42NiA5NC40Niw5Mi42MyAxMDAuNjUsODkuODkgQzEwNS42LDg3LjkyIDExMi45LDg2LjAzIDExOS43Miw4NS42MiBDMTE5LjcyLDg1LjYyIDEwNi4zOSw4Mi41OCA5Ni4yNSw4OS41MSBDOTYuMjUsODkuNTEgOTYuNDIsNjkuMjIgMTMyLjM0LDgzLjk1IEMxMzIuMzQsODMuOTUgMTA2LjM0LDExMC4yOSA5Ny45OSw5NC41OSBDOTQuMDMsOTcuMiA5MS41MywxMDEuNTggOTIuMTgsMTA2LjExIEM5NC41LDEwOC4xNCA5Ni42NiwxMTAuMzMgOTcuOTcsMTEzLjAzIEM5OS44LDExNi44MiAxMDAuNDUsMTIxLjI0IDk5Ljk1LDEyNS4zNSBDOTguOTksMTMzLjI1IDk0LjA1LDEzOS45NyA5MC42NywxNDcuMTQgQzg5LjI5LDE1MC4wNiA4Ny45NywxNTMuMjcgODcuOTUsMTU2LjUxIEM4OS42NCwxNTYuMDQgOTEuNDcsMTU1Ljc4IDkzLjM5LDE1NS43OCBDMTAwLjYyLDE1NS43OCAxMDYuNzEsMTU5LjM3IDEwOC42OCwxNjQuMyBDMTExLjYxLDE2NC42MSAxMTMuOTIsMTY2LjMzIDExNC4zNCwxNjguNTEgQzExNi40NSwxNjkuODEgMTE4LjEyLDE3MS42MyAxMTkuMTMsMTczLjc1IEw1MC41NSwxNzMuNzUgQzUyLjAyLDE3MC42MiA1NC4xNCwxNjcuMTYgNTYuNjYsMTY2LjIzIiBpZD0iUGF0aCIgZmlsbD0iI0Y3OEQyQyI+PC9wYXRoPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjAwMDAwMCwgMTgyLjAwMDAwMCkiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iMC41NCAxLjM5IDE4LjU0IDEuMzkgMTguNTQgNS4yMSA0LjggNS4yMSA0LjggMTEuNTIgMTYuOTcgMTEuNTIgMTYuOTcgMTUuMzMgNC44IDE1LjMzIDQuOCAyMS44NSAxOC43MSAyMS44NSAxOC43MSAyNS42NyAwLjU0IDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTUsMTMuNiBMMjEuNTUsMTMuNTMgQzIxLjU1LDYuNjMgMjYuNzIsMC45NyAzNC4wNywwLjk3IEMzOC41NCwwLjk3IDQxLjI1LDIuNTMgNDMuNTcsNC43NSBMNDAuODMsNy45MSBDMzguODksNi4xMSAzNi44MSw0Ljg5IDM0LjAzLDQuODkgQzI5LjQyLDQuODkgMjYuMDIsOC43MSAyNi4wMiwxMy40NiBMMjYuMDIsMTMuNTMgQzI2LjAyLDE4LjI4IDI5LjM4LDIyLjEzIDM0LjAzLDIyLjEzIEMzNy4wMSwyMi4xMyAzOC45MiwyMC45NSA0MSwxOS4wMSBMNDMuNzQsMjEuNzggQzQxLjIxLDI0LjQyIDM4LjQzLDI2LjA4MDAxMzYgMzMuODksMjYuMDgwMDEzNiBDMjYuODMsMjYuMDkgMjEuNTUsMjAuNTcgMjEuNTUsMTMuNiBaIiBpZD0iUGF0aCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgiIHBvaW50cz0iNDcuMjIgMS4zOSA1MS40OSAxLjM5IDUxLjQ5IDIxLjc4IDY0LjI1IDIxLjc4IDY0LjI1IDI1LjY2IDQ3LjIyIDI1LjY2Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgcG9pbnRzPSI2Ny45MyAxLjM5IDcyLjIgMS4zOSA3Mi4yIDI1LjY3IDY3LjkzIDI1LjY3Ij48L3BvbHlnb24+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNzcuNjcsMS4zOSBMODcuMjQsMS4zOSBDOTIuOTMsMS4zOSA5Ni40Nyw0LjYyIDk2LjQ3LDkuNTEgTDk2LjQ3LDkuNTggQzk2LjQ3LDE1LjAzIDkyLjEsMTcuODcgODYuNzYsMTcuODcgTDgxLjk0LDE3Ljg3IEw4MS45NCwyNS42NyBMNzcuNjcsMjUuNjcgTDc3LjY3LDEuMzkgWiBNODYuOSwxNC4wMiBDOTAuMTMsMTQuMDIgOTIuMTQsMTIuMjIgOTIuMTQsOS42OCBMOTIuMTQsOS42MSBDOTIuMTQsNi43NyA5MC4wOSw1LjI4IDg2LjksNS4yOCBMODEuOTQsNS4yOCBMODEuOTQsMTQuMDIgTDg2LjksMTQuMDIgWiIgaWQ9IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTguMjEsMjIuMTMgTDEwMC43OCwxOS4wOCBDMTAzLjEsMjEuMDkgMTA1LjQ2LDIyLjI0IDEwOC40NSwyMi4yNCBDMTExLjA5LDIyLjI0IDExMi43NSwyMC45OSAxMTIuNzUsMTkuMTkgTDExMi43NSwxOS4xMiBDMTEyLjc1LDE3LjM5IDExMS43OCwxNi40NSAxMDcuMjcsMTUuNDEgQzEwMi4xLDE0LjE2IDk5LjE5LDEyLjY0IDk5LjE5LDguMTYgTDk5LjE5LDguMDkgQzk5LjE5LDMuOTMgMTAyLjY2LDEuMDUgMTA3LjQ4LDEuMDUgQzExMS4wMiwxLjA1IDExMy44MywyLjEzIDExNi4yOSw0LjEgTDExNCw3LjMzIEMxMTEuODEsNS43IDEwOS42Myw0LjgzIDEwNy40MSw0LjgzIEMxMDQuOTEsNC44MyAxMDMuNDYsNi4xMSAxMDMuNDYsNy43MSBMMTAzLjQ2LDcuNzggQzEwMy40Niw5LjY1IDEwNC41NywxMC40OSAxMDkuMjUsMTEuNiBDMTE0LjM4LDEyLjg1IDExNy4wMiwxNC42OSAxMTcuMDIsMTguNzEgTDExNy4wMiwxOC43OCBDMTE3LjAyLDIzLjMyIDExMy40NSwyNi4wMyAxMDguMzUsMjYuMDMgQzEwNC42MiwyNi4wMiAxMDEuMTIsMjQuNzMgOTguMjEsMjIuMTMgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJQYXRoIiBwb2ludHM9IjEyMC45OSAxLjM5IDEzOC45OSAxLjM5IDEzOC45OSA1LjIxIDEyNS4yNiA1LjIxIDEyNS4yNiAxMS41MiAxMzcuNDMgMTEuNTIgMTM3LjQzIDE1LjMzIDEyNS4yNiAxNS4zMyAxMjUuMjYgMjEuODUgMTM5LjE3IDIxLjg1IDEzOS4xNyAyNS42NyAxMjEgMjUuNjcgMTIxIDEuMzkiPjwvcG9seWdvbj4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8cGF0aCBkPSJNMjEuNjYsMzkuOTkgQzQxLjI2LDkuNDIgODAuNSwtMS4yNSAxMTMuMjMsMTMuNDQgQzExMi41MSwxMi45NCAxMTEuNzgsMTIuNDMgMTExLjAzLDExLjk1IEM3Ny41MiwtOS41NCAzMi45OCwwLjExIDExLjU2LDMzLjUyIEMtOS44Nyw2Ni45MiAtMC4wNiwxMTEuNDMgMzMuNDUsMTMyLjkyIEMzNC4yLDEzMy40IDM0Ljk2LDEzMy44NSAzNS43MiwxMzQuMyBDOC43MywxMTAuNjggMi4wNiw3MC41NiAyMS42NiwzOS45OSIgaWQ9IlBhdGgiIGZpbGw9IiNGNzhEMkMiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Eclipse Incubator Logo"/></a></section><style data-emotion-css="7f8z6s">.css-7f8z6s{height:0.15rem;background-color:var(--theme-ui-colors-secondary,#5DA7A3);width:100%;margin-top:16px;margin-bottom:16px;}</style><div class="css-7f8z6s"></div><style data-emotion-css="6gs9hh">.css-6gs9hh{width:70%;}</style><nav class="css-6gs9hh"><style data-emotion-css="1dz3xom">.css-1dz3xom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media screen and (min-width:35rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:62.5rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media screen and (min-width:85rem){.css-1dz3xom{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1dz3xom li{padding:0.4rem;font-size:0.9rem;list-style-type:none;padding-left:1rem;color:white;}@media screen and (min-width:35rem){.css-1dz3xom li{font-size:0.7rem;}}@media screen and (min-width:62.5rem){.css-1dz3xom li{font-size:1rem;}}@media screen and (min-width:85rem){.css-1dz3xom li{font-size:1rem;}}.css-1dz3xom a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-1dz3xom a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}</style><ul class="css-1dz3xom"><style data-emotion-css="1ga24ma">.css-1ga24ma{padding-left:1rem;}@media screen and (min-width:35rem){.css-1ga24ma{padding-left:0rem !important;}}@media screen and (min-width:62.5rem){.css-1ga24ma{padding-left:0.5rem !important;}}@media screen and (min-width:85rem){.css-1ga24ma{padding-left:0.5 !important;}}</style><li class="css-1ga24ma"><a href="https://www.eclipse.org/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Eclipse Foundation Website </a></li><li><a href="https://www.eclipse.org/legal/privacy.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Privacy Policy</a></li><li><a href="https://www.eclipse.org/legal/termsofuse.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Terms of Use</a></li><li><a href="https://www.eclipse.org/legal/copyright.php" rel="noopener noreferrer" target="_blank" class="css-14i0930">Copyright Agent</a></li><li><a href="https://www.eclipse.org/legal/" rel="noopener noreferrer" target="_blank" class="css-14i0930">Legal</a></li></ul></nav><style data-emotion-css="1g96o9k">.css-1g96o9k{display:inline;-webkit-flex:30%;-ms-flex:30%;flex:30%;}@media screen and (min-width:35rem){.css-1g96o9k{display:inline;}}@media screen and (min-width:62.5rem){.css-1g96o9k{display:block;}}@media screen and (min-width:85rem){.css-1g96o9k{display:block;}}</style><nav class="css-1g96o9k"><style data-emotion-css="gwenrj">.css-gwenrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}.css-gwenrj li{padding:8px;margin-left:8px;margin-right:8px;}.css-gwenrj li a{color:white;-webkit-text-decoration:none;text-decoration:none;}.css-gwenrj li a:hover{color:var(--theme-ui-colors-links,#5DA7A3);}.css-gwenrj li:first-of-type{margin-left:0;}.css-gwenrj li:last-child{margin-right:0;padding-right:0;}@media screen and (min-width:35rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:62.5rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}@media screen and (min-width:85rem){.css-gwenrj{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}</style><ul class="css-gwenrj"><li><a href="https://twitter.com/openj9/" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5Ud2l0dGVyPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlR3aXR0ZXIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJ0d2l0dGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4yOTg4NzkpIj4KICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLXBhdGgiIGZpbGw9IiM0MzQzNDMiIGN4PSIxMi41MDAyMjEyIiBjeT0iMTIuMjcyNzI3MyIgcng9IjEyLjUiIHJ5PSIxMi4yNzI3MjczIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTAwMjIxMiwwIEMxOS40MDM3ODA2LDAgMjUuMDAwMjIxMiw1LjQ5NDY4NzE2IDI1LjAwMDIyMTIsMTIuMjcyNzI3MyBDMjUuMDAwMjIxMiwxOS4wNTA3Njc0IDE5LjQwMzc4MDYsMjQuNTQ1NDU0NSAxMi41MDAyMjEyLDI0LjU0NTQ1NDUgQzUuNTk2NjYxODcsMjQuNTQ1NDU0NSAwLjAwMDIyMTIzODkzOCwxOS4wNTA3Njc0IDAuMDAwMjIxMjM4OTM4LDEyLjI3MjcyNzMgQzAuMDAwMjIxMjM4OTM4LDUuNDk0Njg3MTYgNS41OTY2NjE4NywwIDEyLjUwMDIyMTIsMCBaIE0xNS4xMDM0MzMzLDYuODE4MTgxODIgQzEzLjQ2NTM4MDIsNi44MTgxODE4MiAxMi4xMzY4NDA0LDguMDkyMTI0MTEgMTIuMTM2ODQwNCw5LjY2Mjg1OTk2IEMxMi4xMzY4NDA0LDkuODg1ODI2MzggMTIuMTYzMTY3OCwxMC4xMDI4NTI3IDEyLjIxNDA1MjgsMTAuMzExMTgxIEM5Ljc0ODU2NjA0LDEwLjE5MjU5MDggNy41NjI1MDQxLDkuMDYwMTUwNTQgNi4wOTkyMjk3Niw3LjMzODU3ODIzIEM1Ljg0MzkyMDAzLDcuNzU4NjI5MTUgNS42OTc0NTk4NSw4LjI0NzYyNzgxIDUuNjk3NDU5ODUsOC43Njg4NzI4MSBDNS42OTc0NTk4NSw5Ljc1NTU2ODE3IDYuMjIxNTc0ODksMTAuNjI2NjQzNCA3LjAxNzE1MDExLDExLjEzNjY0NDcgQzYuNTMxMDg4MTcsMTEuMTIyMDA2NSA2LjA3MzM0NDgsMTAuOTk0MDgxOSA1LjY3MzU2NjA0LDEwLjc4MDQ1IEw1LjY3MzM0NDgsMTAuODE2NTE0OSBMNS42NzMzNDQ4LDEwLjgxNjUxNDkgQzUuNjczMzQ0OCwxMi4xOTQ4MzM1IDYuNjk2MzUzNjUsMTMuMzQ0NDU3NyA4LjA1MzIxMjA2LDEzLjYwNTYxMDYgQzcuODA0NTM5NSwxMy42NzA5NTE5IDcuNTQxOTI4ODgsMTMuNzA1NTMxOCA3LjI3MTc5NjEzLDEzLjcwNTUzMTggQzcuMDgwMjAzMjEsMTMuNzA1NTMxOCA2Ljg5NDU4Mzc0LDEzLjY4NzkyMzYgNi43MTM2MTAyOSwxMy42NTQ4Mjg3IEM3LjA5MTA0MzkyLDE0Ljc4NDcyMzIgOC4xODYzOTc5LDE1LjYwNzIxNjkgOS40ODQ4NDkyMywxNS42MzAzNDA5IEM4LjQ2OTM2MjUsMTYuMzkzNDMzNCA3LjE5MDM4MDIsMTYuODQ4MDY0MiA1LjgwMDExNDcyLDE2Ljg0ODA2NDIgQzUuNTYxMTc2NjYsMTYuODQ4MDY0MiA1LjMyNDQ1MSwxNi44MzQ2OTkgNS4wOTI4MTM4MywxNi44MDgxODA2IEM2LjQwNDk4MTk3LDE3LjYxNTYxMTggNy45NjQ3MTY0OSwxOC4wODYzNjU4IDkuNjM5OTM3NzMsMTguMDg2MzY1OCBDMTUuMDk2NTc0OSwxOC4wODYzNjU4IDE4LjA4MDY0NTcsMTMuNzUxNzc5OCAxOC4wODA2NDU3LDkuOTkyMzI0MTQgQzE4LjA4MDY0NTcsOS44NjkwNjY3NyAxOC4wNzc3Njk2LDkuNzQ2MjMzNyAxOC4wNzIwMTc0LDkuNjI0NDYxMzcgQzE4LjY1MjEwNTksOS4yMjM1MDM2OCAxOS4xNTQ5ODIsOC43MjI2MjQ3OCAxOS41NTI1NDgzLDguMTUyMTYxNjkgQzE5LjAyMDY4OTksOC4zNzgzMTAzMiAxOC40NDg1NjYsOC41MzEyNjgyNSAxNy44NDg1NjYsOC41OTk1Nzk1NiBDMTguNDYxMTc2Nyw4LjI0NzYyNzgxIDE4LjkzMTMwOTQsNy42OTA3NDIxMyAxOS4xNTMyMTIxLDcuMDI2MDg1ODEgQzE4LjU3OTk4Miw3LjM1MjE1NTYzIDE3Ljk0NDgwNSw3LjU4ODY5OTQ2IDE3LjI2OTM2MjUsNy43MTYxOTk3NiBDMTYuNzI4MjEyMSw3LjE2MzU1NzAyIDE1Ljk1NzE5NDQsNi44MTgxODE4MiAxNS4xMDM0MzMzLDYuODE4MTgxODIgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==" alt="Twitter Logo"/></a></li><li><a href="https://github.com/eclipse-openj9/openj9" rel="noopener noreferrer" target="_blank"> <img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB2aWV3Qm94PSIwIDAgMjUgMjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5HaXRIdWI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR2l0SHViIiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0iZ2l0aHViLWxvZ28iPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIzLjMyMzIwOSw2LjM1NjM4NTg4IEMyMi4yMDU0MjQzLDQuNDI4ODY0OTMgMjAuNjg5MjIwNywyLjkwMjg0MzkxIDE4Ljc3NDE5OTMsMS43Nzc5Nzg1OCBDMTYuODU4ODkyOCwwLjY1MzA1NTg3MyAxNC43Njc5NDkxLDAuMDkwNzM3OTUzMyAxMi40OTk4ODYsMC4wOTA3Mzc5NTMzIEMxMC4yMzIxMDc5LDAuMDkwNzM3OTUzMyA4LjE0MDQ4MDEzLDAuNjUzMjI3OTkzIDYuMjI1NTcyNjksMS43Nzc5Nzg1OCBDNC4zMTAzODAyMSwyLjkwMjc4NjU0IDIuNzk0MjMzNjcsNC40Mjg4NjQ5MyAxLjY3NjQ0ODk5LDYuMzU2Mzg1ODggQzAuNTU4ODM1MzMzLDguMjgzODQ5NDUgMCwxMC4zODg2NTQ2IDAsMTIuNjcwNzQzOSBDMCwxNS40MTIwNTEgMC43OTQ2NzE0ODMsMTcuODc3MTA0NSAyLjM4NDQxMzQ5LDIwLjA2NjUzNTUgQzMuOTczOTg0NDksMjIuMjU2MTM4OCA2LjAyNzQ3NDg4LDIzLjc3MTI1ODggOC41NDQ3MTM2NywyNC42MTIwNjc4IEM4LjgzNzcyNzQsMjQuNjY2ODAyMiA5LjA1NDYzNzM3LDI0LjYyODMwNDUgOS4xOTU2NzE2MSwyNC40OTc1NTAzIEM5LjMzNjc2Mjg1LDI0LjM2NjYyMzkgOS40MDcyMjI5NiwyNC4yMDI2NTAzIDkuNDA3MjIyOTYsMjQuMDA2MzE4MSBDOS40MDcyMjI5NiwyMy45NzM1NTc5IDkuNDA0NDI5NjQsMjMuNjc4ODMwMSA5LjM5OTAxNDAxLDIzLjEyMTc5MDUgQzkuMzkzNDI3MzcsMjIuNTY0NzUxIDkuMzkwODA1MDcsMjIuMDc4Nzk3MiA5LjM5MDgwNTA3LDIxLjY2NDE1ODcgTDkuMDE2NDQyOTcsMjEuNzI5MzM1MSBDOC43Nzc3NTY1LDIxLjc3MzM0MDUgOC40NzY2NDc4MywyMS43OTE5ODY5IDguMTEzMTE2OTgsMjEuNzg2NzA4NiBDNy43NDk3NTcxNSwyMS43ODE2MDIzIDcuMzcyNTQ0NzMsMjEuNzQzMjc2OCA2Ljk4MTk5Mjc3LDIxLjY3MjAxODkgQzYuNTkxMjY5NzksMjEuNjAxMzkyMSA2LjIyNzg1Mjk1LDIxLjQzNzU5MDcgNS44OTE0NTcyMiwyMS4xODA5NTg5IEM1LjU1NTIzMjUyLDIwLjkyNDMyNzEgNS4zMTY1NDYwNCwyMC41ODg0MDUxIDUuMTc1NDU0OCwyMC4xNzM3MDkzIEw1LjAxMjcwMTA2LDE5Ljc5Njc2NTIgQzQuOTA0MjE3NTcsMTkuNTQ1ODEzNCA0LjczMzQyNTkxLDE5LjI2NzAzNTUgNC41MDAwOTgwNSwxOC45NjE0NjQxIEM0LjI2Njc3MDE5LDE4LjY1NTYwNTggNC4wMzA4MjAwMywxOC40NDgyNTc5IDMuNzkyMTMzNTUsMTguMzM5MDc2MSBMMy42NzgxNzc0MywxOC4yNTY5NzQ2IEMzLjYwMjI0NDY5LDE4LjIwMjQxMjMgMy41MzE3ODQ1OCwxOC4xMzY2MDQ5IDMuNDY2NjI2MDgsMTguMDYwMjQwOCBDMy40MDE1MjQ1OCwxNy45ODM4NzY2IDMuMzUyNzgzOTcsMTcuOTA3NDU1MSAzLjMyMDIzMzIzLDE3LjgzMDkxODggQzMuMjg3NjI1NDcsMTcuNzU0MzI1MSAzLjMxNDY0NjU4LDE3LjY5MTUwMTEgMy40MDE1ODE1OSwxNy42NDIyMTcyIEMzLjQ4ODUxNjYsMTcuNTkyOTMzNCAzLjY0NTYyNjY4LDE3LjU2OTAwODYgMy44NzM1OTU5MywxNy41NjkwMDg2IEw0LjE5ODk4OTM5LDE3LjYxNzk0ODIgQzQuNDE2MDEzMzcsMTcuNjYxNzI0MiA0LjY4NDQ1NzI3LDE3Ljc5MjQ3ODUgNS4wMDQ2NjMxNCwxOC4wMTEwMTQzIEM1LjMyNDY5Nzk4LDE4LjIyOTM3NzkgNS41ODc3ODMyNywxOC41MTMyNjIxIDUuNzkzOTc2LDE4Ljg2MjU1MjEgQzYuMDQzNjY0NzUsMTkuMzEwNDA5OSA2LjM0NDQ4ODM4LDE5LjY1MTY2NzYgNi42OTczMDE5OSwxOS44ODY0OTc0IEM3LjA0OTgzMDU4LDIwLjEyMTMyNzMgNy40MDUyNjY0OSwyMC4yMzg1NDE0IDcuNzYzMjY3NzEsMjAuMjM4NTQxNCBDOC4xMjEyNjg5MiwyMC4yMzg1NDE0IDguNDMwNDcyNTIsMjAuMjExMjMxNiA4LjY5MDk5MjUxLDIwLjE1Njg5ODkgQzguOTUxMjI3NDcsMjAuMTAyMjc5MyA5LjE5NTM4NjU3LDIwLjAyMDE3NzcgOS40MjMzNTU4MiwxOS45MTEwNTMzIEM5LjUyMTAwODA2LDE5LjE3OTA4MTkgOS43ODY4ODY2NywxOC42MTY3NjM5IDEwLjIyMDc2MzYsMTguMjIzNjk3OSBDOS42MDIzNTY0MiwxOC4xNTgyOTIxIDkuMDQ2MzcxNDIsMTguMDU5NzgxOCA4LjU1MjUyMzU3LDE3LjkyODc5OCBDOC4wNTg5NjA3NSwxNy43OTc2NDIxIDcuNTQ4OTIzMDMsMTcuNTg0Nzg2MyA3LjAyMjc1MjQ2LDE3LjI4OTY1NjkgQzYuNDk2Mjk2ODUsMTYuOTk0OTI5MSA2LjA1OTU2OTU4LDE2LjYyODk0MzQgNS43MTI0NTY2MiwxNi4xOTIzMzA5IEM1LjM2NTI4NjY1LDE1Ljc1NTQ4ODkgNS4wODAzNjc4NSwxNS4xODE5ODMxIDQuODU4MDk5MjYsMTQuNDcyMzMgQzQuNjM1NzE2NjYsMTMuNzYyMzkgNC41MjQ0OTY4NiwxMi45NDM0NDAzIDQuNTI0NDk2ODYsMTIuMDE1MjUxNCBDNC41MjQ0OTY4NiwxMC42OTM2NTIzIDQuOTUzMTg2MjEsOS41NjkwMTY0MiA1LjgxMDM5Mzg5LDguNjQwNzEyNzggQzUuNDA4ODM5NjcsNy42NDcxMTgwNyA1LjQ0Njc0OTAzLDYuNTMzMjY4NDYgNS45MjQyMzYsNS4yOTkyNzg2OCBDNi4yMzg5MTIyMiw1LjIwMDg4MzA4IDYuNzA1NTY3OTQsNS4yNzQ3MjI4MSA3LjMyMzk3NTE0LDUuNTIwMzM4ODcgQzcuOTQyNDk2MzQsNS43NjYwNjk2OCA4LjM5NTM1NjQ3LDUuOTc2NTczMTQgOC42ODMwMTE1OSw2LjE1MTEwMzQxIEM4Ljk3MDY2NjcsNi4zMjU1NzYzIDkuMjAxMTQ0MjQsNi40NzM0Mjc4NyA5LjM3NDc4NjIzLDYuNTkzMzM4NTQgQzEwLjM4NDA4NzQsNi4zMDk1MTE3MSAxMS40MjU2NTQzLDYuMTY3NTY5NjEgMTIuNDk5NzcyLDYuMTY3NTY5NjEgQzEzLjU3Mzg4OTYsNi4xNjc1Njk2MSAxNC42MTU2ODQ2LDYuMzA5NTExNzEgMTUuNjI1MDQyOCw2LjU5MzMzODU0IEwxNi4yNDM1MDcsNi4yMDAzODcyNiBDMTYuNjY2NDM4Niw1LjkzODE5MDI1IDE3LjE2NTg3MzEsNS42OTc5MDk5MyAxNy43NDA2MTMzLDUuNDc5NDg4OTIgQzE4LjMxNTY5NTUsNS4yNjExODI2NiAxOC43NTU0NDQxLDUuMjAxMDU1MiAxOS4wNTk0MDMxLDUuMjk5NDUwOCBDMTkuNTQ3NDkzMyw2LjUzMzQ5Nzk1IDE5LjU5MDk4OTMsNy42NDcyOTAxOSAxOS4xODkzMjExLDguNjQwODg0OSBDMjAuMDQ2NDcxNyw5LjU2OTE4ODU0IDIwLjQ3NTMzMjEsMTAuNjk0MTExMiAyMC40NzUzMzIxLDEyLjAxNTQyMzUgQzIwLjQ3NTMzMjEsMTIuOTQzNjEyNCAyMC4zNjM3MTMzLDEzLjc2NTE0MzkgMjAuMTQxNjcyNywxNC40ODA1MzQ0IEMxOS45MTkzNDcxLDE1LjE5NjAzOTYgMTkuNjMxOTc3LDE1Ljc2ODk3MTcgMTkuMjc5NDQ4NSwxNi4yMDA1MzUzIEMxOC45MjY1MjA4LDE2LjYzMjA0MTYgMTguNDg3MDAwMiwxNi45OTUxNTg2IDE3Ljk2MDgyOTcsMTcuMjg5ODI5MSBDMTcuNDM0NTQ1MSwxNy41ODQ3MjkgMTYuOTI0MzM2MywxNy43OTc1ODQ4IDE2LjQzMDc3MzUsMTcuOTI4NzQwNiBDMTUuOTM2OTgyNywxOC4wNTk4OTY1IDE1LjM4MDk5NzcsMTguMTU4NDY0MiAxNC43NjI1OTA1LDE4LjIyMzk4NDggQzE1LjMyNjYxMzQsMTguNzE1MjE2OSAxNS42MDg2ODE5LDE5LjQ5MDYyMDEgMTUuNjA4NjgxOSwyMC41NDk4NTAxIEwxNS42MDg2ODE5LDI0LjAwNTg1OTIgQzE1LjYwODY4MTksMjQuMjAyMTkxNCAxNS42NzY1MTk3LDI0LjM2NjEwNzUgMTUuODEyMzA5MywyNC40OTcwOTEzIEMxNS45NDc5Mjc5LDI0LjYyNzg0NTUgMTYuMTYyMTAxNiwyNC42NjYzNDMyIDE2LjQ1NTExNTMsMjQuNjExNTUxNSBDMTguOTcyNjk2MSwyMy43NzA4NTcyIDIxLjAyNjE4NjUsMjIuMjU1Njc5OCAyMi42MTU3MDA1LDIwLjA2NjA3NjYgQzI0LjIwNTA0MzUsMTcuODc2NjQ1NSAyNSwxNS40MTE1OTIgMjUsMTIuNjcwMjg0OSBDMjQuOTk5NDI5OSwxMC4zODg0ODI1IDI0LjQ0MDMwOTYsOC4yODM4NDk0NSAyMy4zMjMyMDksNi4zNTYzODU4OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+" alt="GitHub Logo"/></a></li><li><a href="https://openj9.slack.com/" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjVweCIgaGVpZ2h0PSIyNXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPCEtLSBDcmVhdGVkIHdpdGggTWV0aG9kIERyYXcgLSBodHRwOi8vZ2l0aHViLmNvbS9kdW9waXhlbC9NZXRob2QtRHJhdy8gLS0+CgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjIiLz4KICA8L2c+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGVsbGlwc2Ugcnk9IjExIiByeD0iMTEiIGlkPSJzdmdfMSIgY3k9IjEyIiBjeD0iMTIiIHN0cm9rZT0iI0ZGRiIgZmlsbD0iI0ZGRkZGRiIvPgogIDxzdHlsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCwwLjA2NTE4MjQ5NTU3MzI1MzYyLDAsMCkgIiB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiM0MzQzNDM7fTwvc3R5bGU+CiAgPGcgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE5Ij4KICAgPGcgc3Ryb2tlPSJudWxsIiB0cmFuc2Zvcm09Im1hdHJpeCgwLjEzMDE1NTgwODUxODA5NDg2LDAsMCwwLjEzMDE1NTgwODUxODA5NDg2LC02Ljg0OTAwNjQ1MDQwNTQ5OSwtNi44MzE1MDczOTEwMjE5MjQpICIgaWQ9InN2Z182Ij4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z183Ij4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfOCIgZD0ibTExMC4yOTgyOTIsMTYxLjI5MzAxMWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOXMtMTIuOSwtNS44IC0xMi45LC0xMi45YzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOWwxMi45LDBsMCwxMi45eiIgY2xhc3M9InN0MCIvPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z185IiBkPSJtMTE2Ljc5ODI5MiwxNjEuMjkzMDExYzAsLTcuMSA1LjgsLTEyLjkgMTIuOSwtMTIuOXMxMi45LDUuOCAxMi45LDEyLjlsMCwzMi4zYzAsNy4xIC01LjgsMTIuOSAtMTIuOSwxMi45cy0xMi45LC01LjggLTEyLjksLTEyLjljMCwwIDAsLTMyLjMgMCwtMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xMCI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzExIiBkPSJtMTI5LjY5ODI5MiwxMDkuNDkzMDExYy03LjEsMCAtMTIuOSwtNS44IC0xMi45LC0xMi45czUuOCwtMTIuOSAxMi45LC0xMi45czEyLjksNS44IDEyLjksMTIuOWwwLDEyLjlsLTEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTIiIGQ9Im0xMjkuNjk4MjkyLDExNS45OTMwMTFjNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0zMi4zLDBjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlzNS44LC0xMi45IDEyLjksLTEyLjljMCwwIDMyLjMsMCAzMi4zLDB6IiBjbGFzcz0ic3QwIi8+CiAgICA8L2c+CiAgICA8ZyBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTMiPgogICAgIDxwYXRoIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNCIgZD0ibTE4MS40OTgyOTIsMTI4Ljg5MzAxMWMwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45cy01LjgsMTIuOSAtMTIuOSwxMi45bC0xMi45LDBsMCwtMTIuOXoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTUiIGQ9Im0xNzQuOTk4MjkyLDEyOC44OTMwMTFjMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjljLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjlsMCwtMzIuM2MwLC03LjEgNS44LC0xMi45IDEyLjksLTEyLjljNy4xLDAgMTIuOSw1LjggMTIuOSwxMi45bDAsMzIuM3oiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgIDxnIHN0cm9rZT0ibnVsbCIgaWQ9InN2Z18xNiI+CiAgICAgPHBhdGggc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzE3IiBkPSJtMTYyLjA5ODI5MiwxODAuNjkzMDExYzcuMSwwIDEyLjksNS44IDEyLjksMTIuOWMwLDcuMSAtNS44LDEyLjkgLTEyLjksMTIuOWMtNy4xLDAgLTEyLjksLTUuOCAtMTIuOSwtMTIuOWwwLC0xMi45bDEyLjksMHoiIGNsYXNzPSJzdDAiLz4KICAgICA8cGF0aCBzdHJva2U9Im51bGwiIGlkPSJzdmdfMTgiIGQ9Im0xNjIuMDk4MjkyLDE3NC4xOTMwMTFjLTcuMSwwIC0xMi45LC01LjggLTEyLjksLTEyLjljMCwtNy4xIDUuOCwtMTIuOSAxMi45LC0xMi45bDMyLjMsMGM3LjEsMCAxMi45LDUuOCAxMi45LDEyLjljMCw3LjEgLTUuOCwxMi45IC0xMi45LDEyLjlsLTMyLjMsMHoiIGNsYXNzPSJzdDAiLz4KICAgIDwvZz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+" alt="Slack logo"/></a></li><li><a href="https://stackoverflow.com/search?q=%23OpenJ9" rel="noopener noreferrer" target="_blank"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgNjUgNzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYxLjIgKDg5NjUzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zdGFja292ZXJmbG93LWxvZ288L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0ic3RhY2tvdmVyZmxvdy1sb2dvIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iUGF0aCIgZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1NC4yNDE3MjY2IDYzLjc3MDIyNjUgNTQuMjQxNzI2NiA0NSA2MSA0NSA2MSA3MCAwIDcwIDAgNDUgNi43NTgyNzMzOCA0NSA2Ljc1ODI3MzM4IDYzLjc3MDIyNjUiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMNDguMTE3ODUxLDUwLjA4NzIwMTEgTDQ5LjUzMjA2MjQsNDMuODg3NDgyNCBMMTYuMTIxMzE3MiwzNy40NDMwMzggTDE0LjcwNzEwNTcsNDMuNjQyNzU2NyBMMTQuNzA3MTA1Nyw0My42NDI3NTY3IFogTTE5LjEyNjUxNjUsMjguOTU5MjEyNCBMNTAuMDYyMzkxNyw0Mi4yNTU5Nzc1IEw1Mi44OTA4MTQ2LDM2LjU0NTcxMDMgTDIxLjk1NDkzOTMsMjMuMTY3MzY5OSBMMTkuMTI2NTE2NSwyOC45NTkyMTI0IFogTTI3LjcwMDE3MzMsMTQuOTI4MjcgTDUzLjk1MTQ3MzEsMzUuMDc3MzU1OCBMNTguMjgyNDk1NywzMC4yNjQ0MTYzIEwzMi4wMzExOTU4LDEwLjExNTMzMDUgTDI3LjcwMDE3MzMsMTQuOTI4MjcgTDI3LjcwMDE3MzMsMTQuOTI4MjcgWiBNNDQuNjcwNzEwNiwwIEwzOS4xOTA2NDEyLDMuNzUyNDYxMzIgTDU5LjUxOTkzMDcsMjkuMDQwNzg3NiBMNjUsMjUuMjg4MzI2MyBMNDQuNjcwNzEwNiwwIFogTTE0LDU4IEw0OC4xMTc4NTEsNTggTDQ4LjExNzg1MSw1MS43MTg3MDYgTDE0LDUxLjcxODcwNiBMMTQsNTggWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4KCgo=" alt="Stack Overflow logo"/></a></li></ul></nav></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script>
   
   function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-105616558-3',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0);
   if(true) {
@@ -17,4 +17,4 @@
       
       
       
-      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/performance/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-742d9c9328e3978208ef.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-51cfc654fd38628b84c4.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-66d5ab4d850cac8b76d0.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/4a3ea9cd-4fd2ebea143bb6faf8e7.js" async=""></script><script src="/openj9/commons-995392a5e28deac70171.js" async=""></script><script src="/openj9/component---src-pages-performance-js-51cfc654fd38628b84c4.js" async=""></script></body></html>
\ No newline at end of file
+      }</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/performance/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-daaf31a26353a5ba36f5.js"],"app":["/app-35f96420b86d21858873.js"],"component---src-pages-about-js":["/component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["/component---src-pages-index-js-95eb74b93a53ac66e3a0.js"],"component---src-pages-news-js":["/component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["/component---src-pages-performance-js-528a44fbfd1bc3044539.js"]};/*]]>*/</script><script src="/openj9/polyfill-daaf31a26353a5ba36f5.js" nomodule=""></script><script src="/openj9/webpack-runtime-f3eca94263f09fdd722d.js" async=""></script><script src="/openj9/styles-f7a64dad1c13bebc31fd.js" async=""></script><script src="/openj9/framework-63ec46a3540d83159f28.js" async=""></script><script src="/openj9/app-35f96420b86d21858873.js" async=""></script><script src="/openj9/4a3ea9cd-4fd2ebea143bb6faf8e7.js" async=""></script><script src="/openj9/commons-2ee5517a8df806aebc87.js" async=""></script><script src="/openj9/component---src-pages-performance-js-528a44fbfd1bc3044539.js" async=""></script></body></html>
\ No newline at end of file
diff --git a/tools/xtrace_option_builder.html b/tools/xtrace_option_builder.html
index 412d4d8..a7abbb6 100644
--- a/tools/xtrace_option_builder.html
+++ b/tools/xtrace_option_builder.html
@@ -459,7 +459,7 @@
 			// Remove any whitespace
 			var fixedSpec = specs[i].replace(/\s/g,'');
 
-			// Fix case if necessary (see https://github.com/eclipse/openj9/issues/1254)
+			// Fix case if necessary (see https://github.com/eclipse-openj9/openj9/issues/1254)
 			fixedSpec = fixTracepointIdCase(fixedSpec);
 
 			result += fixedSpec + ",";
diff --git a/webpack-runtime-66d5ab4d850cac8b76d0.js b/webpack-runtime-f3eca94263f09fdd722d.js
similarity index 89%
rename from webpack-runtime-66d5ab4d850cac8b76d0.js
rename to webpack-runtime-f3eca94263f09fdd722d.js
index 34787ca..1405a5d 100644
--- a/webpack-runtime-66d5ab4d850cac8b76d0.js
+++ b/webpack-runtime-f3eca94263f09fdd722d.js
@@ -1,2 +1,2 @@
-!function(e){function r(r){for(var t,c,u=r[0],i=r[1],f=r[2],p=0,l=[];p<u.length;p++)c=u[p],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&l.push(o[c][0]),o[c]=0;for(t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t]);for(s&&s(r);l.length;)l.shift()();return a.push.apply(a,f||[]),n()}function n(){for(var e,r=0;r<a.length;r++){for(var n=a[r],t=!0,u=1;u<n.length;u++){var i=n[u];0!==o[i]&&(t=!1)}t&&(a.splice(r--,1),e=c(c.s=n[0]))}return e}var t={},o={1:0},a=[];function c(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.e=function(e){var r=[],n=o[e];if(0!==n)if(n)r.push(n[2]);else{var t=new Promise((function(r,t){n=o[e]=[r,t]}));r.push(n[2]=t);var a,u=document.createElement("script");u.charset="utf-8",u.timeout=120,c.nc&&u.setAttribute("nonce",c.nc),u.src=function(e){return c.p+""+({0:"commons",2:"4a3ea9cd",4:"component---src-pages-about-js",5:"component---src-pages-index-js",6:"component---src-pages-news-js",7:"component---src-pages-performance-js"}[e]||e)+"-"+{0:"995392a5e28deac70171",2:"4fd2ebea143bb6faf8e7",4:"c595eec620f6abb5c8ad",5:"742d9c9328e3978208ef",6:"a9900c0d67642d471ec6",7:"51cfc654fd38628b84c4"}[e]+".js"}(e);var i=new Error;a=function(r){u.onerror=u.onload=null,clearTimeout(f);var n=o[e];if(0!==n){if(n){var t=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+t+": "+a+")",i.name="ChunkLoadError",i.type=t,i.request=a,n[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:u})}),12e4);u.onerror=u.onload=a,document.head.appendChild(u)}return Promise.all(r)},c.m=e,c.c=t,c.d=function(e,r,n){c.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,r){if(1&r&&(e=c(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)c.d(n,t,function(r){return e[r]}.bind(null,t));return n},c.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(r,"a",r),r},c.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},c.p="/openj9/",c.oe=function(e){throw console.error(e),e};var u=window.webpackJsonp=window.webpackJsonp||[],i=u.push.bind(u);u.push=r,u=u.slice();for(var f=0;f<u.length;f++)r(u[f]);var s=i;n()}([]);
-//# sourceMappingURL=webpack-runtime-66d5ab4d850cac8b76d0.js.map
\ No newline at end of file
+!function(e){function r(r){for(var t,c,u=r[0],i=r[1],f=r[2],p=0,l=[];p<u.length;p++)c=u[p],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&l.push(o[c][0]),o[c]=0;for(t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t]);for(s&&s(r);l.length;)l.shift()();return a.push.apply(a,f||[]),n()}function n(){for(var e,r=0;r<a.length;r++){for(var n=a[r],t=!0,u=1;u<n.length;u++){var i=n[u];0!==o[i]&&(t=!1)}t&&(a.splice(r--,1),e=c(c.s=n[0]))}return e}var t={},o={1:0},a=[];function c(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.e=function(e){var r=[],n=o[e];if(0!==n)if(n)r.push(n[2]);else{var t=new Promise((function(r,t){n=o[e]=[r,t]}));r.push(n[2]=t);var a,u=document.createElement("script");u.charset="utf-8",u.timeout=120,c.nc&&u.setAttribute("nonce",c.nc),u.src=function(e){return c.p+""+({0:"commons",2:"4a3ea9cd",4:"component---src-pages-about-js",5:"component---src-pages-index-js",6:"component---src-pages-news-js",7:"component---src-pages-performance-js"}[e]||e)+"-"+{0:"2ee5517a8df806aebc87",2:"4fd2ebea143bb6faf8e7",4:"c595eec620f6abb5c8ad",5:"95eb74b93a53ac66e3a0",6:"a9900c0d67642d471ec6",7:"528a44fbfd1bc3044539"}[e]+".js"}(e);var i=new Error;a=function(r){u.onerror=u.onload=null,clearTimeout(f);var n=o[e];if(0!==n){if(n){var t=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+t+": "+a+")",i.name="ChunkLoadError",i.type=t,i.request=a,n[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:u})}),12e4);u.onerror=u.onload=a,document.head.appendChild(u)}return Promise.all(r)},c.m=e,c.c=t,c.d=function(e,r,n){c.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,r){if(1&r&&(e=c(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)c.d(n,t,function(r){return e[r]}.bind(null,t));return n},c.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(r,"a",r),r},c.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},c.p="/openj9/",c.oe=function(e){throw console.error(e),e};var u=window.webpackJsonp=window.webpackJsonp||[],i=u.push.bind(u);u.push=r,u=u.slice();for(var f=0;f<u.length;f++)r(u[f]);var s=i;n()}([]);
+//# sourceMappingURL=webpack-runtime-f3eca94263f09fdd722d.js.map
\ No newline at end of file
diff --git a/webpack-runtime-66d5ab4d850cac8b76d0.js.map b/webpack-runtime-f3eca94263f09fdd722d.js.map
similarity index 97%
rename from webpack-runtime-66d5ab4d850cac8b76d0.js.map
rename to webpack-runtime-f3eca94263f09fdd722d.js.map
index 10f325a..dc9ba42 100644
--- a/webpack-runtime-66d5ab4d850cac8b76d0.js.map
+++ b/webpack-runtime-f3eca94263f09fdd722d.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice"],"mappings":"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","file":"webpack-runtime-66d5ab4d850cac8b76d0.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0\":\"commons\",\"2\":\"4a3ea9cd\",\"4\":\"component---src-pages-about-js\",\"5\":\"component---src-pages-index-js\",\"6\":\"component---src-pages-news-js\",\"7\":\"component---src-pages-performance-js\"}[chunkId]||chunkId) + \"-\" + {\"0\":\"995392a5e28deac70171\",\"2\":\"4fd2ebea143bb6faf8e7\",\"4\":\"c595eec620f6abb5c8ad\",\"5\":\"742d9c9328e3978208ef\",\"6\":\"a9900c0d67642d471ec6\",\"7\":\"51cfc654fd38628b84c4\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/openj9/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice"],"mappings":"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","file":"webpack-runtime-f3eca94263f09fdd722d.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0\":\"commons\",\"2\":\"4a3ea9cd\",\"4\":\"component---src-pages-about-js\",\"5\":\"component---src-pages-index-js\",\"6\":\"component---src-pages-news-js\",\"7\":\"component---src-pages-performance-js\"}[chunkId]||chunkId) + \"-\" + {\"0\":\"2ee5517a8df806aebc87\",\"2\":\"4fd2ebea143bb6faf8e7\",\"4\":\"c595eec620f6abb5c8ad\",\"5\":\"95eb74b93a53ac66e3a0\",\"6\":\"a9900c0d67642d471ec6\",\"7\":\"528a44fbfd1bc3044539\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/openj9/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/webpack.stats.json b/webpack.stats.json
index 5c8b56d..ca217ba 100644
--- a/webpack.stats.json
+++ b/webpack.stats.json
@@ -1 +1 @@
-{"errors":[],"warnings":[],"namedChunkGroups":{"polyfill":{"chunks":[1,0,9],"assets":["webpack-runtime-66d5ab4d850cac8b76d0.js","webpack-runtime-66d5ab4d850cac8b76d0.js.map","commons-995392a5e28deac70171.js","commons-995392a5e28deac70171.js.map","polyfill-daaf31a26353a5ba36f5.js","polyfill-daaf31a26353a5ba36f5.js.map"],"children":{},"childAssets":{}},"app":{"chunks":[1,8,10,3],"assets":["webpack-runtime-66d5ab4d850cac8b76d0.js","webpack-runtime-66d5ab4d850cac8b76d0.js.map","framework-63ec46a3540d83159f28.js","framework-63ec46a3540d83159f28.js.map","styles.51a6f681b234fe6f2f73.css","styles-f7a64dad1c13bebc31fd.js","styles-f7a64dad1c13bebc31fd.js.map","app-35f96420b86d21858873.js","app-35f96420b86d21858873.js.map"],"children":{},"childAssets":{}},"component---src-pages-about-js":{"chunks":[0,4],"assets":["commons-995392a5e28deac70171.js","commons-995392a5e28deac70171.js.map","component---src-pages-about-js-c595eec620f6abb5c8ad.js","component---src-pages-about-js-c595eec620f6abb5c8ad.js.map"],"children":{},"childAssets":{}},"component---src-pages-index-js":{"chunks":[0,5],"assets":["commons-995392a5e28deac70171.js","commons-995392a5e28deac70171.js.map","component---src-pages-index-js-742d9c9328e3978208ef.js","component---src-pages-index-js-742d9c9328e3978208ef.js.map"],"children":{},"childAssets":{}},"component---src-pages-news-js":{"chunks":[0,6],"assets":["commons-995392a5e28deac70171.js","commons-995392a5e28deac70171.js.map","component---src-pages-news-js-a9900c0d67642d471ec6.js","component---src-pages-news-js-a9900c0d67642d471ec6.js.map"],"children":{},"childAssets":{}},"component---src-pages-performance-js":{"chunks":[2,0,7],"assets":["4a3ea9cd-4fd2ebea143bb6faf8e7.js","4a3ea9cd-4fd2ebea143bb6faf8e7.js.map","commons-995392a5e28deac70171.js","commons-995392a5e28deac70171.js.map","component---src-pages-performance-js-51cfc654fd38628b84c4.js","component---src-pages-performance-js-51cfc654fd38628b84c4.js.map"],"children":{},"childAssets":{}}},"assetsByChunkName":{"polyfill":["webpack-runtime-66d5ab4d850cac8b76d0.js","commons-995392a5e28deac70171.js","polyfill-daaf31a26353a5ba36f5.js"],"app":["webpack-runtime-66d5ab4d850cac8b76d0.js","framework-63ec46a3540d83159f28.js","styles.51a6f681b234fe6f2f73.css","styles-f7a64dad1c13bebc31fd.js","app-35f96420b86d21858873.js"],"component---src-pages-about-js":["commons-995392a5e28deac70171.js","component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["commons-995392a5e28deac70171.js","component---src-pages-index-js-742d9c9328e3978208ef.js"],"component---src-pages-news-js":["commons-995392a5e28deac70171.js","component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["4a3ea9cd-4fd2ebea143bb6faf8e7.js","commons-995392a5e28deac70171.js","component---src-pages-performance-js-51cfc654fd38628b84c4.js"]}}
\ No newline at end of file
+{"errors":[],"warnings":[],"namedChunkGroups":{"polyfill":{"chunks":[1,0,9],"assets":["webpack-runtime-f3eca94263f09fdd722d.js","webpack-runtime-f3eca94263f09fdd722d.js.map","commons-2ee5517a8df806aebc87.js","commons-2ee5517a8df806aebc87.js.map","polyfill-daaf31a26353a5ba36f5.js","polyfill-daaf31a26353a5ba36f5.js.map"],"children":{},"childAssets":{}},"app":{"chunks":[1,8,10,3],"assets":["webpack-runtime-f3eca94263f09fdd722d.js","webpack-runtime-f3eca94263f09fdd722d.js.map","framework-63ec46a3540d83159f28.js","framework-63ec46a3540d83159f28.js.map","styles.51a6f681b234fe6f2f73.css","styles-f7a64dad1c13bebc31fd.js","styles-f7a64dad1c13bebc31fd.js.map","app-35f96420b86d21858873.js","app-35f96420b86d21858873.js.map"],"children":{},"childAssets":{}},"component---src-pages-about-js":{"chunks":[0,4],"assets":["commons-2ee5517a8df806aebc87.js","commons-2ee5517a8df806aebc87.js.map","component---src-pages-about-js-c595eec620f6abb5c8ad.js","component---src-pages-about-js-c595eec620f6abb5c8ad.js.map"],"children":{},"childAssets":{}},"component---src-pages-index-js":{"chunks":[0,5],"assets":["commons-2ee5517a8df806aebc87.js","commons-2ee5517a8df806aebc87.js.map","component---src-pages-index-js-95eb74b93a53ac66e3a0.js","component---src-pages-index-js-95eb74b93a53ac66e3a0.js.map"],"children":{},"childAssets":{}},"component---src-pages-news-js":{"chunks":[0,6],"assets":["commons-2ee5517a8df806aebc87.js","commons-2ee5517a8df806aebc87.js.map","component---src-pages-news-js-a9900c0d67642d471ec6.js","component---src-pages-news-js-a9900c0d67642d471ec6.js.map"],"children":{},"childAssets":{}},"component---src-pages-performance-js":{"chunks":[2,0,7],"assets":["4a3ea9cd-4fd2ebea143bb6faf8e7.js","4a3ea9cd-4fd2ebea143bb6faf8e7.js.map","commons-2ee5517a8df806aebc87.js","commons-2ee5517a8df806aebc87.js.map","component---src-pages-performance-js-528a44fbfd1bc3044539.js","component---src-pages-performance-js-528a44fbfd1bc3044539.js.map"],"children":{},"childAssets":{}}},"assetsByChunkName":{"polyfill":["webpack-runtime-f3eca94263f09fdd722d.js","commons-2ee5517a8df806aebc87.js","polyfill-daaf31a26353a5ba36f5.js"],"app":["webpack-runtime-f3eca94263f09fdd722d.js","framework-63ec46a3540d83159f28.js","styles.51a6f681b234fe6f2f73.css","styles-f7a64dad1c13bebc31fd.js","app-35f96420b86d21858873.js"],"component---src-pages-about-js":["commons-2ee5517a8df806aebc87.js","component---src-pages-about-js-c595eec620f6abb5c8ad.js"],"component---src-pages-index-js":["commons-2ee5517a8df806aebc87.js","component---src-pages-index-js-95eb74b93a53ac66e3a0.js"],"component---src-pages-news-js":["commons-2ee5517a8df806aebc87.js","component---src-pages-news-js-a9900c0d67642d471ec6.js"],"component---src-pages-performance-js":["4a3ea9cd-4fd2ebea143bb6faf8e7.js","commons-2ee5517a8df806aebc87.js","component---src-pages-performance-js-528a44fbfd1bc3044539.js"]}}
\ No newline at end of file