%{
/*
 * Copyright 2016 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "hostnamelookup.h"

%}
struct hostname_strings {
  char *name;
  char *genus;
  char *species;
};
%%
01A| "Nest Thermostat", "Nest Thermostat v1"
02A| "Nest Thermostat", "Nest Thermostat v2"
09A| "Nest Thermostat", "Nest Thermostat v3"
500-cc04b40| "Select Comfort SleepIQ", "SleepIQ"
EX2700%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX2700"
EX3700%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX3700"
EX3800%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX3800"
EX3920%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX3920"
EX6100%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6100"
EX6120%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6120"
EX6150%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6150"
EX6200%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6200"
EX6920%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX6920"
EX7000%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX7000"
EX7300%1,121,249,3,6,12,15,28,33,43| "NetGEAR Wifi Range Extender", "EX7300"
GFPB100%1,3,6,12,15,28,42,66,125| "Google Fiber Phone Box", "GFPB100"
HarmonyHub%1,3,6,12,15,28,42| "Logitech Harmony Hub", "Harmony Hub"
Hopper_br%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_br0%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_ETH0%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_ETH1%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_MoCA%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
Hopper_WiFi%1,3,6,12,15,28,42| "DISH Networks Hopper", "Hopper"
HT701%1,3,6,12,15,28,43,125| "Grandstream Voice Adaptor", "HandyTone 701"
HT802%1,3,6,12,15,28,43,125| "Grandstream Voice Adaptor", "HandyTone 802"
Joey_AP%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
Joey_ETH0%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
Joey_MoCA%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
Joey_WiFi%1,3,6,12,15,28,42| "DISH Networks Joey", "Joey"
LGSmartTV%252,3,42,15,6,1,12| "LG Smart TV", "LG Smart TV"
LGwebOSTV%252,3,42,15,6,1,12| "LG Smart TV", "LG Smart TV"
MyBookLive%1,28,2,3,15,6,119,12,44,47,26,121| "WD My Book Live", "My Book Live"
NP-20| "Roku", "Netflix Player"
NP-C0| "Roku", "Roku HD 1100"
NP-D0| "Roku", "Roku HD-XR 1101"
NP-G0| "Roku", "Roku SD 1050"
NP-H0| "Roku", "Roku 1 HD 2000"
NP-J0| "Roku", "Roku 1 XD 2050"
NP-K0| "Roku", "Roku 1 XD|S 2100"
NP-N0| "Roku", "Roku 1 XD"
NP-11| "Roku", "Roku 2 HD 3000"
NP-12| "Roku", "Roku 2 XD 3050"
NP-13| "Roku", "Roku 2 XS 3100"
NP-16| "Roku", "Roku LT 2400"
NP-18| "Roku", "Roku HD 2500"
NP-19| "Roku", "Roku LT 2450"
NP-1E| "Roku", "Roku Streaming stick MHL 3400X"
NP-1G| "Roku", "Roku 3 4200X"
NP-1P| "Roku", "Roku LT 2700"
NP-1X| "Roku", "Roku 1 2710"
NP-2L| "Roku", "Roku Streaming Stick 3500"
NP-2N| "Roku TV", "Roku TV"
NP-41| "Roku", "Roku 3 4200"
NP-4A| "Roku", "Roku 2 4210X"
NP-4E| "Roku", "Roku 3 4230RW"
NP-5F| "Roku", "Roku 2 4210X"
NP-5G| "Roku", "Roku 3 4230X"
NP-5S| "Roku", "Roku Streaming Stick 3600"
NP-5Y| "Roku", "Roku 2 4210"
NP-63| "Roku", "Roku 3 4230"
NP-YW| "Roku TV", "Roku TV"
NP-YY| "Roku", "Roku 4 4400"
OBi200%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi200"
OBi202%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi202"
OBi300%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi300"
OBi302%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi302"
OBi1022%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi1022"
OBi1032%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi1032"
OBi1062%1,3,6,12,15,28,42,66| "Obihai VoIP Adaptor", "OBi1062"
Philips-hue%1,3,28,6| "Philips Hue", "Hue Home Automation Bridge"
R7000%1,3,6,12,15,28,33,44,121,249| "NetGEAR Wifi AP", "Nighthawk R7000"
R7000%1,3,6,12,15,28,33,44,121,249,212| "NetGEAR Wifi AP", "Nighthawk R7000"
R8000%1,3,6,12,15,28,33,44,121,249| "NetGEAR Wifi AP", "Nighthawk R8000"
R8000%1,3,6,12,15,28,33,44,121,249,212| "NetGEAR Wifi AP", "Nighthawk R8000"
Slingbox-350%1,3,6,12,15,28,40,41,42,119| "Slingbox", "Slingbox 350"
Slingbox350%1,3,6,12,15,28,40,41,42,119| "Slingbox", "Slingbox 350"
Slingbox-500%1,3,6,12,15,28,42| "Slingbox", "Slingbox 500"
Slingbox500%1,3,6,12,15,28,42| "Slingbox", "Slingbox 500"
Slingbox-M1%1,3,6,12,15,28,40,41,42,119| "Slingbox", "Slingbox M1"
SmartThings%1,3,6,12| "Samsung SmartThings", "SmartThings Hub"
SPA112%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA112"
SPA-112%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA112"
SPA122%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA122"
SPA232D%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA232D"
SPA504G%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA504G"
SPA525G2%1,3,6,7,12,15,28,42,43,44,66,67,125,128,150,159,160| "Cisco VoIP Adaptor", "SPA525G2"
steamlink%3,1,252,42,15,6,12| "Steam Link", "Steam Link"
TIVO-000| "TiVo", "Philips HDRx12"
TIVO-001| "DirecTV TiVo", "Philips DSR600x"
TIVO-002| "TiVo", "Philips HDRx12"
TIVO-010| "TiVo", "Sony SVR-2000"
TIVO-011| "DirecTV TiVo", "Sony SAT T-60"
TIVO-031| "DirecTV TiVo", "Hughes GXCEBOTx"
TIVO-101| "DirecTV TiVo", "Philips DSR7000x"
TIVO-110| "TiVo", "Sony SVR-3000"
TIVO-121| "DirecTV TiVo", "RCA DVR39"
TIVO-130| "AT&T TiVo", "AT&T Broadband TiVo Series 2"
TIVO-140| "TiVo", "TiVo Series 2"
TIVO-151| "DirecTV TiVo", "Hughes HDVR2"
TIVO-230| "AT&T TiVo", "AT&T Broadband TiVo Series 2"
TIVO-240| "TiVo", "TiVo Series 2"
TIVO-264| "TiVo DVD", "Toshiba SD-H400"
TIVO-275| "TiVo DVD", "Pioneer 810H/57H"
TIVO-301| "DirecTV TiVo", "Philips DSR70x"
TIVO-321| "DirecTV TiVo", "RCA DVR40/80"
TIVO-351| "DirecTV TiVo", "Hughes SD-DVRxx"
TIVO-357| "DirecTV TiVo", "Hughes HR10-250"
TIVO-381| "DirecTV TiVo", "Samsung SIR-S4xxx"
TIVO-521| "DirecTV TiVo", "DirecTV R10"
TIVO-540| "TiVo", "TiVo Series 2 NightLight"
TIVO-565| "TiVo DVD", "Toshiba RS-TX20/60"
TIVO-590| "TiVo DVD", "Humax T800/2500"
TIVO-595| "TiVo DVD", "Humax DRT400/800"
TIVO-627| "DirecTV TiVo", "DirecTV THR22"
TIVO-648| "TiVo", "TiVo Series 3"
TIVO-649| "TiVo", "TiVo Series 2 Dual Tuner"
TIVO-652| "TiVo", "TiVo Series 3 HD"
TIVO-658| "TiVo", "TiVo Series 3 HD XL"
TIVO-746| "TiVo", "TiVo Premiere Series 4"
TIVO-748| "TiVo", "TiVo Premiere XL Series 4"
TIVO-750| "TiVo", "TiVo Premiere 4 Series 4"
TIVO-758| "TiVo", "TiVo Premiere Elite Series 4"
TIVO-840| "TiVo", "TiVo Roamio Pro"
TIVO-846| "TiVo", "TiVo Roamio"
TIVO-848| "TiVo", "TiVo Roamio Plus"
TIVO-849| "TiVo", "TiVo BOLT"
TIVO-A92| "TiVo", "TiVo Mini"
TIVO-A93| "TiVo", "TiVo Mini"
TIVO-A94| "TiVo", "TiVo Stream"
VMB3010%1,3,6,12,15,28,33,44,121,249| "NetGEAR Arlo Camera", "VMB3010"
VMB4000%1,3,6,12,15,28,33,44,121,249| "NetGEAR Arlo Camera", "VMB4000"
XL824-| "Trane Thermostat", "XL824"
XL850-| "Trane Thermostat", "XL850"
%%
