149#line 150 "agent_parser.cc" 
  155      yycdebug_ (&std::cerr),
 
 
  176    : state (empty_state)
 
  179  AgentParser::by_state::by_state (
const by_state& that) 
YY_NOEXCEPT 
  190  AgentParser::by_state::move (by_state& that)
 
  196  AgentParser::by_state::by_state (state_type s) 
YY_NOEXCEPT 
  203    if (state == empty_state)
 
  209  AgentParser::stack_symbol_type::stack_symbol_type ()
 
  212  AgentParser::stack_symbol_type::stack_symbol_type (
YY_RVREF (stack_symbol_type) that)
 
  215    switch (that.kind ())
 
  217      case symbol_kind::S_value: 
 
  218      case symbol_kind::S_map_value: 
 
  219      case symbol_kind::S_socket_type_value: 
 
  220      case symbol_kind::S_auth_type_value: 
 
  221        value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
 
  224      case symbol_kind::S_BOOLEAN: 
 
  225        value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
 
  228      case symbol_kind::S_FLOAT: 
 
  229        value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
 
  232      case symbol_kind::S_INTEGER: 
 
  233        value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
 
  236      case symbol_kind::S_STRING: 
 
  237        value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
 
  246    that.state = empty_state;
 
  251    : super_type (s, 
YY_MOVE (that.location))
 
  253    switch (that.kind ())
 
  255      case symbol_kind::S_value: 
 
  256      case symbol_kind::S_map_value: 
 
  257      case symbol_kind::S_socket_type_value: 
 
  258      case symbol_kind::S_auth_type_value: 
 
  259        value.move< ElementPtr > (YY_MOVE (that.value));
 
  262      case symbol_kind::S_BOOLEAN: 
 
  263        value.move< bool > (YY_MOVE (that.value));
 
  266      case symbol_kind::S_FLOAT: 
 
  267        value.move< double > (YY_MOVE (that.value));
 
  270      case symbol_kind::S_INTEGER: 
 
  271        value.move< int64_t > (YY_MOVE (that.value));
 
  274      case symbol_kind::S_STRING: 
 
  275        value.move< std::string > (YY_MOVE (that.value));
 
  286#if YY_CPLUSPLUS < 201103L 
  287  AgentParser::stack_symbol_type&
 
  288  AgentParser::stack_symbol_type::operator= (
const stack_symbol_type& that)
 
  291    switch (that.kind ())
 
  301        value.copy< 
bool > (that.value);
 
  305        value.copy< 
double > (that.value);
 
  309        value.copy< int64_t > (that.value);
 
  313        value.copy< std::string > (that.value);
 
  320    location = that.location;
 
  324  AgentParser::stack_symbol_type&
 
  325  AgentParser::stack_symbol_type::operator= (stack_symbol_type& that)
 
  328    switch (that.kind ())
 
  338        value.move< 
bool > (that.value);
 
  342        value.move< 
double > (that.value);
 
  346        value.move< int64_t > (that.value);
 
  350        value.move< std::string > (that.value);
 
  357    location = that.location;
 
  359    that.state = empty_state;
 
  364  template <
typename Base>
 
  373  template <
typename Base>
 
  377    std::ostream& yyoutput = yyo;
 
  380      yyo << 
"empty symbol";
 
  384        yyo << (yykind < 
YYNTOKENS ? 
"token" : 
"nterm")
 
  385            << 
' ' << yysym.name () << 
" (" 
  386            << yysym.location << 
": ";
 
  390#line 124 "agent_parser.yy" 
  391                 { yyoutput << yysym.value.template as < std::string > (); }
 
  392#line 393 "agent_parser.cc" 
  396#line 124 "agent_parser.yy" 
  397                 { yyoutput << yysym.value.template as < int64_t > (); }
 
  398#line 399 "agent_parser.cc" 
  402#line 124 "agent_parser.yy" 
  403                 { yyoutput << yysym.value.template as < double > (); }
 
  404#line 405 "agent_parser.cc" 
  408#line 124 "agent_parser.yy" 
  409                 { yyoutput << yysym.value.template as < bool > (); }
 
  410#line 411 "agent_parser.cc" 
  414#line 124 "agent_parser.yy" 
  415                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  416#line 417 "agent_parser.cc" 
  420#line 124 "agent_parser.yy" 
  421                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  422#line 423 "agent_parser.cc" 
  426#line 124 "agent_parser.yy" 
  427                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  428#line 429 "agent_parser.cc" 
  432#line 124 "agent_parser.yy" 
  433                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  434#line 435 "agent_parser.cc" 
  446  AgentParser::yypush_ (
const char* m, 
YY_MOVE_REF (stack_symbol_type) sym)
 
  456#if 201103L <= YY_CPLUSPLUS 
  457    yypush_ (m, stack_symbol_type (s, std::move (sym)));
 
  459    stack_symbol_type ss (s, sym);
 
  472  AgentParser::debug_stream ()
 const 
  478  AgentParser::set_debug_stream (std::ostream& o)
 
  484  AgentParser::debug_level_type
 
  485  AgentParser::debug_level ()
 const 
  491  AgentParser::set_debug_level (debug_level_type l)
 
  497  AgentParser::state_type
 
  498  AgentParser::yy_lr_goto_state_ (state_type yystate, 
int yysym)
 
  500    int yyr = yypgoto_[yysym - 
YYNTOKENS] + yystate;
 
  501    if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
 
  502      return yytable_[yyr];
 
  508  AgentParser::yy_pact_value_is_default_ (
int yyvalue) 
YY_NOEXCEPT 
  510    return yyvalue == yypact_ninf_;
 
  514  AgentParser::yy_table_value_is_error_ (
int yyvalue) 
YY_NOEXCEPT 
  516    return yyvalue == yytable_ninf_;
 
  534    int yyerrstatus_ = 0;
 
  540    stack_symbol_type yyerror_range[3];
 
  557    yypush_ (YY_NULLPTR, 0, 
YY_MOVE (yyla));
 
  563    YYCDEBUG << 
"Entering state " << int (yystack_[0].state) << 
'\n';
 
  567    if (yystack_[0].state == yyfinal_)
 
  578    yyn = yypact_[+yystack_[0].state];
 
  579    if (yy_pact_value_is_default_ (yyn))
 
  591            yyla.
move (yylookahead);
 
  596            YYCDEBUG << 
"Caught exception: " << yyexc.what() << 
'\n';
 
  617    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.
kind ())
 
  626        if (yy_table_value_is_error_ (yyn))
 
  637    yypush_ (
"Shifting", state_type (yyn), 
YY_MOVE (yyla));
 
  645    yyn = yydefact_[+yystack_[0].state];
 
  657      stack_symbol_type yylhs;
 
  658      yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
 
  694        stack_type::slice range (yystack_, yylen);
 
  708#line 135 "agent_parser.yy" 
  709                       { ctx.ctx_ = ctx.NO_KEYWORDS; }
 
  710#line 711 "agent_parser.cc" 
  714#line 136 "agent_parser.yy" 
  715                       { ctx.ctx_ = ctx.CONFIG; }
 
  716#line 717 "agent_parser.cc" 
  720#line 137 "agent_parser.yy" 
  721                       { ctx.ctx_ = ctx.AGENT; }
 
  722#line 723 "agent_parser.cc" 
  726#line 145 "agent_parser.yy" 
  730    ctx.stack_.push_back(m);
 
  732#line 733 "agent_parser.cc" 
  736#line 149 "agent_parser.yy" 
  740#line 741 "agent_parser.cc" 
  744#line 156 "agent_parser.yy" 
  747    ctx.stack_.push_back(yystack_[0].value.as < 
ElementPtr > ());
 
  749#line 750 "agent_parser.cc" 
  753#line 162 "agent_parser.yy" 
  755#line 756 "agent_parser.cc" 
  759#line 163 "agent_parser.yy" 
  761#line 762 "agent_parser.cc" 
  765#line 164 "agent_parser.yy" 
  767#line 768 "agent_parser.cc" 
  771#line 165 "agent_parser.yy" 
  773#line 774 "agent_parser.cc" 
  777#line 166 "agent_parser.yy" 
  779#line 780 "agent_parser.cc" 
  783#line 167 "agent_parser.yy" 
  785#line 786 "agent_parser.cc" 
  789#line 168 "agent_parser.yy" 
  791#line 792 "agent_parser.cc" 
  795#line 172 "agent_parser.yy" 
  800    ctx.stack_.push_back(m);
 
  802#line 803 "agent_parser.cc" 
  806#line 177 "agent_parser.yy" 
  812#line 813 "agent_parser.cc" 
  816#line 183 "agent_parser.yy" 
  818#line 819 "agent_parser.cc" 
  822#line 197 "agent_parser.yy" 
  825                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
 
  826                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < 
