use crate::data::caniuse::features::Feature;
static KEYS: &[&str] = &[
"aac",
"abortcontroller",
"accelerometer",
"addeventlistener",
"ambient-light",
"apng",
"array-find",
"array-find-index",
"array-flat",
"array-includes",
"arrow-functions",
"asmjs",
"async-clipboard",
"async-functions",
"atob-btoa",
"audio",
"audio-api",
"audiotracks",
"autofocus",
"auxclick",
"av1",
"avif",
"background-attachment",
"background-clip-text",
"background-img-opts",
"background-position-x-y",
"background-repeat-round-space",
"background-sync",
"battery-status",
"beacon",
"beforeafterprint",
"bigint",
"blobbuilder",
"bloburls",
"border-image",
"border-radius",
"broadcastchannel",
"brotli",
"calc",
"canvas",
"canvas-blending",
"canvas-text",
"ch-unit",
"chacha20-poly1305",
"channel-messaging",
"childnode-remove",
"classlist",
"client-hints-dpr-width-viewport",
"clipboard",
"colr",
"colr-v1",
"comparedocumentposition",
"console-basic",
"console-time",
"const",
"constraint-validation",
"contenteditable",
"contentsecuritypolicy",
"contentsecuritypolicy2",
"cookie-store-api",
"cors",
"createimagebitmap",
"credential-management",
"cross-document-view-transitions",
"cryptography",
"css-all",
"css-anchor-positioning",
"css-animation",
"css-any-link",
"css-appearance",
"css-at-counter-style",
"css-backdrop-filter",
"css-background-offsets",
"css-backgroundblendmode",
"css-boxdecorationbreak",
"css-boxshadow",
"css-canvas",
"css-caret-color",
"css-cascade-layers",
"css-cascade-scope",
"css-case-insensitive",
"css-clip-path",
"css-color-adjust",
"css-color-function",
"css-conic-gradients",
"css-container-queries",
"css-container-queries-style",
"css-container-query-units",
"css-containment",
"css-content-visibility",
"css-counters",
"css-crisp-edges",
"css-cross-fade",
"css-default-pseudo",
"css-descendant-gtgt",
"css-deviceadaptation",
"css-dir-pseudo",
"css-display-contents",
"css-element-function",
"css-env-function",
"css-exclusions",
"css-featurequeries",
"css-filter-function",
"css-filters",
"css-first-letter",
"css-first-line",
"css-fixed",
"css-focus-visible",
"css-focus-within",
"css-font-palette",
"css-font-rendering-controls",
"css-font-stretch",
"css-gencontent",
"css-gradients",
"css-grid",
"css-grid-lanes",
"css-hanging-punctuation",
"css-has",
"css-hyphens",
"css-if",
"css-image-orientation",
"css-image-set",
"css-in-out-of-range",
"css-indeterminate-pseudo",
"css-initial-letter",
"css-initial-value",
"css-lch-lab",
"css-letter-spacing",
"css-line-clamp",
"css-logical-props",
"css-marker-pseudo",
"css-masks",
"css-matches-pseudo",
"css-math-functions",
"css-media-interaction",
"css-media-range-syntax",
"css-media-resolution",
"css-mediaqueries",
"css-mixblendmode",
"css-motion-paths",
"css-namespaces",
"css-nesting",
"css-not-sel-list",
"css-nth-child-of",
"css-opacity",
"css-optional-pseudo",
"css-overflow",
"css-overflow-anchor",
"css-overflow-overlay",
"css-overscroll-behavior",
"css-page-break",
"css-paged-media",
"css-paint-api",
"css-placeholder",
"css-placeholder-shown",
"css-read-only-write",
"css-rebeccapurple",
"css-reflections",
"css-regions",
"css-relative-colors",
"css-repeating-gradients",
"css-resize",
"css-revert-value",
"css-rrggbbaa",
"css-scroll-behavior",
"css-scrollbar",
"css-sel2",
"css-sel3",
"css-selection",
"css-shapes",
"css-snappoints",
"css-sticky",
"css-subgrid",
"css-supports-api",
"css-table",
"css-text-align-last",
"css-text-box-trim",
"css-text-indent",
"css-text-justify",
"css-text-orientation",
"css-text-wrap-balance",
"css-textshadow",
"css-touch-action",
"css-transitions",
"css-unset-value",
"css-variables",
"css-when-else",
"css-widows-orphans",
"css-writing-mode",
"css-zoom",
"css3-attr",
"css3-boxsizing",
"css3-colors",
"css3-cursors",
"css3-cursors-grab",
"css3-cursors-newer",
"css3-tabsize",
"currentcolor",
"custom-elements",
"custom-elementsv1",
"customevent",
"customizable-select",
"datalist",
"dataset",
"datauri",
"date-tolocaledatestring",
"declarative-shadow-dom",
"decorators",
"details",
"deviceorientation",
"devicepixelratio",
"dialog",
"dispatchevent",
"dnssec",
"do-not-track",
"document-currentscript",
"document-evaluate-xpath",
"document-execcommand",
"document-policy",
"document-scrollingelement",
"documenthead",
"dom-manip-convenience",
"dom-range",
"domcontentloaded",
"dommatrix",
"download",
"dragndrop",
"element-closest",
"element-from-point",
"element-scroll-methods",
"eme",
"eot",
"es5",
"es6",
"es6-class",
"es6-generators",
"es6-module",
"es6-module-dynamic-import",
"es6-number",
"es6-string-includes",
"eventsource",
"extended-system-fonts",
"feature-policy",
"fetch",
"fieldset-disabled",
"fileapi",
"filereader",
"filereadersync",
"filesystem",
"flac",
"flexbox",
"flexbox-gap",
"flow-root",
"focusin-focusout-events",
"font-family-system-ui",
"font-feature",
"font-kerning",
"font-loading",
"font-size-adjust",
"font-smooth",
"font-unicode-range",
"font-variant-alternates",
"font-variant-numeric",
"fontface",
"form-attribute",
"form-submit-attributes",
"form-validation",
"fullscreen",
"gamepad",
"geolocation",
"getboundingclientrect",
"getcomputedstyle",
"getelementsbyclassname",
"getrandomvalues",
"gyroscope",
"hardwareconcurrency",
"hashchange",
"heif",
"hevc",
"hidden",
"high-resolution-time",
"history",
"html-media-capture",
"html5semantic",
"http-live-streaming",
"http2",
"http3",
"iframe-sandbox",
"iframe-seamless",
"iframe-srcdoc",
"imagecapture",
"ime",
"img-naturalwidth-naturalheight",
"import-maps",
"imports",
"indeterminate-checkbox",
"indexeddb",
"indexeddb2",
"inline-block",
"innertext",
"input-autocomplete-onoff",
"input-color",
"input-datetime",
"input-email-tel-url",
"input-event",
"input-file-accept",
"input-file-directory",
"input-file-multiple",
"input-inputmode",
"input-minlength",
"input-number",
"input-pattern",
"input-placeholder",
"input-range",
"input-search",
"input-selection",
"insert-adjacent",
"insertadjacenthtml",
"internationalization",
"intersectionobserver",
"intersectionobserver-v2",
"intl-pluralrules",
"intrinsic-width",
"jpeg2000",
"jpegxl",
"jpegxr",
"js-regexp-lookbehind",
"json",
"justify-content-space-evenly",
"kerning-pairs-ligatures",
"keyboardevent-charcode",
"keyboardevent-code",
"keyboardevent-getmodifierstate",
"keyboardevent-key",
"keyboardevent-location",
"keyboardevent-which",
"lazyload",
"let",
"link-icon-png",
"link-icon-svg",
"link-rel-dns-prefetch",
"link-rel-modulepreload",
"link-rel-preconnect",
"link-rel-prefetch",
"link-rel-preload",
"link-rel-prerender",
"loading-lazy-attr",
"loading-lazy-media",
"localecompare",
"magnetometer",
"matchesselector",
"matchmedia",
"mathml",
"maxlength",
"media-fragments",
"mediacapture-fromelement",
"mediarecorder",
"mediasource",
"menu",
"meta-theme-color",
"meter",
"midi",
"minmaxwh",
"mp3",
"mpeg-dash",
"mpeg4",
"multibackgrounds",
"multicolumn",
"mutation-events",
"mutationobserver",
"namevalue-storage",
"native-filesystem-api",
"nav-timing",
"netinfo",
"notifications",
"object-entries",
"object-fit",
"object-observe",
"object-values",
"objectrtc",
"offline-apps",
"offscreencanvas",
"ogg-vorbis",
"ogv",
"ol-reversed",
"once-event-listener",
"online-status",
"opus",
"orientation-sensor",
"outline",
"pad-start-end",
"page-transition-events",
"pagevisibility",
"passive-event-listener",
"passkeys",
"path2d",
"payment-request",
"pdf-viewer",
"permissions-api",
"permissions-policy",
"picture",
"picture-in-picture",
"ping",
"png-alpha",
"pointer",
"pointer-events",
"pointerlock",
"portals",
"prefers-color-scheme",
"prefers-reduced-motion",
"progress",
"promise-finally",
"promises",
"proximity",
"proxy",
"publickeypinning",
"push-api",
"queryselector",
"readonly-attr",
"referrer-policy",
"registerprotocolhandler",
"rel-noopener",
"rel-noreferrer",
"rellist",
"rem",
"requestanimationframe",
"requestidlecallback",
"resizeobserver",
"resource-timing",
"rest-parameters",
"rtcpeerconnection",
"ruby",
"run-in",
"same-site-cookie-attribute",
"screen-orientation",
"script-async",
"script-defer",
"scrollintoview",
"scrollintoviewifneeded",
"sdch",
"selection-api",
"server-timing",
"serviceworkers",
"setimmediate",
"shadowdom",
"shadowdomv1",
"sharedarraybuffer",
"sharedworkers",
"sni",
"spdy",
"speech-recognition",
"speech-synthesis",
"spellcheck-attribute",
"sql-storage",
"srcset",
"stream",
"streams",
"stricttransportsecurity",
"style-scoped",
"subresource-integrity",
"svg",
"svg-css",
"svg-filters",
"svg-fonts",
"svg-fragment",
"svg-html",
"svg-html5",
"svg-img",
"svg-smil",
"sxg",
"tabindex-attr",
"template",
"template-literals",
"temporal",
"text-decoration",
"text-emphasis",
"text-overflow",
"text-size-adjust",
"text-stroke",
"textcontent",
"textencoder",
"tls1-1",
"tls1-2",
"tls1-3",
"touch",
"transforms2d",
"transforms3d",
"trusted-types",
"ttf",
"typedarrays",
"u2f",
"unhandledrejection",
"upgradeinsecurerequests",
"url",
"url-scroll-to-text-fragment",
"urlsearchparams",
"use-strict",
"user-select-none",
"user-timing",
"variable-fonts",
"vector-effect",
"vibration",
"video",
"videotracks",
"view-transitions",
"viewport-unit-variants",
"viewport-units",
"wai-aria",
"wake-lock",
"wasm",
"wasm-bigint",
"wasm-bulk-memory",
"wasm-multi-value",
"wasm-mutable-globals",
"wasm-nontrapping-fptoint",
"wasm-reference-types",
"wasm-signext",
"wasm-simd",
"wasm-threads",
"wav",
"wbr-element",
"web-animation",
"web-bluetooth",
"web-serial",
"web-share",
"webauthn",
"webcodecs",
"webgl",
"webgl2",
"webgpu",
"webhid",
"webkit-user-drag",
"webm",
"webnfc",
"webp",
"websockets",
"webtransport",
"webusb",
"webvr",
"webvtt",
"webworkers",
"webxr",
"will-change",
"woff",
"woff2",
"word-break",
"wordwrap",
"x-doc-messaging",
"x-frame-options",
"xhr2",
"xhtml",
"xhtmlsmil",
"xml-serializer",
"zstd",
];
static RANGES: &[u32] = &[
0u32, 2393u32, 4168u32, 5011u32, 7598u32, 7756u32, 9896u32, 12007u32, 14127u32, 15849u32,
17880u32, 19975u32, 21662u32, 23342u32, 25242u32, 27799u32, 30362u32, 32653u32, 33251u32,
35404u32, 36921u32, 38216u32, 39401u32, 41907u32, 44227u32, 46796u32, 49160u32, 51399u32,
52452u32, 53727u32, 55790u32, 57632u32, 59286u32, 61712u32, 64127u32, 66677u32, 69234u32,
71006u32, 72969u32, 75344u32, 77931u32, 80185u32, 82730u32, 85078u32, 87076u32, 89450u32,
91725u32, 94204u32, 95293u32, 97660u32, 99504u32, 100333u32, 102795u32, 105293u32, 107783u32,
110342u32, 112772u32, 115309u32, 117709u32, 119823u32, 120750u32, 123256u32, 125086u32,
126316u32, 126755u32, 128909u32, 131037u32, 131432u32, 133921u32, 136267u32, 138751u32,
140126u32, 141724u32, 144109u32, 146254u32, 148543u32, 151096u32, 151950u32, 153802u32,
154986u32, 155578u32, 157570u32, 159875u32, 161751u32, 162890u32, 164536u32, 165557u32,
166171u32, 167192u32, 168884u32, 169932u32, 172521u32, 174790u32, 176616u32, 178996u32,
179003u32, 179077u32, 180177u32, 182021u32, 182554u32, 184295u32, 184338u32, 186583u32,
187109u32, 189467u32, 192008u32, 194605u32, 197169u32, 198783u32, 200635u32, 201736u32,
203547u32, 205664u32, 208253u32, 210775u32, 212704u32, 212734u32, 213242u32, 214254u32,
216420u32, 216564u32, 218388u32, 220453u32, 222849u32, 225255u32, 226266u32, 228730u32,
229737u32, 232296u32, 234496u32, 236951u32, 238529u32, 240977u32, 243331u32, 244952u32,
246958u32, 248109u32, 250668u32, 253249u32, 255347u32, 257042u32, 259609u32, 260466u32,
262024u32, 263194u32, 265791u32, 268289u32, 270884u32, 272254u32, 273284u32, 274931u32,
277517u32, 279438u32, 280385u32, 282800u32, 284936u32, 287386u32, 289549u32, 291468u32,
291616u32, 292347u32, 294818u32, 296845u32, 298479u32, 300332u32, 302056u32, 304092u32,
306683u32, 309264u32, 311442u32, 313475u32, 315351u32, 317388u32, 318400u32, 320649u32,
323238u32, 325163u32, 325446u32, 328042u32, 328502u32, 330497u32, 331244u32, 333823u32,
335687u32, 338233u32, 340343u32, 342385u32, 342386u32, 344272u32, 346612u32, 348696u32,
348894u32, 351481u32, 354066u32, 356068u32, 358005u32, 359951u32, 362328u32, 364901u32,
365278u32, 367157u32, 369633u32, 369796u32, 372088u32, 374685u32, 377274u32, 379741u32,
380846u32, 380847u32, 383086u32, 385288u32, 387760u32, 389457u32, 392026u32, 394623u32,
396553u32, 398840u32, 401403u32, 403888u32, 404604u32, 406640u32, 409158u32, 411090u32,
413677u32, 416264u32, 418628u32, 420837u32, 422980u32, 425068u32, 427564u32, 429475u32,
431576u32, 431594u32, 434180u32, 436519u32, 438577u32, 440694u32, 442525u32, 444301u32,
446590u32, 448674u32, 451151u32, 451557u32, 453320u32, 455376u32, 457831u32, 460301u32,
462770u32, 465173u32, 466420u32, 468365u32, 470879u32, 472404u32, 474207u32, 476506u32,
478467u32, 480836u32, 483029u32, 485107u32, 486137u32, 487932u32, 490302u32, 491727u32,
493722u32, 496294u32, 498779u32, 501249u32, 503772u32, 506050u32, 508198u32, 510733u32,
513298u32, 515883u32, 518466u32, 520802u32, 521645u32, 523529u32, 526055u32, 526270u32,
527468u32, 529944u32, 532251u32, 534737u32, 535281u32, 537865u32, 538730u32, 540832u32,
542194u32, 544626u32, 544627u32, 546901u32, 547918u32, 547955u32, 550542u32, 551724u32,
552075u32, 554356u32, 556728u32, 558704u32, 561301u32, 563746u32, 566276u32, 568472u32,
570702u32, 573254u32, 575717u32, 578039u32, 579719u32, 582120u32, 583753u32, 585758u32,
588224u32, 590710u32, 593250u32, 595745u32, 598177u32, 600720u32, 603164u32, 605707u32,
607920u32, 609802u32, 610689u32, 612439u32, 614763u32, 615210u32, 615425u32, 615470u32,
616987u32, 619540u32, 621431u32, 623855u32, 626311u32, 628140u32, 630381u32, 632460u32,
634892u32, 637420u32, 637457u32, 639523u32, 641961u32, 643392u32, 645487u32, 646804u32,
648649u32, 650490u32, 652302u32, 653552u32, 655046u32, 655058u32, 657579u32, 657580u32,
660088u32, 662531u32, 664218u32, 666791u32, 669020u32, 670699u32, 672583u32, 674683u32,
674916u32, 675649u32, 678010u32, 679302u32, 681893u32, 684390u32, 684415u32, 686844u32,
689403u32, 691949u32, 694033u32, 696379u32, 698930u32, 699608u32, 701990u32, 703022u32,
704992u32, 706930u32, 709155u32, 709251u32, 711189u32, 711211u32, 712424u32, 713796u32,
715962u32, 717246u32, 719551u32, 721477u32, 723925u32, 726084u32, 726927u32, 729509u32,
731428u32, 733882u32, 736258u32, 738219u32, 739135u32, 741290u32, 743065u32, 745231u32,
747021u32, 747640u32, 749735u32, 751425u32, 753259u32, 755850u32, 757700u32, 760176u32,
761960u32, 761961u32, 763597u32, 765316u32, 767764u32, 769560u32, 771765u32, 772259u32,
774342u32, 774734u32, 776463u32, 779038u32, 781492u32, 783707u32, 785312u32, 787254u32,
789591u32, 791634u32, 794140u32, 796539u32, 797996u32, 799677u32, 801856u32, 803960u32,
806133u32, 808488u32, 808808u32, 810672u32, 812567u32, 815007u32, 817463u32, 819960u32,
821820u32, 822281u32, 824775u32, 826318u32, 828323u32, 828366u32, 828785u32, 830683u32,
832182u32, 834112u32, 836681u32, 837630u32, 838593u32, 840665u32, 843193u32, 844475u32,
846614u32, 848834u32, 850710u32, 853106u32, 853219u32, 855202u32, 857777u32, 860334u32,
862841u32, 863710u32, 865965u32, 868496u32, 870962u32, 873520u32, 876027u32, 876917u32,
879234u32, 881486u32, 883580u32, 883703u32, 885767u32, 887951u32, 890526u32, 891934u32,
894261u32, 896830u32, 898944u32, 900327u32, 902594u32, 904303u32, 906392u32, 908945u32,
911381u32, 912260u32, 914810u32, 917278u32, 918404u32, 920275u32, 922295u32, 924503u32,
925688u32, 927709u32, 930165u32, 932663u32, 934833u32, 936639u32, 938992u32, 940602u32,
943155u32, 943735u32, 944395u32, 945451u32, 947783u32, 950326u32, 951459u32, 953336u32,
954779u32, 956293u32, 957774u32, 959442u32, 961001u32, 962312u32, 963895u32, 965113u32,
966645u32, 969154u32, 971695u32, 973689u32, 974702u32, 975357u32, 976457u32, 978117u32,
979152u32, 981538u32, 983293u32, 983856u32, 984504u32, 985829u32, 988134u32, 988151u32,
990218u32, 992701u32, 993552u32, 994512u32, 995000u32, 997273u32, 999767u32, 1000585u32,
1002677u32, 1005151u32, 1007244u32, 1009714u32, 1012285u32, 1014862u32, 1017246u32, 1019706u32,
1022293u32, 1022303u32, 1024886u32, 1025377u32,
];
pub fn get_feature_stat(name: &str) -> Option<Feature> {
match KEYS.binary_search(&name) {
Ok(idx) => {
let start = RANGES[idx];
let end = RANGES[idx + 1];
Some(Feature::new(start, end))
}
Err(_) => None,
}
}