ElementPtr > ());
 
  828#line 829 "agent_parser.cc" 
  832#line 202 "agent_parser.yy" 
  836                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
 
  837                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < 
ElementPtr > ());
 
  839#line 840 "agent_parser.cc" 
  843#line 208 "agent_parser.yy" 
  845                 ctx.warnAboutExtraCommas(yystack_[0].location);
 
  847#line 848 "agent_parser.cc" 
  851#line 213 "agent_parser.yy" 
  854    ctx.stack_.push_back(l);
 
  856#line 857 "agent_parser.cc" 
  860#line 216 "agent_parser.yy" 
  863#line 864 "agent_parser.cc" 
  867#line 223 "agent_parser.yy" 
  870                  ctx.stack_.back()->add(yystack_[0].value.as < 
ElementPtr > ());
 
  872#line 873 "agent_parser.cc" 
  876#line 227 "agent_parser.yy" 
  879                  ctx.stack_.back()->add(yystack_[0].value.as < 
ElementPtr > ());
 
  881#line 882 "agent_parser.cc" 
  885#line 231 "agent_parser.yy" 
  887                  ctx.warnAboutExtraCommas(yystack_[0].location);
 
  889#line 890 "agent_parser.cc" 
  893#line 243 "agent_parser.yy" 
  895    const std::string& where = ctx.contextName();
 
  896    const std::string& keyword = yystack_[1].value.as < std::string > ();
 
  897    error(yystack_[1].location,
 
  898          "got unexpected keyword \"" + keyword + 
"\" in " + where + 
" map.");
 
  900#line 901 "agent_parser.cc" 
  904#line 251 "agent_parser.yy" 
  909    ctx.stack_.push_back(m);
 
  911#line 912 "agent_parser.cc" 
  915#line 256 "agent_parser.yy" 
  921#line 922 "agent_parser.cc" 
  925#line 263 "agent_parser.yy" 
  931    ctx.unique(
"Control-agent", ctx.loc2pos(yystack_[0].location));
 
  933    ctx.stack_.back()->set(
"Control-agent", m);
 
  934    ctx.stack_.push_back(m);
 
  935    ctx.enter(ctx.AGENT);
 
  937#line 938 "agent_parser.cc" 
  941#line 273 "agent_parser.yy" 
  945    ctx.stack_.pop_back();
 
  948#line 949 "agent_parser.cc" 
  952#line 282 "agent_parser.yy" 
  954    ctx.warnAboutExtraCommas(yystack_[0].location);
 
  956#line 957 "agent_parser.cc" 
  960#line 288 "agent_parser.yy" 
  962                 ctx.warnAboutExtraCommas(yystack_[0].location);
 
  964#line 965 "agent_parser.cc" 
  968#line 311 "agent_parser.yy" 
  970    ctx.unique(
"http-host", ctx.loc2pos(yystack_[0].location));
 
  971    ctx.enter(ctx.NO_KEYWORDS);
 
  973#line 974 "agent_parser.cc" 
  977#line 314 "agent_parser.yy" 
  979    ElementPtr host(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
  980    ctx.stack_.back()->set(
"http-host", host);
 
  983#line 984 "agent_parser.cc" 
  987#line 320 "agent_parser.yy" 
  989    ctx.unique(
"http-port", ctx.loc2pos(yystack_[2].location));
 
  990    ElementPtr prf(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
  991    ctx.stack_.back()->set(
"http-port", prf);
 
  993#line 994 "agent_parser.cc" 
  997#line 326 "agent_parser.yy" 
  999    ctx.unique(
"trust-anchor", ctx.loc2pos(yystack_[0].location));
 
 1000    ctx.enter(ctx.NO_KEYWORDS);
 
 1002#line 1003 "agent_parser.cc" 
 1006#line 329 "agent_parser.yy" 
 1009    ctx.stack_.back()->set(
"trust-anchor", ca);
 
 1012#line 1013 "agent_parser.cc" 
 1016#line 335 "agent_parser.yy" 
 1018    ctx.unique(
"cert-file", ctx.loc2pos(yystack_[0].location));
 
 1019    ctx.enter(ctx.NO_KEYWORDS);
 
 1021#line 1022 "agent_parser.cc" 
 1025#line 338 "agent_parser.yy" 
 1027    ElementPtr cert(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1028    ctx.stack_.back()->set(
"cert-file", cert);
 
 1031#line 1032 "agent_parser.cc" 
 1035#line 344 "agent_parser.yy" 
 1037    ctx.unique(
"key-file", ctx.loc2pos(yystack_[0].location));
 
 1038    ctx.enter(ctx.NO_KEYWORDS);
 
 1040#line 1041 "agent_parser.cc" 
 1044#line 347 "agent_parser.yy" 
 1046    ElementPtr key(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1047    ctx.stack_.back()->set(
"key-file", key);
 
 1050#line 1051 "agent_parser.cc" 
 1054#line 353 "agent_parser.yy" 
 1056    ctx.unique(
"cert-required", ctx.loc2pos(yystack_[2].location));
 
 1057    ElementPtr req(
new BoolElement(yystack_[0].value.as < 
bool > (), ctx.loc2pos(yystack_[0].location)));
 
 1058    ctx.stack_.back()->set(
"cert-required", req);
 
 1060#line 1061 "agent_parser.cc" 
 1064#line 359 "agent_parser.yy" 
 1066    ctx.enter(ctx.NO_KEYWORDS);
 
 1068#line 1069 "agent_parser.cc" 
 1072#line 361 "agent_parser.yy" 
 1081        if ((old->size() != 1) || !old->contains(
"comment")) {
 
 1082            std::stringstream msg;
 
 1083            msg << 
"duplicate user-context entries (previous at " 
 1084                << old->getPosition().str() << 
")";
 
 1085            error(yystack_[3].location, msg.str());
 
 1088        user_context->set(
"comment", old->get(
"comment"));
 
 1092    parent->set(
"user-context", user_context);
 
 1095#line 1096 "agent_parser.cc" 
 1099#line 384 "agent_parser.yy" 
 1101    ctx.enter(ctx.NO_KEYWORDS);
 
 1103#line 1104 "agent_parser.cc" 
 1107#line 386 "agent_parser.yy" 
 1111    ElementPtr comment(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1112    user_context->set(
"comment", comment);
 
 1118        if (old->contains(
"comment")) {
 
 1119            std::stringstream msg;
 
 1120            msg << 
"duplicate user-context/comment entries (previous at " 
 1121                << old->getPosition().str() << 
")";
 
 1122            error(yystack_[3].location, msg.str());
 
 1125        merge(user_context, old);
 
 1129    parent->set(
"user-context", user_context);
 
 1132#line 1133 "agent_parser.cc" 
 1136#line 411 "agent_parser.yy" 
 1138    ctx.unique(
"http-headers", ctx.loc2pos(yystack_[0].location));
 
 1140    ctx.stack_.back()->set(
"http-headers", l);
 
 1141    ctx.stack_.push_back(l);
 
 1142    ctx.enter(ctx.HTTP_HEADERS);
 
 1144#line 1145 "agent_parser.cc" 
 1148#line 417 "agent_parser.yy" 
 1150    ctx.stack_.pop_back();
 
 1153#line 1154 "agent_parser.cc" 
 1157#line 428 "agent_parser.yy" 
 1159                              ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1161#line 1162 "agent_parser.cc" 
 1165#line 433 "agent_parser.yy" 
 1168    ctx.stack_.back()->add(m);
 
 1169    ctx.stack_.push_back(m);
 
 1171#line 1172 "agent_parser.cc" 
 1175#line 437 "agent_parser.yy" 
 1177    ctx.stack_.pop_back();
 
 1179#line 1180 "agent_parser.cc" 
 1183#line 443 "agent_parser.yy" 
 1185                      ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1187#line 1188 "agent_parser.cc" 
 1191#line 455 "agent_parser.yy" 
 1193    ctx.unique(
"name", ctx.loc2pos(yystack_[0].location));
 
 1194    ctx.enter(ctx.NO_KEYWORDS);
 
 1196#line 1197 "agent_parser.cc" 
 1200#line 458 "agent_parser.yy" 
 1202    ElementPtr name(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1203    ctx.stack_.back()->set(
"name", name);
 
 1206#line 1207 "agent_parser.cc" 
 1210#line 464 "agent_parser.yy" 
 1212    ctx.unique(
"value", ctx.loc2pos(yystack_[0].location));
 
 1213    ctx.enter(ctx.NO_KEYWORDS);
 
 1215#line 1216 "agent_parser.cc" 
 1219#line 467 "agent_parser.yy" 
 1221    ElementPtr value(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1222    ctx.stack_.back()->set(
"value", value);
 
 1225#line 1226 "agent_parser.cc" 
 1229#line 474 "agent_parser.yy" 
 1231    ctx.unique(
"hooks-libraries", ctx.loc2pos(yystack_[0].location));
 
 1233    ctx.stack_.back()->set(
"hooks-libraries", l);
 
 1234    ctx.stack_.push_back(l);
 
 1235    ctx.enter(ctx.HOOKS_LIBRARIES);
 
 1237#line 1238 "agent_parser.cc" 
 1241#line 480 "agent_parser.yy" 
 1243    ctx.stack_.pop_back();
 
 1246#line 1247 "agent_parser.cc" 
 1250#line 491 "agent_parser.yy" 
 1252        ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1254#line 1255 "agent_parser.cc" 
 1258#line 496 "agent_parser.yy" 
 1261    ctx.stack_.back()->add(m);
 
 1262    ctx.stack_.push_back(m);
 
 1264#line 1265 "agent_parser.cc" 
 1268#line 500 "agent_parser.yy" 
 1270    ctx.stack_.pop_back();
 
 1272#line 1273 "agent_parser.cc" 
 1276#line 506 "agent_parser.yy" 
 1278                ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1280#line 1281 "agent_parser.cc" 
 1284#line 516 "agent_parser.yy" 
 1286    ctx.unique(
"library", ctx.loc2pos(yystack_[0].location));
 
 1287    ctx.enter(ctx.NO_KEYWORDS);
 
 1289#line 1290 "agent_parser.cc" 
 1293#line 519 "agent_parser.yy" 
 1295    ElementPtr lib(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1296    ctx.stack_.back()->set(
"library", lib);
 
 1299#line 1300 "agent_parser.cc" 
 1303#line 525 "agent_parser.yy" 
 1305    ctx.unique(
"parameters", ctx.loc2pos(yystack_[0].location));
 
 1306    ctx.enter(ctx.NO_KEYWORDS);
 
 1308#line 1309 "agent_parser.cc" 
 1312#line 528 "agent_parser.yy" 
 1314    ctx.stack_.back()->set(
"parameters", yystack_[0].value.as < 
ElementPtr > ());
 
 1317#line 1318 "agent_parser.cc" 
 1321#line 536 "agent_parser.yy" 
 1323    ctx.unique(
"control-sockets", ctx.loc2pos(yystack_[2].location));
 
 1325    ctx.stack_.back()->set(
"control-sockets", m);
 
 1326    ctx.stack_.push_back(m);
 
 1327    ctx.enter(ctx.CONTROL_SOCKETS);
 
 1329#line 1330 "agent_parser.cc" 
 1333#line 542 "agent_parser.yy" 
 1335    ctx.stack_.pop_back();
 
 1338#line 1339 "agent_parser.cc" 
 1342#line 552 "agent_parser.yy" 
 1344                          ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1346#line 1347 "agent_parser.cc" 
 1350#line 566 "agent_parser.yy" 
 1352    ctx.unique(
"dhcp4", ctx.loc2pos(yystack_[0].location));
 
 1354    ctx.stack_.back()->set(
"dhcp4", m);
 
 1355    ctx.stack_.push_back(m);
 
 1356    ctx.enter(ctx.SERVER);
 
 1358#line 1359 "agent_parser.cc" 
 1362#line 572 "agent_parser.yy" 
 1364    ctx.stack_.pop_back();
 
 1367#line 1368 "agent_parser.cc" 
 1371#line 578 "agent_parser.yy" 
 1373    ctx.unique(
"dhcp6", ctx.loc2pos(yystack_[0].location));
 
 1375    ctx.stack_.back()->set(
"dhcp6", m);
 
 1376    ctx.stack_.push_back(m);
 
 1377    ctx.enter(ctx.SERVER);
 
 1379#line 1380 "agent_parser.cc" 
 1383#line 584 "agent_parser.yy" 
 1385    ctx.stack_.pop_back();
 
 1388#line 1389 "agent_parser.cc" 
 1392#line 590 "agent_parser.yy" 
 1394    ctx.unique(
"d2", ctx.loc2pos(yystack_[0].location));
 
 1396    ctx.stack_.back()->set(
"d2", m);
 
 1397    ctx.stack_.push_back(m);
 
 1398    ctx.enter(ctx.SERVER);
 
 1400#line 1401 "agent_parser.cc" 
 1404#line 596 "agent_parser.yy" 
 1406    ctx.stack_.pop_back();
 
 1409#line 1410 "agent_parser.cc" 
 1413#line 604 "agent_parser.yy" 
 1415                         ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1417#line 1418 "agent_parser.cc" 
 1421#line 618 "agent_parser.yy" 
 1423    ctx.unique(
"socket-name", ctx.loc2pos(yystack_[0].location));
 
 1424    ctx.enter(ctx.NO_KEYWORDS);
 
 1426#line 1427 "agent_parser.cc" 
 1430#line 621 "agent_parser.yy" 
 1432    ElementPtr name(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1433    ctx.stack_.back()->set(
"socket-name", name);
 
 1436#line 1437 "agent_parser.cc" 
 1440#line 628 "agent_parser.yy" 
 1442    ctx.unique(
"socket-type", ctx.loc2pos(yystack_[0].location));
 
 1443    ctx.enter(ctx.SOCKET_TYPE);
 
 1445#line 1446 "agent_parser.cc" 
 1449#line 631 "agent_parser.yy" 
 1451    ctx.stack_.back()->set(
"socket-type", yystack_[0].value.as < 
ElementPtr > ());
 
 1454#line 1455 "agent_parser.cc" 
 1458#line 637 "agent_parser.yy" 
 1460#line 1461 "agent_parser.cc" 
 1464#line 644 "agent_parser.yy" 
 1466    ctx.unique(
"authentication", ctx.loc2pos(yystack_[0].location));
 
 1468    ctx.stack_.back()->set(
"authentication", m);
 
 1469    ctx.stack_.push_back(m);
 
 1470    ctx.enter(ctx.AUTHENTICATION);
 
 1472#line 1473 "agent_parser.cc" 
 1476#line 650 "agent_parser.yy" 
 1479    ctx.require(
"type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
 
 1480    ctx.stack_.pop_back();
 
 1483#line 1484 "agent_parser.cc" 
 1487#line 659 "agent_parser.yy" 
 1489               ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1491#line 1492 "agent_parser.cc" 
 1495#line 673 "agent_parser.yy" 
 1497    ctx.unique(
"type", ctx.loc2pos(yystack_[0].location));
 
 1498    ctx.enter(ctx.AUTH_TYPE);
 
 1500#line 1501 "agent_parser.cc" 
 1504#line 676 "agent_parser.yy" 
 1506    ctx.stack_.back()->set(
"type", yystack_[0].value.as < 
ElementPtr > ());
 
 1509#line 1510 "agent_parser.cc" 
 1513#line 681 "agent_parser.yy" 
 1515#line 1516 "agent_parser.cc" 
 1519#line 684 "agent_parser.yy" 
 1521    ctx.unique(
"realm", ctx.loc2pos(yystack_[0].location));
 
 1522    ctx.enter(ctx.NO_KEYWORDS);
 
 1524#line 1525 "agent_parser.cc" 
 1528#line 687 "agent_parser.yy" 
 1530    ElementPtr realm(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1531    ctx.stack_.back()->set(
"realm", realm);
 
 1534#line 1535 "agent_parser.cc" 
 1538#line 693 "agent_parser.yy" 
 1540    ctx.unique(
"directory", ctx.loc2pos(yystack_[0].location));
 
 1541    ctx.enter(ctx.NO_KEYWORDS);
 
 1543#line 1544 "agent_parser.cc" 
 1547#line 696 "agent_parser.yy" 
 1549    ElementPtr directory(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1550    ctx.stack_.back()->set(
"directory", directory);
 
 1553#line 1554 "agent_parser.cc" 
 1557#line 702 "agent_parser.yy" 
 1559    ctx.unique(
"clients", ctx.loc2pos(yystack_[0].location));
 
 1561    ctx.stack_.back()->set(
"clients", l);
 
 1562    ctx.stack_.push_back(l);
 
 1563    ctx.enter(ctx.CLIENTS);
 
 1565#line 1566 "agent_parser.cc" 
 1569#line 708 "agent_parser.yy" 
 1571    ctx.stack_.pop_back();
 
 1574#line 1575 "agent_parser.cc" 
 1578#line 719 "agent_parser.yy" 
 1580                          ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1582#line 1583 "agent_parser.cc" 
 1586#line 724 "agent_parser.yy" 
 1589    ctx.stack_.back()->add(m);
 
 1590    ctx.stack_.push_back(m);
 
 1592#line 1593 "agent_parser.cc" 
 1596#line 728 "agent_parser.yy" 
 1598    ctx.stack_.pop_back();
 
 1600#line 1601 "agent_parser.cc" 
 1604#line 734 "agent_parser.yy" 
 1606                  ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1608#line 1609 "agent_parser.cc" 
 1612#line 748 "agent_parser.yy" 
 1614    ctx.unique(
"user", ctx.loc2pos(yystack_[0].location));
 
 1615    ctx.enter(ctx.NO_KEYWORDS);
 
 1617#line 1618 "agent_parser.cc" 
 1621#line 751 "agent_parser.yy" 
 1623    ElementPtr user(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1624    ctx.stack_.back()->set(
"user", user);
 
 1627#line 1628 "agent_parser.cc" 
 1631#line 757 "agent_parser.yy" 
 1633    ctx.unique(
"user-file", ctx.loc2pos(yystack_[0].location));
 
 1634    ctx.enter(ctx.NO_KEYWORDS);
 
 1636#line 1637 "agent_parser.cc" 
 1640#line 760 "agent_parser.yy" 
 1642    ElementPtr user(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1643    ctx.stack_.back()->set(
"user-file", user);
 
 1646#line 1647 "agent_parser.cc" 
 1650#line 766 "agent_parser.yy" 
 1652    ctx.unique(
"password", ctx.loc2pos(yystack_[0].location));
 
 1653    ctx.enter(ctx.NO_KEYWORDS);
 
 1655#line 1656 "agent_parser.cc" 
 1659#line 769 "agent_parser.yy" 
 1661    ElementPtr password(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1662    ctx.stack_.back()->set(
"password", password);
 
 1665#line 1666 "agent_parser.cc" 
 1669#line 775 "agent_parser.yy" 
 1671    ctx.unique(
"password-file", ctx.loc2pos(yystack_[0].location));
 
 1672    ctx.enter(ctx.NO_KEYWORDS);
 
 1674#line 1675 "agent_parser.cc" 
 1678#line 778 "agent_parser.yy" 
 1680    ElementPtr password(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1681    ctx.stack_.back()->set(
"password-file", password);
 
 1684#line 1685 "agent_parser.cc" 
 1688#line 788 "agent_parser.yy" 
 1690    ctx.unique(
"loggers", ctx.loc2pos(yystack_[0].location));
 
 1692    ctx.stack_.back()->set(
"loggers", l);
 
 1693    ctx.stack_.push_back(l);
 
 1694    ctx.enter(ctx.LOGGERS);
 
 1696#line 1697 "agent_parser.cc" 
 1700#line 794 "agent_parser.yy" 
 1702    ctx.stack_.pop_back();
 
 1705#line 1706 "agent_parser.cc" 
 1709#line 803 "agent_parser.yy" 
 1711                   ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1713#line 1714 "agent_parser.cc" 
 1717#line 809 "agent_parser.yy" 
 1720    ctx.stack_.back()->add(l);
 
 1721    ctx.stack_.push_back(l);
 
 1723#line 1724 "agent_parser.cc" 
 1727#line 813 "agent_parser.yy" 
 1729    ctx.stack_.pop_back();
 
 1731#line 1732 "agent_parser.cc" 
 1735#line 819 "agent_parser.yy" 
 1737                 ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1739#line 1740 "agent_parser.cc" 
 1743#line 833 "agent_parser.yy" 
 1745    ctx.unique(
"debuglevel", ctx.loc2pos(yystack_[2].location));
 
 1746    ElementPtr dl(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1747    ctx.stack_.back()->set(
"debuglevel", dl);
 
 1749#line 1750 "agent_parser.cc" 
 1753#line 839 "agent_parser.yy" 
 1755    ctx.unique(
"severity", ctx.loc2pos(yystack_[0].location));
 
 1756    ctx.enter(ctx.NO_KEYWORDS);
 
 1758#line 1759 "agent_parser.cc" 
 1762#line 842 "agent_parser.yy" 
 1764    ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1765    ctx.stack_.back()->set(
"severity", sev);
 
 1768#line 1769 "agent_parser.cc" 
 1772#line 848 "agent_parser.yy" 
 1774    ctx.unique(
"output-options", ctx.loc2pos(yystack_[0].location));
 
 1776    ctx.stack_.back()->set(
"output-options", l);
 
 1777    ctx.stack_.push_back(l);
 
 1778    ctx.enter(ctx.OUTPUT_OPTIONS);
 
 1780#line 1781 "agent_parser.cc" 
 1784#line 854 "agent_parser.yy" 
 1786    ctx.stack_.pop_back();
 
 1789#line 1790 "agent_parser.cc" 
 1793#line 861 "agent_parser.yy" 
 1795                               ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1797#line 1798 "agent_parser.cc" 
 1801#line 866 "agent_parser.yy" 
 1804    ctx.stack_.back()->add(m);
 
 1805    ctx.stack_.push_back(m);
 
 1807#line 1808 "agent_parser.cc" 
 1811#line 870 "agent_parser.yy" 
 1813    ctx.stack_.pop_back();
 
 1815#line 1816 "agent_parser.cc" 
 1819#line 876 "agent_parser.yy" 
 1821                 ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1823#line 1824 "agent_parser.cc" 
 1827#line 888 "agent_parser.yy" 
 1829    ctx.unique(
"output", ctx.loc2pos(yystack_[0].location));
 
 1830    ctx.enter(ctx.NO_KEYWORDS);
 
 1832#line 1833 "agent_parser.cc" 
 1836#line 891 "agent_parser.yy" 
 1838    ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1839    ctx.stack_.back()->set(
"output", sev);
 
 1842#line 1843 "agent_parser.cc" 
 1846#line 897 "agent_parser.yy" 
 1848    ctx.unique(
"flush", ctx.loc2pos(yystack_[2].location));
 
 1849    ElementPtr flush(
new BoolElement(yystack_[0].value.as < 
bool > (), ctx.loc2pos(yystack_[0].location)));
 
 1850    ctx.stack_.back()->set(
"flush", flush);
 
 1852#line 1853 "agent_parser.cc" 
 1856#line 903 "agent_parser.yy" 
 1858    ctx.unique(
"maxsize", ctx.loc2pos(yystack_[2].location));
 
 1859    ElementPtr maxsize(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1860    ctx.stack_.back()->set(
"maxsize", maxsize);
 
 1862#line 1863 "agent_parser.cc" 
 1866#line 909 "agent_parser.yy" 
 1868    ctx.unique(
"maxver", ctx.loc2pos(yystack_[2].location));
 
 1869    ElementPtr maxver(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1870    ctx.stack_.back()->set(
"maxver", maxver);
 
 1872#line 1873 "agent_parser.cc" 
 1876#line 915 "agent_parser.yy" 
 1878    ctx.unique(
"pattern", ctx.loc2pos(yystack_[0].location));
 
 1879    ctx.enter(ctx.NO_KEYWORDS);
 
 1881#line 1882 "agent_parser.cc" 
 1885#line 918 "agent_parser.yy" 
 1887    ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1888    ctx.stack_.back()->set(
"pattern", sev);
 
 1891#line 1892 "agent_parser.cc" 
 1895#line 1896 "agent_parser.cc" 
 1904          YYCDEBUG << 
"Caught exception: " << yyexc.what() << 
'\n';
 
 1914      yypush_ (YY_NULLPTR, 
YY_MOVE (yylhs));
 
 1928        std::string msg = yysyntax_error_ (yyctx);
 
 1934    if (yyerrstatus_ == 3)
 
 1942        else if (!yyla.
empty ())
 
 1944            yy_destroy_ (
"Error: discarding", yyla);
 
 1978        yyn = yypact_[+yystack_[0].state];
 
 1979        if (!yy_pact_value_is_default_ (yyn))
 
 1982            if (0 <= yyn && yyn <= yylast_
 
 1985                yyn = yytable_[yyn];
 
 1992        if (yystack_.size () == 1)
 
 1995        yyerror_range[1].
location = yystack_[0].location;
 
 1996        yy_destroy_ (
"Error: popping", yystack_[0]);
 
 2001      stack_symbol_type error_token;
 
 2007      error_token.state = state_type (yyn);
 
 2008      yypush_ (
"Shifting", 
YY_MOVE (error_token));
 
 2034      yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
 
 2040    while (1 < yystack_.size ())
 
 2042        yy_destroy_ (
"Cleanup: popping", yystack_[0]);
 
 2051        YYCDEBUG << 
"Exception caught: cleaning lookahead and stack\n";
 
 2055          yy_destroy_ (YY_NULLPTR, yyla);
 
 2057        while (1 < yystack_.size ())
 
 2059            yy_destroy_ (YY_NULLPTR, yystack_[0]);
 
 
 2079  AgentParser::yytnamerr_ (
const char *yystr)
 
 2084        char const *yyp = yystr;
 
 2091              goto do_not_strip_quotes;
 
 2095                goto do_not_strip_quotes;
 
 2107      do_not_strip_quotes: ;
 
 2116    return yytnamerr_ (yytname_[yysymbol]);
 
 
 2123    : yyparser_ (yyparser)
 
 
 2133    const int yyn = yypact_[+yyparser_.yystack_[0].state];
 
 2134    if (!yy_pact_value_is_default_ (yyn))
 
 2139        const int yyxbegin = yyn < 0 ? -yyn : 0;
 
 2141        const int yychecklim = yylast_ - yyn + 1;
 
 2143        for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
 
 2145              && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
 
 2149              else if (yycount == yyargn)
 
 2156    if (yyarg && yycount == 0 && 0 < yyargn)
 
 
 2167  AgentParser::yy_syntax_error_arguments_ (
const context& yyctx,
 
 2198          yyarg[0] = yyctx.
token ();
 
 2199        int yyn = yyctx.
expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
 
 2207  AgentParser::yysyntax_error_ (
const context& yyctx)
 const 
 2210    enum { YYARGS_MAX = 5 };
 
 2213    int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
 
 2215    char const* yyformat = YY_NULLPTR;
 
 2218#define YYCASE_(N, S)                         \ 
 2224        YYCASE_ (1, 
YY_(
"syntax error, unexpected %s"));
 
 2225        YYCASE_ (2, 
YY_(
"syntax error, unexpected %s, expecting %s"));
 
 2226        YYCASE_ (3, 
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
 
 2227        YYCASE_ (4, 
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
 
 2228        YYCASE_ (5, 
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
 
 2234    std::ptrdiff_t yyi = 0;
 
 2235    for (
char const* yyp = yyformat; *yyp; ++yyp)
 
 2236      if (yyp[0] == 
'%' && yyp[1] == 
's' && yyi < yycount)
 
 2247  const short AgentParser::yypact_ninf_ = -205;
 
 2249  const signed char AgentParser::yytable_ninf_ = -1;
 
 2252  AgentParser::yypact_[] =
 
 2254      76,  -205,  -205,  -205,     5,     1,     2,    20,  -205,  -205,
 
 2255    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
 
 2256    -205,  -205,  -205,  -205,     1,   -20,    25,     0,  -205,    34,
 
 2257      35,    63,    41,    85,  -205,    79,  -205,  -205,    90,  -205,
 
 2258    -205,  -205,  -205,  -205,  -205,  -205,    93,   131,  -205,  -205,
 
 2259     132,  -205,   102,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
 
 2260    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,     1,     1,
 
 2261    -205,    84,   139,  -205,  -205,   141,    53,   143,   144,   148,
 
 2262     149,   150,   151,   152,   100,   153,   154,   155,  -205,     0,
 
 2263    -205,  -205,  -205,   157,   156,   108,  -205,   160,   159,   117,
 
 2264     161,   118,   119,   120,  -205,  -205,   162,   164,  -205,     1,
 
 2265       0,  -205,   163,  -205,  -205,  -205,    22,  -205,  -205,  -205,
 
 2266      46,   168,   169,  -205,   103,  -205,   171,   175,  -205,  -205,
 
 2267    -205,  -205,  -205,  -205,  -205,  -205,   104,  -205,  -205,  -205,
 
 2268    -205,  -205,  -205,  -205,  -205,  -205,   106,  -205,  -205,  -205,
 
 2269    -205,  -205,   173,   177,  -205,  -205,    47,  -205,  -205,     7,
 
 2270    -205,   163,   178,   179,   180,   181,    22,  -205,   182,   183,
 
 2271     184,    46,  -205,   -21,  -205,   168,    32,   169,  -205,  -205,
 
 2272    -205,  -205,  -205,  -205,   112,  -205,  -205,  -205,  -205,   170,
 
 2273     127,   135,   186,  -205,   185,   190,   191,  -205,  -205,  -205,
 
 2274    -205,   113,  -205,  -205,  -205,  -205,  -205,   189,  -205,  -205,
 
 2275    -205,  -205,  -205,   114,  -205,  -205,  -205,  -205,  -205,   195,
 
 2276     196,     7,  -205,  -205,  -205,  -205,  -205,   194,    59,    59,
 
 2277      59,   198,   199,   -24,  -205,   200,   165,   201,    32,  -205,
 
 2278     167,   172,  -205,  -205,   202,   203,  -205,  -205,  -205,  -205,
 
 2279    -205,  -205,   115,  -205,  -205,  -205,   116,   122,   174,   159,
 
 2280    -205,   204,  -205,   176,  -205,  -205,  -205,    45,  -205,   194,
 
 2281     206,   210,    59,  -205,  -205,  -205,  -205,  -205,   208,  -205,
 
 2282    -205,  -205,  -205,  -205,  -205,  -205,  -205,   123,  -205,  -205,
 
 2283    -205,  -205,  -205,  -205,   192,   187,  -205,  -205,    62,  -205,
 
 2284     212,   213,   214,   215,    45,  -205,  -205,  -205,  -205,    54,
 
 2285     208,  -205,   193,   197,   205,   207,  -205,  -205,   218,   219,
 
 2286     220,  -205,   134,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
 
 2287    -205,  -205,  -205,  -205,   223,   188,   209,   211,   225,    54,
 
 2288    -205,   216,  -205,  -205,  -205,   217,  -205,  -205,  -205
 
 2292  AgentParser::yydefact_[] =
 
 2294       0,     2,     4,     6,     0,     0,     0,     0,     1,    26,
 
 2295      18,    15,    14,    11,    12,    13,     3,    10,    16,    17,
 
 2296      34,     5,     8,     7,    28,    21,     0,     0,    30,     0,
 
 2297      29,     0,     0,    22,    36,     0,    38,    57,     0,    71,
 
 2298      67,    69,   139,    60,    62,    64,     0,     0,    92,   185,
 
 2299       0,    56,     0,    40,    43,    44,    46,    47,    48,    49,
 
 2300      54,    55,    45,    52,    51,    50,    53,    27,    32,     0,
 
 2301      19,    25,     0,    39,    35,     0,     0,     0,     0,     0,
 
 2302       0,     0,     0,     0,     0,     0,     0,     0,    33,    42,
 
 2303       9,    31,    23,     0,     0,     0,    59,     0,     0,     0,
 
 2304       0,     0,     0,     0,    66,   111,     0,     0,    41,     0,
 
 2305       0,    58,    73,    20,    68,    70,     0,    61,    63,    65,
 
 2306       0,    94,     0,    24,     0,    78,     0,    74,    75,   151,
 
 2307     154,   156,   158,   150,   149,   148,     0,   141,   144,   145,
 
 2308     146,   147,   120,   122,   124,   119,     0,   113,   116,   117,
 
 2309     118,    99,     0,    95,    96,   190,     0,   187,    37,     0,
 
 2310      72,    77,     0,     0,     0,     0,   143,   140,     0,     0,
 
 2311       0,   115,   112,     0,    93,    98,     0,   189,   186,    88,
 
 2312      90,    87,    85,    86,     0,    80,    83,    84,    76,     0,
 
 2313       0,     0,     0,   142,     0,     0,     0,   114,   107,   109,
 
 2314     104,     0,   101,   105,   106,    97,   205,     0,   203,   201,
 
 2315     199,   200,   195,     0,   192,   197,   198,   196,   188,     0,
 
 2316       0,    82,    79,   153,   152,   155,   157,   160,     0,     0,
 
 2317       0,     0,     0,   103,   100,     0,     0,     0,   194,   191,
 
 2318       0,     0,    81,   165,     0,   161,   162,   134,   136,   133,
 
 2319     131,   132,     0,   126,   129,   130,     0,     0,     0,     0,
 
 2320     102,     0,   202,     0,   193,    89,    91,     0,   159,   164,
 
 2321       0,     0,   128,   121,   123,   125,   108,   110,     0,   204,
 
 2322     177,   179,   181,   183,   176,   174,   175,     0,   167,   170,
 
 2323     171,   172,   173,   163,     0,     0,   127,   210,     0,   207,
 
 2324       0,     0,     0,     0,   169,   166,   135,   138,   137,     0,
 
 2325     209,   206,     0,     0,     0,     0,   168,   220,     0,     0,
 
 2326       0,   225,     0,   212,   215,   216,   217,   218,   219,   208,
 
 2327     178,   180,   182,   184,     0,     0,     0,     0,     0,   214,
 
 2328     211,     0,   222,   223,   224,     0,   213,   221,   226
 
 2332  AgentParser::yypgoto_[] =
 
 2334    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,   -17,   -95,
 
 2335    -205,   -52,  -205,  -205,  -205,  -205,  -205,  -205,   -27,  -205,
 
 2336    -205,  -205,  -205,  -205,   121,   145,  -205,  -205,  -205,  -205,
 
 2337    -205,  -205,  -205,  -205,  -205,  -205,   -26,  -205,   -25,  -205,
 
 2338    -205,  -205,  -205,  -205,    71,  -205,  -205,    12,  -172,  -205,
 
 2339    -205,  -205,  -205,  -205,  -205,  -205,    60,  -205,  -205,     3,
 
 2340    -205,  -205,  -205,  -205,  -205,  -205,  -205,    66,  -205,  -205,
 
 2341    -205,  -205,  -205,  -205,  -204,   -34,  -205,  -205,  -205,  -205,
 
 2342    -205,  -205,  -205,  -205,    73,  -205,  -205,  -205,  -205,  -205,
 
 2343    -205,  -205,  -205,  -205,  -205,  -205,   -19,  -205,  -205,   -61,
 
 2344    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
 
 2345    -205,    67,  -205,  -205,    10,  -205,  -205,  -205,  -205,  -205,
 
 2346    -205,   -58,  -205,  -205,   -90,  -205,  -205,  -205,  -205,  -205,
 
 2351  AgentParser::yydefgoto_[] =
 
 2353       0,     4,     5,     6,     7,    23,    27,    16,    17,    18,
 
 2354      25,   114,    32,    33,    19,    24,    29,    30,   249,    21,
 
 2355      26,    35,    72,    36,    52,    53,    54,    75,    55,    56,
 
 2356      81,    57,    82,    58,    83,    59,   250,    78,   251,    79,
 
 2357      62,    77,   126,   127,   128,   159,   184,   185,   186,   219,
 
 2358     187,   220,    63,    86,   152,   153,   154,   173,   201,   202,
 
 2359     203,   231,   204,   232,    64,   120,   146,   147,   148,   168,
 
 2360     149,   169,   150,   170,   252,   253,   254,   270,   255,   271,
 
 2361     308,    65,    80,   136,   137,   138,   162,   224,   139,   163,
 
 2362     140,   164,   141,   165,   244,   245,   246,   267,   287,   288,
 
 2363     289,   300,   290,   301,   291,   302,   292,   303,    66,    87,
 
 2364     156,   157,   176,   213,   214,   215,   216,   237,   217,   235,
 
 2365     298,   299,   309,   322,   323,   324,   334,   325,   326,   327,
 
 2370  AgentParser::yytable_[] =
 
 2372      51,    60,    61,   113,   212,     8,     9,    28,    10,    20,
 
 2373      11,    37,    38,    39,    40,    41,   198,   199,    42,   198,
 
 2374     199,    40,    41,   179,   180,   256,   257,    22,    43,    44,
 
 2375      45,    46,    47,    50,    31,    34,    40,    41,    68,    48,
 
 2376      67,   129,    49,   130,   131,   132,    40,    41,   179,    70,
 
 2377     177,    91,    92,   178,    50,    12,    13,    14,    15,    40,
 
 2378      41,    50,    51,    60,    61,   310,   212,    69,   311,   280,
 
 2379     281,   282,   283,    40,    41,   206,    50,   207,   208,   142,
 
 2380     143,   144,    73,    51,    60,    61,    50,    74,    71,   133,
 
 2381     134,   135,   123,   145,    76,   247,   248,    84,   317,    50,
 
 2382      50,   318,   319,   320,   321,    89,    89,   166,    96,   171,
 
 2383      90,   158,   167,    50,   172,   221,   233,   238,   272,   272,
 
 2384     222,   234,   239,   273,   274,   272,   304,     1,     2,     3,
 
 2385     275,   305,   181,   182,   183,    85,    88,   339,    93,   133,
 
 2386     134,   135,   340,    94,   145,    95,   200,    97,    98,   209,
 
 2387     210,   211,    99,   100,   101,   102,   103,   104,   106,   107,
 
 2388     105,   109,   111,   110,   113,   112,    10,   121,   116,   122,
 
 2389     125,   115,   117,   118,   119,   151,   155,   160,   161,   174,
 
 2390     175,   225,   189,   190,   191,   192,   194,   195,   196,   226,
 
 2391     223,   227,   228,   236,   181,   182,   183,   229,   230,   240,
 
 2392     241,   243,   258,   259,   261,   263,   269,   277,   268,   278,
 
 2393     294,   209,   210,   211,   295,   297,   312,   313,   314,   315,
 
 2394     262,   265,   335,   336,   337,   307,   266,   341,   276,   345,
 
 2395     279,   124,   188,   242,   108,   205,   260,   197,   296,   193,
 
 2396     284,   285,   286,   316,   218,   342,   306,   330,   264,   346,
 
 2397     293,   331,   329,     0,     0,     0,     0,     0,     0,   332,
 
 2398       0,   333,     0,     0,   343,     0,   344,     0,     0,     0,
 
 2399     347,   348,     0,     0,     0,     0,     0,   284,   285,   286
 
 2403  AgentParser::yycheck_[] =
 
 2405      27,    27,    27,    98,   176,     0,     5,    24,     7,     7,
 
 2406       9,    11,    12,    13,    14,    15,    40,    41,    18,    40,
 
 2407      41,    14,    15,    16,    17,   229,   230,     7,    28,    29,
 
 2408      30,    31,    32,    54,    54,    10,    14,    15,     3,    39,
 
 2409       6,    19,    42,    21,    22,    23,    14,    15,    16,     8,
 
 2410       3,    68,    69,     6,    54,    54,    55,    56,    57,    14,
 
 2411      15,    54,    89,    89,    89,     3,   238,     4,     6,    24,
 
 2412      25,    26,    27,    14,    15,    43,    54,    45,    46,    33,
 
 2413      34,    35,     3,   110,   110,   110,    54,     8,     3,   116,
 
 2414     116,   116,   109,   120,     4,    36,    37,     4,    44,    54,
 
 2415      54,    47,    48,    49,    50,     3,     3,     3,    55,     3,
 
 2416       8,     8,     8,    54,     8,     3,     3,     3,     3,     3,
 
 2417       8,     8,     8,     8,     8,     3,     3,    51,    52,    53,
 
 2418       8,     8,   159,   159,   159,     4,     4,     3,    54,   166,
 
 2419     166,   166,     8,     4,   171,     4,   173,     4,     4,   176,
 
 2420     176,   176,     4,     4,     4,     4,     4,    57,     4,     4,
 
 2421       7,     4,    54,     7,   259,     5,     7,     5,     7,     5,
 
 2422       7,    54,    54,    54,    54,     7,     7,     6,     3,     6,
 
 2423       3,    54,     4,     4,     4,     4,     4,     4,     4,    54,
 
 2424      20,     5,     7,     4,   221,   221,   221,     7,     7,     4,
 
 2425       4,     7,     4,     4,     4,     4,     3,   259,     6,     5,
 
 2426       4,   238,   238,   238,     4,     7,     4,     4,     4,     4,
 
 2427      55,    54,     4,     4,     4,    38,    54,     4,    54,     4,
 
 2428      54,   110,   161,   221,    89,   175,   233,   171,   272,   166,
 
 2429     267,   267,   267,   304,   177,    57,    54,    54,   238,   339,
 
 2430     269,    54,   310,    -1,    -1,    -1,    -1,    -1,    -1,    54,
 
 2431      -1,    54,    -1,    -1,    55,    -1,    55,    -1,    -1,    -1,
 
 2432      54,    54,    -1,    -1,    -1,    -1,    -1,   304,   304,   304
 
 2436  AgentParser::yystos_[] =
 
 2438       0,    51,    52,    53,    59,    60,    61,    62,     0,     5,
 
 2439       7,     9,    54,    55,    56,    57,    65,    66,    67,    72,
 
 2440       7,    77,     7,    63,    73,    68,    78,    64,    66,    74,
 
 2441      75,    54,    70,    71,    10,    79,    81,    11,    12,    13,
 
 2442      14,    15,    18,    28,    29,    30,    31,    32,    39,    42,
 
 2443      54,    76,    82,    83,    84,    86,    87,    89,    91,    93,
 
 2444      94,    96,    98,   110,   122,   139,   166,     6,     3,     4,
 
 2445       8,     3,    80,     3,     8,    85,     4,    99,    95,    97,
 
 2446     140,    88,    90,    92,     4,     4,   111,   167,     4,     3,
 
 2447       8,    66,    66,    54,     4,     4,    55,     4,     4,     4,
 
 2448       4,     4,     4,     4,    57,     7,     4,     4,    83,     4,
 
 2449       7,    54,     5,    67,    69,    54,     7,    54,    54,    54,
 
 2450     123,     5,     5,    66,    82,     7,   100,   101,   102,    19,
 
 2451      21,    22,    23,    76,    94,    96,   141,   142,   143,   146,
 
 2452     148,   150,    33,    34,    35,    76,   124,   125,   126,   128,
 
 2453     130,     7,   112,   113,   114,     7,   168,   169,     8,   103,
 
 2454       6,     3,   144,   147,   149,   151,     3,     8,   127,   129,
 
 2455     131,     3,     8,   115,     6,     3,   170,     3,     6,    16,
 
 2456      17,    76,    94,    96,   104,   105,   106,   108,   102,     4,
 
 2457       4,     4,     4,   142,     4,     4,     4,   125,    40,    41,
 
 2458      76,   116,   117,   118,   120,   114,    43,    45,    46,    76,
 
 2459      94,    96,   106,   171,   172,   173,   174,   176,   169,   107,
 
 2460     109,     3,     8,    20,   145,    54,    54,     5,     7,     7,
 
 2461       7,   119,   121,     3,     8,   177,     4,   175,     3,     8,
 
 2462       4,     4,   105,     7,   152,   153,   154,    36,    37,    76,
 
 2463      94,    96,   132,   133,   134,   136,   132,   132,     4,     4,
 
 2464     117,     4,    55,     4,   172,    54,    54,   155,     6,     3,
 
 2465     135,   137,     3,     8,     8,     8,    54,    69,     5,    54,
 
 2466      24,    25,    26,    27,    76,    94,    96,   156,   157,   158,
 
 2467     160,   162,   164,   154,     4,     4,   133,     7,   178,   179,
 
 2468     159,   161,   163,   165,     3,     8,    54,    38,   138,   180,
 
 2469       3,     6,     4,     4,     4,     4,   157,    44,    47,    48,
 
 2470      49,    50,   181,   182,   183,   185,   186,   187,   188,   179,
 
 2471      54,    54,    54,    54,   184,     4,     4,     4,   189,     3,
 
 2472       8,     4,    57,    55,    55,     4,   182,    54,    54
 
 2476  AgentParser::yyr1_[] =
 
 2478       0,    58,    60,    59,    61,    59,    62,    59,    64,    63,
 
 2479      65,    66,    66,    66,    66,    66,    66,    66,    68,    67,
 
 2480      69,    70,    70,    71,    71,    71,    73,    72,    74,    74,
 
 2481      75,    75,    75,    76,    78,    77,    80,    79,    79,    81,
 
 2482      82,    82,    82,    83,    83,    83,    83,    83,    83,    83,
 
 2483      83,    83,    83,    83,    83,    83,    83,    85,    84,    86,
 
 2484      88,    87,    90,    89,    92,    91,    93,    95,    94,    97,
 
 2485      96,    99,    98,   100,   100,   101,   101,   101,   103,   102,
 
 2486     104,   104,   104,   105,   105,   105,   105,   105,   107,   106,
 
 2487     109,   108,   111,   110,   112,   112,   113,   113,   113,   115,
 
 2488     114,   116,   116,   116,   116,   117,   117,   119,   118,   121,
 
 2489     120,   123,   122,   124,   124,   124,   125,   125,   125,   125,
 
 2490     127,   126,   129,   128,   131,   130,   132,   132,   132,   133,
 
 2491     133,   133,   133,   133,   135,   134,   137,   136,   138,   140,
 
 2492     139,   141,   141,   141,   142,   142,   142,   142,   142,   142,
 
 2493     142,   144,   143,   145,   147,   146,   149,   148,   151,   150,
 
 2494     152,   152,   153,   153,   153,   155,   154,   156,   156,   156,
 
 2495     157,   157,   157,   157,   157,   157,   157,   159,   158,   161,
 
 2496     160,   163,   162,   165,   164,   167,   166,   168,   168,   168,
 
 2497     170,   169,   171,   171,   171,   172,   172,   172,   172,   172,
 
 2498     172,   172,   173,   175,   174,   177,   176,   178,   178,   178,
 
 2499     180,   179,   181,   181,   181,   182,   182,   182,   182,   182,
 
 2500     184,   183,   185,   186,   187,   189,   188
 
 2504  AgentParser::yyr2_[] =
 
 2506       0,     2,     0,     3,     0,     3,     0,     3,     0,     4,
 
 2507       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
 
 2508       1,     0,     1,     3,     5,     2,     0,     4,     0,     1,
 
 2509       1,     3,     2,     2,     0,     4,     0,     6,     1,     2,
 
 2510       1,     3,     2,     1,     1,     1,     1,     1,     1,     1,
 
 2511       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
 
 2512       0,     4,     0,     4,     0,     4,     3,     0,     4,     0,
 
 2513       4,     0,     6,     0,     1,     1,     3,     2,     0,     4,
 
 2514       1,     3,     2,     1,     1,     1,     1,     1,     0,     4,
 
 2515       0,     4,     0,     6,     0,     1,     1,     3,     2,     0,
 
 2516       4,     1,     3,     2,     1,     1,     1,     0,     4,     0,
 
 2517       4,     0,     6,     1,     3,     2,     1,     1,     1,     1,
 
 2518       0,     6,     0,     6,     0,     6,     1,     3,     2,     1,
 
 2519       1,     1,     1,     1,     0,     4,     0,     4,     1,     0,
 
 2520       6,     1,     3,     2,     1,     1,     1,     1,     1,     1,
 
 2521       1,     0,     4,     1,     0,     4,     0,     4,     0,     6,
 
 2522       0,     1,     1,     3,     2,     0,     4,     1,     3,     2,
 
 2523       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
 
 2524       4,     0,     4,     0,     4,     0,     6,     1,     3,     2,
 
 2525       0,     4,     1,     3,     2,     1,     1,     1,     1,     1,
 
 2526       1,     1,     3,     0,     4,     0,     6,     1,     3,     2,
 
 2527       0,     4,     1,     3,     2,     1,     1,     1,     1,     1,
 
 2536  const AgentParser::yytname_[] =
 
 2538  "\"end of file\"", 
"error", 
"\"invalid token\"", 
"\",\"", 
"\":\"",
 
 2539  "\"[\"", 
"\"]\"", 
"\"{\"", 
"\"}\"", 
"\"null\"", 
"\"Control-agent\"",
 
 2540  "\"http-host\"", 
"\"http-port\"", 
"\"http-headers\"", 
"\"user-context\"",
 
 2541  "\"comment\"", 
"\"name\"", 
"\"value\"", 
"\"authentication\"", 
"\"type\"",
 
 2542  "\"basic\"", 
"\"realm\"", 
"\"directory\"", 
"\"clients\"", 
"\"user\"",
 
 2543  "\"user-file\"", 
"\"password\"", 
"\"password-file\"", 
"\"trust-anchor\"",
 
 2544  "\"cert-file\"", 
"\"key-file\"", 
"\"cert-required\"",
 
 2545  "\"control-sockets\"", 
"\"dhcp4\"", 
"\"dhcp6\"", 
"\"d2\"",
 
 2546  "\"socket-name\"", 
"\"socket-type\"", 
"\"unix\"", 
"\"hooks-libraries\"",
 
 2547  "\"library\"", 
"\"parameters\"", 
"\"loggers\"", 
"\"output-options\"",
 
 2548  "\"output\"", 
"\"debuglevel\"", 
"\"severity\"", 
"\"flush\"",
 
 2549  "\"maxsize\"", 
"\"maxver\"", 
"\"pattern\"", 
"START_JSON", 
"START_AGENT",
 
 2550  "START_SUB_AGENT", 
"\"constant string\"", 
"\"integer\"",
 
 2551  "\"floating point\"", 
"\"boolean\"", 
"$accept", 
"start", 
"$@1", 
"$@2",
 
 2552  "$@3", 
"sub_agent", 
"$@4", 
"json", 
"value", 
"map", 
"$@5", 
"map_value",
 
 2553  "map_content", 
"not_empty_map", 
"list_generic", 
"$@6", 
"list_content",
 
 2554  "not_empty_list", 
"unknown_map_entry", 
"agent_syntax_map", 
"$@7",
 
 2555  "global_object", 
"$@8", 
"global_object_comma", 
"global_params",
 
 2556  "global_param", 
"http_host", 
"$@9", 
"http_port", 
"trust_anchor", 
"$@10",
 
 2557  "cert_file", 
"$@11", 
"key_file", 
"$@12", 
"cert_required", 
"user_context",
 
 2558  "$@13", 
"comment", 
"$@14", 
"http_headers", 
"$@15", 
"http_header_list",
 
 2559  "not_empty_http_header_list", 
"http_header", 
"$@16",
 
 2560  "http_header_params", 
"http_header_param", 
"name", 
"$@17",
 
 2561  "header_value", 
"$@18", 
"hooks_libraries", 
"$@19",
 
 2562  "hooks_libraries_list", 
"not_empty_hooks_libraries_list",
 
 2563  "hooks_library", 
"$@20", 
"hooks_params", 
"hooks_param", 
"library",
 
 2564  "$@21", 
"parameters", 
"$@22", 
"control_sockets", 
"$@23",
 
 2565  "control_sockets_params", 
"control_socket", 
"dhcp4_server_socket",
 
 2566  "$@24", 
"dhcp6_server_socket", 
"$@25", 
"d2_server_socket", 
"$@26",
 
 2567  "control_socket_params", 
"control_socket_param", 
"socket_name", 
"$@27",
 
 2568  "socket_type", 
"$@28", 
"socket_type_value", 
"authentication", 
"$@29",
 
 2569  "auth_params", 
"auth_param", 
"auth_type", 
"$@30", 
"auth_type_value",
 
 2570  "realm", 
"$@31", 
"directory", 
"$@32", 
"clients", 
"$@33", 
"clients_list",
 
 2571  "not_empty_clients_list", 
"basic_auth", 
"$@34", 
"clients_params",
 
 2572  "clients_param", 
"user", 
"$@35", 
"user_file", 
"$@36", 
"password", 
"$@37",
 
 2573  "password_file", 
"$@38", 
"loggers", 
"$@39", 
"loggers_entries",
 
 2574  "logger_entry", 
"$@40", 
"logger_params", 
"logger_param", 
"debuglevel",
 
 2575  "severity", 
"$@41", 
"output_options_list", 
"$@42",
 
 2576  "output_options_list_content", 
"output_entry", 
"$@43",
 
 2577  "output_params_list", 
"output_params", 
"output", 
"$@44", 
"flush",
 
 2578  "maxsize", 
"maxver", 
"pattern", 
"$@45", YY_NULLPTR
 
 2585  AgentParser::yyrline_[] =
 
 2587       0,   135,   135,   135,   136,   136,   137,   137,   145,   145,
 
 2588     156,   162,   163,   164,   165,   166,   167,   168,   172,   172,
 
 2589     183,   188,   189,   197,   202,   208,   213,   213,   219,   220,
 
 2590     223,   227,   231,   243,   251,   251,   263,   263,   279,   282,
 
 2591     286,   287,   288,   295,   296,   297,   298,   299,   300,   301,
 
 2592     302,   303,   304,   305,   306,   307,   308,   311,   311,   320,
 
 2593     326,   326,   335,   335,   344,   344,   353,   359,   359,   384,
 
 2594     384,   411,   411,   422,   423,   426,   427,   428,   433,   433,
 
 2595     441,   442,   443,   448,   449,   450,   451,   452,   455,   455,
 
 2596     464,   464,   474,   474,   485,   486,   489,   490,   491,   496,
 
 2597     496,   504,   505,   506,   509,   512,   513,   516,   516,   525,
 
 2598     525,   536,   536,   550,   551,   552,   559,   560,   561,   562,
 
 2599     566,   566,   578,   578,   590,   590,   602,   603,   604,   610,
 
 2600     611,   612,   613,   614,   618,   618,   628,   628,   637,   644,
 
 2601     644,   657,   658,   659,   664,   665,   666,   667,   668,   669,
 
 2602     670,   673,   673,   681,   684,   684,   693,   693,   702,   702,
 
 2603     713,   714,   717,   718,   719,   724,   724,   732,   733,   734,
 
 2604     739,   740,   741,   742,   743,   744,   745,   748,   748,   757,
 
 2605     757,   766,   766,   775,   775,   788,   788,   801,   802,   803,
 
 2606     809,   809,   817,   818,   819,   824,   825,   826,   827,   828,
 
 2607     829,   830,   833,   839,   839,   848,   848,   859,   860,   861,
 
 2608     866,   866,   874,   875,   876,   881,   882,   883,   884,   885,
 
 2609     888,   888,   897,   903,   909,   915,   915
 
 2613  AgentParser::yy_stack_print_ ()
 const 
 2615    *yycdebug_ << 
"Stack now";
 
 2616    for (stack_type::const_iterator
 
 2617           i = yystack_.begin (),
 
 2618           i_end = yystack_.end ();
 
 2620      *yycdebug_ << 
' ' << int (i->state);
 
 2625  AgentParser::yy_reduce_print_ (
int yyrule)
 const 
 2627    int yylno = yyrline_[yyrule];
 
 2628    int yynrhs = yyr2_[yyrule];
 
 2630    *yycdebug_ << 
"Reducing stack by rule " << yyrule - 1
 
 2631               << 
" (line " << yylno << 
"):\n";
 
 2633    for (
int yyi = 0; yyi < yynrhs; yyi++)
 
 2635                       yystack_[(yynrhs) - (yyi + 1)]);
 
 2640#line 14 "agent_parser.yy"