diff --git a/pkg/frontend/authenticate.go b/pkg/frontend/authenticate.go index 99a45b46fc95e..3ec9f098a8fbc 100644 --- a/pkg/frontend/authenticate.go +++ b/pkg/frontend/authenticate.go @@ -47,6 +47,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/pb/query" "github.com/matrixorigin/matrixone/pkg/pb/task" + "github.com/matrixorigin/matrixone/pkg/pb/timestamp" "github.com/matrixorigin/matrixone/pkg/queryservice" "github.com/matrixorigin/matrixone/pkg/sql/parsers" "github.com/matrixorigin/matrixone/pkg/sql/parsers/dialect" @@ -572,6 +573,7 @@ type objectType int const ( objectTypeDatabase objectType = iota objectTypeTable + objectTypeView objectTypeFunction objectTypeAccount objectTypeNone @@ -585,6 +587,8 @@ func (ot objectType) String() string { return "database" case objectTypeTable: return "table" + case objectTypeView: + return "view" case objectTypeFunction: return "function" case objectTypeAccount: @@ -595,6 +599,11 @@ func (ot objectType) String() string { panic("unsupported object type") } +const ( + viewSecurityDefiner = "DEFINER" + viewSecurityInvoker = "INVOKER" +) + type privilegeLevelType int const ( @@ -1289,6 +1298,16 @@ const ( checkRoleHasPrivilegeWGOOrWithOwnershipFormat = `select distinct role_id from mo_catalog.mo_role_privs where (with_grant_option = true and (privilege_id = %d or privilege_id = %d)) or privilege_id = %d;` + // object-scoped WGO check: filters by obj_type and obj_id in addition to privilege_id + checkRoleHasPrivilegeWGOWithObjFormat = `select role_id from mo_catalog.mo_role_privs where with_grant_option = true and privilege_id = %d and obj_type = "%s" and obj_id = %d;` + + checkRoleHasPrivilegeWGOOrWithOwnershipWithObjFormat = `select distinct role_id from mo_catalog.mo_role_privs where ((with_grant_option = true and (privilege_id = %d or privilege_id = %d)) or privilege_id = %d) and obj_type = "%s" and obj_id = %d;` + + // obj_type-only WGO check: for wildcard grants (db.* / *.*) that still need table vs view distinction + checkRoleHasPrivilegeWGOWithObjTypeFormat = `select role_id from mo_catalog.mo_role_privs where with_grant_option = true and privilege_id = %d and obj_type = "%s";` + + checkRoleHasPrivilegeWGOOrWithOwnershipWithObjTypeFormat = `select distinct role_id from mo_catalog.mo_role_privs where ((with_grant_option = true and (privilege_id = %d or privilege_id = %d)) or privilege_id = %d) and obj_type = "%s";` + updateRolePrivsFormat = `update mo_catalog.mo_role_privs set operation_user_id = %d, granted_time = "%s", with_grant_option = %v where role_id = %d and obj_type = "%s" and obj_id = %d and privilege_id = %d;` insertRolePrivsFormat = `insert into mo_catalog.mo_role_privs(role_id,role_name,obj_type,obj_id,privilege_id,privilege_name,privilege_level,operation_user_id,granted_time,with_grant_option) @@ -1307,6 +1326,11 @@ const ( checkDatabaseTableFormat = `select rel_id from mo_catalog.mo_tables where relname = "%s" and reldatabase = "%s" and account_id = %d;` + checkDatabaseViewFormat = `select rel_id from mo_catalog.mo_tables where relname = "%s" and reldatabase = "%s" and relkind = "v" and account_id = %d;` + + getViewMetaFormat = `select viewdef, owner from mo_catalog.mo_tables where relname = "%s" and reldatabase = "%s" and relkind = "v" and account_id = %d;` + getViewMetaWithSnapshotFormat = `select viewdef, owner from mo_catalog.mo_tables {MO_TS = %d} where relname = "%s" and reldatabase = "%s" and relkind = "v" and account_id = %d;` + //TODO:fix privilege_level string and obj_type string //For object_type : table, privilege_level : *.* checkWithGrantOptionForTableStarStar = `select rp.privilege_id,rp.with_grant_option @@ -1553,6 +1577,9 @@ var ( objectTypeTable: {privilegeLevelStarStar, privilegeLevelDatabaseStar, privilegeLevelStar, privilegeLevelDatabaseTable, privilegeLevelTable}, + objectTypeView: {privilegeLevelStarStar, + privilegeLevelDatabaseStar, privilegeLevelStar, + privilegeLevelDatabaseTable, privilegeLevelTable}, } // the databases that can not operated by the real user @@ -1846,6 +1873,22 @@ func getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShip(privilegeId, allPrivId, ow return fmt.Sprintf(checkRoleHasPrivilegeWGOOrWithOwnershipFormat, privilegeId, allPrivId, ownershipPrivId) } +func getSqlForCheckRoleHasPrivilegeWGOWithObj(privilegeId int64, objType objectType, objId int64) string { + return fmt.Sprintf(checkRoleHasPrivilegeWGOWithObjFormat, privilegeId, objType, objId) +} + +func getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj(privilegeId, allPrivId, ownershipPrivId int64, objType objectType, objId int64) string { + return fmt.Sprintf(checkRoleHasPrivilegeWGOOrWithOwnershipWithObjFormat, privilegeId, allPrivId, ownershipPrivId, objType, objId) +} + +func getSqlForCheckRoleHasPrivilegeWGOWithObjType(privilegeId int64, objType objectType) string { + return fmt.Sprintf(checkRoleHasPrivilegeWGOWithObjTypeFormat, privilegeId, objType) +} + +func getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObjType(privilegeId, allPrivId, ownershipPrivId int64, objType objectType) string { + return fmt.Sprintf(checkRoleHasPrivilegeWGOOrWithOwnershipWithObjTypeFormat, privilegeId, allPrivId, ownershipPrivId, objType) +} + func getSqlForUpdateRolePrivs(userId int64, timestamp string, withGrantOption bool, roleId int64, objType objectType, objId, privilegeId int64) string { return fmt.Sprintf(updateRolePrivsFormat, userId, timestamp, withGrantOption, roleId, objType, objId, privilegeId) } @@ -1858,24 +1901,24 @@ func getSqlForDeleteRolePrivs(roleId int64, objType string, objId, privilegeId i return fmt.Sprintf(deleteRolePrivsFormat, roleId, objType, objId, privilegeId, privilegeLevel) } -func getSqlForCheckWithGrantOptionForTableStarStar(roleId int64, privId PrivilegeType) string { - return fmt.Sprintf(checkWithGrantOptionForTableStarStar, objectTypeTable, roleId, privId, privilegeLevelStarStar) +func getSqlForCheckWithGrantOptionForTableStarStarWithObjType(objType objectType, roleId int64, privId PrivilegeType) string { + return fmt.Sprintf(checkWithGrantOptionForTableStarStar, objType, roleId, privId, privilegeLevelStarStar) } -func getSqlForCheckWithGrantOptionForTableDatabaseStar(ctx context.Context, roleId int64, privId PrivilegeType, dbName string) (string, error) { +func getSqlForCheckWithGrantOptionForTableDatabaseStarWithObjType(ctx context.Context, objType objectType, roleId int64, privId PrivilegeType, dbName string) (string, error) { err := inputNameIsInvalid(ctx, dbName) if err != nil { return "", err } - return fmt.Sprintf(checkWithGrantOptionForTableDatabaseStar, objectTypeTable, roleId, privId, privilegeLevelDatabaseStar, dbName), nil + return fmt.Sprintf(checkWithGrantOptionForTableDatabaseStar, objType, roleId, privId, privilegeLevelDatabaseStar, dbName), nil } -func getSqlForCheckWithGrantOptionForTableDatabaseTable(ctx context.Context, roleId int64, privId PrivilegeType, dbName string, tableName string) (string, error) { +func getSqlForCheckWithGrantOptionForTableDatabaseTableWithObjType(ctx context.Context, objType objectType, roleId int64, privId PrivilegeType, dbName string, tableName string) (string, error) { err := inputNameIsInvalid(ctx, dbName, tableName) if err != nil { return "", err } - return fmt.Sprintf(checkWithGrantOptionForTableDatabaseTable, objectTypeTable, roleId, privId, privilegeLevelDatabaseTable, dbName, tableName), nil + return fmt.Sprintf(checkWithGrantOptionForTableDatabaseTable, objType, roleId, privId, privilegeLevelDatabaseTable, dbName, tableName), nil } func getSqlForCheckWithGrantOptionForDatabaseStar(roleId int64, privId PrivilegeType) string { @@ -1898,24 +1941,28 @@ func getSqlForCheckWithGrantOptionForAccountStar(roleId int64, privId PrivilegeT return fmt.Sprintf(checkWithGrantOptionForAccountStar, objectTypeAccount, roleId, privId, privilegeLevelStarStar) } -func getSqlForCheckRoleHasTableLevelPrivilege(ctx context.Context, roleId int64, privId PrivilegeType, dbName string, tableName string) (string, error) { +func getSqlForCheckRoleHasTableLevelPrivilegeWithObjType(ctx context.Context, objType objectType, roleId int64, privId PrivilegeType, dbName string, tableName string) (string, error) { err := inputNameIsInvalid(ctx, dbName, tableName) if err != nil { return "", err } - return fmt.Sprintf(checkRoleHasTableLevelPrivilegeFormat, objectTypeTable, roleId, privId, privilegeLevelDatabaseTable, privilegeLevelTable, dbName, tableName), nil + return fmt.Sprintf(checkRoleHasTableLevelPrivilegeFormat, objType, roleId, privId, privilegeLevelDatabaseTable, privilegeLevelTable, dbName, tableName), nil +} + +func getSqlForCheckRoleHasTableLevelPrivilege(ctx context.Context, roleId int64, privId PrivilegeType, dbName string, tableName string) (string, error) { + return getSqlForCheckRoleHasTableLevelPrivilegeWithObjType(ctx, objectTypeTable, roleId, privId, dbName, tableName) } -func getSqlForCheckRoleHasTableLevelForDatabaseStar(ctx context.Context, roleId int64, privId PrivilegeType, dbName string) (string, error) { +func getSqlForCheckRoleHasTableLevelForDatabaseStarWithObjType(ctx context.Context, objType objectType, roleId int64, privId PrivilegeType, dbName string) (string, error) { err := inputNameIsInvalid(ctx, dbName) if err != nil { return "", err } - return fmt.Sprintf(checkRoleHasTableLevelForDatabaseStarFormat, objectTypeTable, roleId, privId, privilegeLevelDatabaseStar, privilegeLevelStar, dbName), nil + return fmt.Sprintf(checkRoleHasTableLevelForDatabaseStarFormat, objType, roleId, privId, privilegeLevelDatabaseStar, privilegeLevelStar, dbName), nil } -func getSqlForCheckRoleHasTableLevelForStarStar(roleId int64, privId PrivilegeType) string { - return fmt.Sprintf(checkRoleHasTableLevelForStarStarFormat, objectTypeTable, roleId, privId, privilegeLevelStarStar) +func getSqlForCheckRoleHasTableLevelForStarStarWithObjType(objType objectType, roleId int64, privId PrivilegeType) string { + return fmt.Sprintf(checkRoleHasTableLevelForStarStarFormat, objType, roleId, privId, privilegeLevelStarStar) } func getSqlForCheckRoleHasDatabaseLevelForStarStar(roleId int64, privId PrivilegeType, level privilegeLevelType) string { @@ -1984,6 +2031,67 @@ func getSqlForCheckDatabaseTable( return fmt.Sprintf(checkDatabaseTableFormat, tableName, dbName, account), nil } +func getSqlForCheckDatabaseView( + ctx context.Context, + dbName string, + viewName string, +) (string, error) { + err := inputNameIsInvalid(ctx, dbName, viewName) + if err != nil { + return "", err + } + + var account uint32 + if v := ctx.Value(defines.TenantIDKey{}); v != nil { + account = v.(uint32) + } else { + return "", moerr.NewInternalErrorNoCtx("no account id found in the ctx") + } + + return fmt.Sprintf(checkDatabaseViewFormat, viewName, dbName, account), nil +} + +func getSqlForCheckViewMeta( + ctx context.Context, + dbName string, + viewName string, +) (string, error) { + err := inputNameIsInvalid(ctx, dbName, viewName) + if err != nil { + return "", err + } + + var account uint32 + if v := ctx.Value(defines.TenantIDKey{}); v != nil { + account = v.(uint32) + } else { + return "", moerr.NewInternalErrorNoCtx("no account id found in the ctx") + } + + return fmt.Sprintf(getViewMetaFormat, viewName, dbName, account), nil +} + +func getSqlForCheckViewMetaWithSnapshot( + ctx context.Context, + dbName string, + viewName string, + snapshotTs int64, +) (string, error) { + err := inputNameIsInvalid(ctx, dbName, viewName) + if err != nil { + return "", err + } + + var account uint32 + if v := ctx.Value(defines.TenantIDKey{}); v != nil { + account = v.(uint32) + } else { + return "", moerr.NewInternalErrorNoCtx("no account id found in the ctx") + } + + return fmt.Sprintf(getViewMetaWithSnapshotFormat, snapshotTs, viewName, dbName, account), nil +} + func getSqlForDeleteRole(roleId int64) []string { return []string{ fmt.Sprintf(deleteRoleFromMoRoleFormat, roleId), @@ -2070,6 +2178,16 @@ func isClusterTable(dbName, name string) bool { return false } +func isSystemViewDatabase(dbName string) bool { + if strings.EqualFold(dbName, sysview.InformationDBConst) { + return true + } + if strings.EqualFold(dbName, sysview.MysqlDBConst) { + return true + } + return false +} + // getSqlForGrantOwnershipOnDatabase get the sql for grant ownership on database func getSqlForGrantOwnershipOnDatabase(dbName, roleName string) string { return fmt.Sprintf(grantOwnershipOnDatabaseFormat, dbName, roleName) @@ -2187,6 +2305,10 @@ const ( // privilegeItem is the item for in the compound entry type privilegeItem struct { privilegeTyp PrivilegeType + objType objectType + originViews []string + directView string + scanSnapshot *plan.Snapshot role *tree.Role users []*tree.User dbName string @@ -2357,6 +2479,13 @@ type privilegeCache struct { storeForTable2 btree.Map[string, *btree.Set[PrivilegeType]] //For objectType table database.table , table storeForTable3 btree.Map[string, *btree.Map[string, *btree.Set[PrivilegeType]]] + //For objectType view + //For objectType view *, *.* + storeForView [int(privilegeLevelEnd)]btree.Set[PrivilegeType] + //For objectType view database.* + storeForView2 btree.Map[string, *btree.Set[PrivilegeType]] + //For objectType view database.view , view + storeForView3 btree.Map[string, *btree.Map[string, *btree.Set[PrivilegeType]]] //For objectType database *, *.* storeForDatabase [int(privilegeLevelEnd)]btree.Set[PrivilegeType] @@ -2407,6 +2536,32 @@ func (pc *privilegeCache) getPrivilegeSet(objTyp objectType, plt privilegeLevelT default: return nil } + case objectTypeView: + switch plt { + case privilegeLevelStarStar, privilegeLevelStar: + return &pc.storeForView[plt] + case privilegeLevelDatabaseStar: + dbStore, ok1 := pc.storeForView2.Get(dbName) + if !ok1 { + dbStore = &btree.Set[PrivilegeType]{} + pc.storeForView2.Set(dbName, dbStore) + } + return dbStore + case privilegeLevelDatabaseTable, privilegeLevelTable: + viewStore, ok1 := pc.storeForView3.Get(dbName) + if !ok1 { + viewStore = &btree.Map[string, *btree.Set[PrivilegeType]]{} + pc.storeForView3.Set(dbName, viewStore) + } + privSet, ok2 := viewStore.Get(tableName) + if !ok2 { + privSet = &btree.Set[PrivilegeType]{} + viewStore.Set(tableName, privSet) + } + return privSet + default: + return nil + } case objectTypeDatabase: switch plt { case privilegeLevelStar, privilegeLevelStarStar: @@ -2459,11 +2614,14 @@ func (pc *privilegeCache) invalidate() { //hit := pc.hit.Swap(0) for i := privilegeLevelStar; i < privilegeLevelEnd; i++ { pc.storeForTable[i].Clear() + pc.storeForView[i].Clear() pc.storeForDatabase[i].Clear() pc.storeForAccount[i].Clear() } pc.storeForTable2.Clear() pc.storeForTable3.Clear() + pc.storeForView2.Clear() + pc.storeForView3.Clear() pc.storeForDatabase2.Clear() //ratio := float64(0) //if total == 0 { @@ -4833,12 +4991,232 @@ func getDatabaseOrTableId(ctx context.Context, bh BackgroundExec, isDb bool, dbN } } +func getViewId(ctx context.Context, bh BackgroundExec, dbName, viewName string) (int64, error) { + sql, err := getSqlForCheckDatabaseView(ctx, dbName, viewName) + if err != nil { + return 0, err + } + bh.ClearExecResultSet() + err = bh.Exec(ctx, sql) + if err != nil { + return 0, err + } + + erArray, err := getResultSet(ctx, bh) + if err != nil { + return 0, err + } + + if execResultArrayHasData(erArray) { + id, err := erArray[0].GetInt64(ctx, 0, 0) + if err != nil { + return 0, err + } + return id, nil + } + return 0, moerr.NewInternalErrorf(ctx, `there is no view "%s" in database "%s"`, viewName, dbName) +} + +type viewSecurityInfo struct { + securityType string + definerRoleId int64 +} + +func normalizeViewSecurityType(securityType string) string { + securityType = strings.TrimSpace(strings.ToUpper(securityType)) + if securityType == viewSecurityInvoker { + return viewSecurityInvoker + } + return viewSecurityDefiner +} + +func parseViewKey(key string) (string, string) { + if key == "" { + return "", "" + } + if baseKey, _, ok := splitViewSnapshotSuffix(key); ok { + key = baseKey + } + if strings.Contains(key, KeySep) { + return splitKey(key) + } + if dotIdx := strings.LastIndex(key, "."); dotIdx != -1 { + return key[:dotIdx], key[dotIdx+1:] + } + return "", key +} + +func splitViewSnapshotSuffix(key string) (string, int64, bool) { + if key == "" { + return key, 0, false + } + idx := strings.LastIndex(key, plan2.ViewSnapshotKeySuffix) + if idx == -1 { + return key, 0, false + } + tsStr := key[idx+len(plan2.ViewSnapshotKeySuffix):] + ts, err := strconv.ParseInt(tsStr, 10, 64) + if err != nil { + return key, 0, false + } + return key[:idx], ts, true +} + +func getViewSecurityInfoWithSnapshot(ctx context.Context, bh BackgroundExec, dbName, viewName string, snapshot *plan.Snapshot) (viewSecurityInfo, bool, error) { + var ( + sql string + err error + ) + ctxForSql := ctx + if snapshot != nil && snapshot.Tenant != nil { + ctxForSql = defines.AttachAccountId(ctxForSql, snapshot.Tenant.TenantID) + } + if snapshot != nil && snapshot.TS != nil { + sql, err = getSqlForCheckViewMetaWithSnapshot(ctxForSql, dbName, viewName, snapshot.TS.PhysicalTime) + } else { + sql, err = getSqlForCheckViewMeta(ctxForSql, dbName, viewName) + } + if err != nil { + return viewSecurityInfo{}, false, err + } + bh.ClearExecResultSet() + err = bh.Exec(ctxForSql, sql) + if err != nil { + return viewSecurityInfo{}, false, err + } + + erArray, err := getResultSet(ctxForSql, bh) + if err != nil { + return viewSecurityInfo{}, false, err + } + if !execResultArrayHasData(erArray) { + return viewSecurityInfo{}, false, nil + } + + viewDef, err := erArray[0].GetString(ctx, 0, 0) + if err != nil { + return viewSecurityInfo{}, false, err + } + definerRoleId, err := erArray[0].GetInt64(ctx, 0, 1) + if err != nil { + return viewSecurityInfo{}, false, err + } + + securityType := viewSecurityDefiner + if viewDef != "" { + var viewData plan2.ViewData + if err := json.Unmarshal([]byte(viewDef), &viewData); err != nil { + return viewSecurityInfo{}, false, err + } + securityType = normalizeViewSecurityType(viewData.SecurityType) + } + + return viewSecurityInfo{ + securityType: securityType, + definerRoleId: definerRoleId, + }, true, nil +} + +func resolveViewChainPrivilegeContext( + ctx context.Context, + bh BackgroundExec, + ses *Session, + cache *privilegeCache, + roleId int64, + privType PrivilegeType, + viewChain []string, + fallbackDb string, + snapshot *plan.Snapshot, + enableCache bool, +) (int64, bool, bool, error) { + if len(viewChain) == 0 { + return roleId, true, false, nil + } + rootDb, rootView := parseViewKey(viewChain[0]) + if rootView == "" { + return 0, false, false, moerr.NewInternalErrorf(ctx, "invalid view key %q", viewChain[0]) + } + if rootDb == "" { + rootDb = fallbackDb + if rootDb == "" { + rootDb = ses.GetDatabaseName() + } + } + if isSystemViewDatabase(rootDb) { + return roleId, true, true, nil + } + + currentRoleId := roleId + for _, viewKey := range viewChain { + viewDb, viewName := parseViewKey(viewKey) + if viewName == "" { + return 0, false, false, moerr.NewInternalErrorf(ctx, "invalid view key %q", viewKey) + } + if viewDb == "" { + viewDb = fallbackDb + if viewDb == "" { + viewDb = ses.GetDatabaseName() + } + } + if isSystemViewDatabase(viewDb) { + // Outer user views have already been validated by prior iterations. + // Once the chain reaches a system view, stop explicit inner-view checks + // and preserve normal base-object authorization semantics. + return currentRoleId, true, false, nil + } + + useCache := enableCache && cache != nil && currentRoleId == roleId + cacheToUse := cache + if !useCache { + cacheToUse = nil + } + var viewAllowed bool + var err error + if currentRoleId != roleId { + // DEFINER path: expand role inheritance for the switched role + viewAllowed, err = verifyViewPrivilegeWithRoleInheritance(ctx, bh, ses, currentRoleId, privType, viewDb, viewName) + } else { + viewAllowed, err = verifyViewPrivilegeForRole(ctx, bh, ses, cacheToUse, currentRoleId, privType, viewDb, viewName, useCache) + } + if err != nil { + return 0, false, false, err + } + if !viewAllowed { + return 0, false, false, nil + } + + viewInfo, found, err := getViewSecurityInfoWithSnapshot(ctx, bh, viewDb, viewName, snapshot) + if err != nil { + return 0, false, false, err + } + if !found { + if snapshot != nil && snapshot.TS != nil { + return 0, false, false, moerr.NewInternalErrorf(ctx, `there is no view "%s" in database "%s"`, viewName, viewDb) + } + if !ses.GetTxnHandler().InActiveTxn() { + return 0, false, false, moerr.NewInternalErrorf(ctx, `there is no view "%s" in database "%s"`, viewName, viewDb) + } + viewInfo = viewSecurityInfo{ + securityType: viewSecurityDefiner, + definerRoleId: currentRoleId, + } + } + if viewInfo.securityType == viewSecurityDefiner { + currentRoleId = viewInfo.definerRoleId + } + } + + return currentRoleId, true, false, nil +} + // convertAstObjectTypeToObjectType gets the object type from the ast func convertAstObjectTypeToObjectType(ctx context.Context, ot tree.ObjectType) (objectType, error) { var objType objectType switch ot { case tree.OBJECT_TYPE_TABLE: objType = objectTypeTable + case tree.OBJECT_TYPE_VIEW: + objType = objectTypeView case tree.OBJECT_TYPE_DATABASE: objType = objectTypeDatabase case tree.OBJECT_TYPE_ACCOUNT: @@ -4859,7 +5237,8 @@ func checkPrivilegeObjectTypeAndPrivilegeLevel(ctx context.Context, ses FeSessio var dbName string switch ot { - case tree.OBJECT_TYPE_TABLE: + case tree.OBJECT_TYPE_TABLE, tree.OBJECT_TYPE_VIEW: + isView := ot == tree.OBJECT_TYPE_VIEW switch pl.Level { case tree.PRIVILEGE_LEVEL_TYPE_STAR: privLevel = privilegeLevelStar @@ -4878,13 +5257,21 @@ func checkPrivilegeObjectTypeAndPrivilegeLevel(ctx context.Context, ses FeSessio } case tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE: privLevel = privilegeLevelDatabaseTable - objId, err = getDatabaseOrTableId(ctx, bh, false, pl.DbName, pl.TabName) + if isView { + objId, err = getViewId(ctx, bh, pl.DbName, pl.TabName) + } else { + objId, err = getDatabaseOrTableId(ctx, bh, false, pl.DbName, pl.TabName) + } if err != nil { return 0, 0, err } case tree.PRIVILEGE_LEVEL_TYPE_TABLE: privLevel = privilegeLevelTable - objId, err = getDatabaseOrTableId(ctx, bh, false, ses.GetDatabaseName(), pl.TabName) + if isView { + objId, err = getViewId(ctx, bh, ses.GetDatabaseName(), pl.TabName) + } else { + objId, err = getDatabaseOrTableId(ctx, bh, false, ses.GetDatabaseName(), pl.TabName) + } if err != nil { return 0, 0, err } @@ -4949,8 +5336,8 @@ func matchPrivilegeTypeWithObjectType(ctx context.Context, privType PrivilegeTyp err = moerr.NewInternalErrorf(ctx, `the privilege "%s" can only be granted to the object type "database"`, privType) } case PrivilegeScopeTable: - if objType != objectTypeTable { - err = moerr.NewInternalErrorf(ctx, `the privilege "%s" can only be granted to the object type "table"`, privType) + if objType != objectTypeTable && objType != objectTypeView { + err = moerr.NewInternalErrorf(ctx, `the privilege "%s" can only be granted to the object type "table" or "view"`, privType) } case PrivilegeScopeRoutine: if objType != objectTypeFunction { @@ -5944,6 +6331,10 @@ func determinePrivilegeSetOfStatement(stmt tree.Statement) *privilege { // privilege will be done on the table type privilegeTips struct { typ PrivilegeType + objType objectType + originViews []string + directView string + scanSnapshot *plan.Snapshot databaseName string tableName string isClusterTable bool @@ -5952,6 +6343,13 @@ type privilegeTips struct { type privilegeTipsArray []privilegeTips +func getDbNameForPrivilege(objRef *plan2.ObjectRef) string { + if objRef.GetSubscriptionName() != "" { + return objRef.GetSubscriptionName() + } + return objRef.GetSchemaName() +} + func (pot privilegeTips) String() string { return fmt.Sprintf("%s %s %s", pot.typ, pot.databaseName, pot.tableName) } @@ -5967,32 +6365,46 @@ func (pota privilegeTipsArray) String() string { // extractPrivilegeTipsFromPlan extracts the privilege tips from the plan func extractPrivilegeTipsFromPlan(p *plan2.Plan) privilegeTipsArray { - //NOTE: the pts may be nil when the plan does operate any table. + // NOTE: the pts may be nil when the plan does operate any table. var pts privilegeTipsArray appendPt := func(pt privilegeTips) { pts = append(pts, pt) } - if p.GetQuery() != nil { //select,insert select, update, delete + + if p.GetQuery() != nil { // select,insert select, update, delete q := p.GetQuery() - // lastNode := q.Nodes[len(q.Nodes)-1] var t PrivilegeType var clusterTable bool - var clusterTableOperation clusterTableOperationType + var scanTargetTables map[[2]string]struct{} switch q.StmtType { case plan.Query_UPDATE: t = PrivilegeTypeUpdate - clusterTableOperation = clusterTableModify case plan.Query_DELETE: t = PrivilegeTypeDelete - clusterTableOperation = clusterTableModify case plan.Query_INSERT: t = PrivilegeTypeInsert - clusterTableOperation = clusterTableModify default: t = PrivilegeTypeSelect - clusterTableOperation = clusterTableSelect + } + + if q.StmtType == plan.Query_UPDATE || q.StmtType == plan.Query_DELETE { + scanTargetTables = make(map[[2]string]struct{}) + for _, node := range q.Nodes { + switch node.NodeType { + case plan.Node_MULTI_UPDATE: + for _, updateCtx := range node.UpdateCtxList { + if updateCtx != nil && updateCtx.ObjRef != nil { + scanTargetTables[[2]string{updateCtx.ObjRef.GetSchemaName(), updateCtx.ObjRef.GetObjName()}] = struct{}{} + } + } + case plan.Node_DELETE: + if node.DeleteCtx != nil && node.DeleteCtx.Ref != nil { + scanTargetTables[[2]string{node.DeleteCtx.Ref.GetSchemaName(), node.DeleteCtx.Ref.GetObjName()}] = struct{}{} + } + } + } } for _, node := range q.Nodes { @@ -6005,75 +6417,191 @@ func extractPrivilegeTipsFromPlan(p *plan2.Plan) privilegeTipsArray { } var scanTyp PrivilegeType + var scanOperation clusterTableOperationType switch q.StmtType { case plan.Query_UPDATE: - scanTyp = PrivilegeTypeUpdate - clusterTableOperation = clusterTableModify + scanTyp = PrivilegeTypeSelect + scanOperation = clusterTableSelect + if _, ok := scanTargetTables[[2]string{node.ObjRef.GetSchemaName(), node.ObjRef.GetObjName()}]; ok { + scanTyp = PrivilegeTypeUpdate + scanOperation = clusterTableModify + } case plan.Query_DELETE: - scanTyp = PrivilegeTypeDelete - clusterTableOperation = clusterTableModify + scanTyp = PrivilegeTypeSelect + scanOperation = clusterTableSelect + if _, ok := scanTargetTables[[2]string{node.ObjRef.GetSchemaName(), node.ObjRef.GetObjName()}]; ok { + scanTyp = PrivilegeTypeDelete + scanOperation = clusterTableModify + } default: scanTyp = PrivilegeTypeSelect - clusterTableOperation = clusterTableSelect + scanOperation = clusterTableSelect } - //do not check the privilege of the index table + originViews := node.GetOriginViews() + directView := node.GetDirectView() + scanSnapshot := node.GetScanSnapshot() if !isIndexTable(node.ObjRef.GetObjName()) { appendPt(privilegeTips{ typ: scanTyp, - databaseName: node.ObjRef.GetSchemaName(), + objType: objectTypeTable, + databaseName: getDbNameForPrivilege(node.ObjRef), tableName: node.ObjRef.GetObjName(), isClusterTable: clusterTable, - clusterTableOperation: clusterTableOperation, + clusterTableOperation: scanOperation, + originViews: originViews, + directView: directView, + scanSnapshot: scanSnapshot, }) } else if node.ParentObjRef != nil { appendPt(privilegeTips{ typ: scanTyp, - databaseName: node.ParentObjRef.GetSchemaName(), + objType: objectTypeTable, + databaseName: getDbNameForPrivilege(node.ParentObjRef), tableName: node.ParentObjRef.GetObjName(), isClusterTable: clusterTable, - clusterTableOperation: clusterTableOperation, + clusterTableOperation: scanOperation, + originViews: originViews, + directView: directView, + scanSnapshot: scanSnapshot, + }) + } + } + } else if node.NodeType == plan.Node_PRE_INSERT || + node.NodeType == plan.Node_PRE_INSERT_UK || + node.NodeType == plan.Node_PRE_INSERT_SK { + var objRef *plan.ObjectRef + var tableDef *plan.TableDef + if node.PreInsertCtx != nil { + objRef = node.PreInsertCtx.Ref + tableDef = node.PreInsertCtx.TableDef + } + if objRef == nil && node.ObjRef != nil { + objRef = node.ObjRef + } + if objRef != nil { + dbName := objRef.GetSchemaName() + tableName := objRef.GetObjName() + if dbName == "" && tableDef != nil && tableDef.DbName != "" { + dbName = tableDef.DbName + } + if tableName == "" && tableDef != nil && tableDef.Name != "" { + tableName = tableDef.Name + } + originViews := node.GetOriginViews() + directView := node.GetDirectView() + scanSnapshot := node.GetScanSnapshot() + if !isIndexTable(tableName) { + insertClusterTable := false + if tableDef != nil && tableDef.TableType == catalog.SystemClusterRel { + insertClusterTable = true + } else { + insertClusterTable = isClusterTable(dbName, tableName) + } + appendPt(privilegeTips{ + typ: PrivilegeTypeInsert, + objType: objectTypeTable, + databaseName: dbName, + tableName: tableName, + isClusterTable: insertClusterTable, + clusterTableOperation: clusterTableModify, + originViews: originViews, + directView: directView, + scanSnapshot: scanSnapshot, + }) + } else if node.ParentObjRef != nil { + parentDb := node.ParentObjRef.GetSchemaName() + parentTable := node.ParentObjRef.GetObjName() + if parentDb == "" && tableDef != nil && tableDef.DbName != "" { + parentDb = tableDef.DbName + } + if parentTable == "" && tableDef != nil && tableDef.Name != "" { + parentTable = tableDef.Name + } + appendPt(privilegeTips{ + typ: PrivilegeTypeInsert, + objType: objectTypeTable, + databaseName: parentDb, + tableName: parentTable, + isClusterTable: isClusterTable(parentDb, parentTable), + clusterTableOperation: clusterTableModify, + originViews: originViews, + directView: directView, + scanSnapshot: scanSnapshot, }) } } } else if node.NodeType == plan.Node_INSERT { + var objRef *plan.ObjectRef if node.InsertCtx != nil && node.InsertCtx.Ref != nil { - objRef := node.InsertCtx.Ref - //do not check the privilege of the index table - if !isIndexTable(node.ObjRef.GetObjName()) { + objRef = node.InsertCtx.Ref + } else if node.ObjRef != nil { + objRef = node.ObjRef + } + if objRef != nil { + dbName := objRef.GetSchemaName() + tableName := objRef.GetObjName() + if dbName == "" && node.TableDef != nil && node.TableDef.DbName != "" { + dbName = node.TableDef.DbName + } + if tableName == "" && node.TableDef != nil && node.TableDef.Name != "" { + tableName = node.TableDef.Name + } + originViews := node.GetOriginViews() + directView := node.GetDirectView() + scanSnapshot := node.GetScanSnapshot() + if !isIndexTable(tableName) { + insertClusterTable := isClusterTable(dbName, tableName) appendPt(privilegeTips{ - typ: t, - databaseName: objRef.GetSchemaName(), - tableName: objRef.GetObjName(), - isClusterTable: node.InsertCtx.IsClusterTable, + typ: PrivilegeTypeInsert, + objType: objectTypeTable, + databaseName: dbName, + tableName: tableName, + isClusterTable: insertClusterTable, clusterTableOperation: clusterTableModify, + originViews: originViews, + directView: directView, + scanSnapshot: scanSnapshot, }) } } } else if node.NodeType == plan.Node_DELETE { if node.DeleteCtx != nil && node.DeleteCtx.Ref != nil { objRef := node.DeleteCtx.Ref - //do not check the privilege of the index table + originViews := node.GetOriginViews() + directView := node.GetDirectView() + scanSnapshot := node.GetScanSnapshot() if !isIndexTable(node.ObjRef.GetObjName()) { appendPt(privilegeTips{ typ: t, + objType: objectTypeTable, databaseName: objRef.GetSchemaName(), tableName: objRef.GetObjName(), isClusterTable: node.DeleteCtx.IsClusterTable, clusterTableOperation: clusterTableModify, + originViews: originViews, + directView: directView, + scanSnapshot: scanSnapshot, }) } } } else if node.NodeType == plan.Node_MULTI_UPDATE { for _, updateCtx := range node.UpdateCtxList { + originViews := node.GetOriginViews() + directView := node.GetDirectView() + scanSnapshot := node.GetScanSnapshot() if !isIndexTable(updateCtx.ObjRef.GetObjName()) { isClusterTable := updateCtx.TableDef.TableType == catalog.SystemClusterRel appendPt(privilegeTips{ typ: t, + objType: objectTypeTable, databaseName: updateCtx.ObjRef.GetSchemaName(), tableName: updateCtx.ObjRef.GetObjName(), isClusterTable: isClusterTable, clusterTableOperation: clusterTableModify, + originViews: originViews, + directView: directView, + scanSnapshot: scanSnapshot, }) } } @@ -6084,6 +6612,7 @@ func extractPrivilegeTipsFromPlan(p *plan2.Plan) privilegeTipsArray { truncateTable := p.GetDdl().GetTruncateTable() appendPt(privilegeTips{ typ: PrivilegeTypeTruncate, + objType: objectTypeTable, databaseName: truncateTable.GetDatabase(), tableName: truncateTable.GetTable(), isClusterTable: truncateTable.GetClusterTable().GetIsClusterTable(), @@ -6093,6 +6622,7 @@ func extractPrivilegeTipsFromPlan(p *plan2.Plan) privilegeTipsArray { dropTable := p.GetDdl().GetDropTable() appendPt(privilegeTips{ typ: PrivilegeTypeDropTable, + objType: objectTypeTable, databaseName: dropTable.GetDatabase(), tableName: dropTable.GetTable(), isClusterTable: dropTable.GetClusterTable().GetIsClusterTable(), @@ -6102,6 +6632,7 @@ func extractPrivilegeTipsFromPlan(p *plan2.Plan) privilegeTipsArray { createIndex := p.GetDdl().GetCreateIndex() appendPt(privilegeTips{ typ: PrivilegeTypeDropTable, + objType: objectTypeTable, databaseName: createIndex.GetDatabase(), tableName: createIndex.GetTable(), clusterTableOperation: clusterTableModify, @@ -6110,6 +6641,7 @@ func extractPrivilegeTipsFromPlan(p *plan2.Plan) privilegeTipsArray { dropIndex := p.GetDdl().GetDropIndex() appendPt(privilegeTips{ typ: PrivilegeTypeDropTable, + objType: objectTypeTable, databaseName: dropIndex.GetDatabase(), tableName: dropIndex.GetTable(), clusterTableOperation: clusterTableModify, @@ -6142,6 +6674,10 @@ func convertPrivilegeTipsToPrivilege(priv *privilege, arr privilegeTipsArray) { for _, tips := range arr { multiPrivs = append(multiPrivs, privilegeItem{ privilegeTyp: tips.typ, + objType: tips.objType, + originViews: tips.originViews, + directView: tips.directView, + scanSnapshot: tips.scanSnapshot, dbName: tips.databaseName, tableName: tips.tableName, isClusterTable: tips.isClusterTable, @@ -6155,14 +6691,25 @@ func convertPrivilegeTipsToPrivilege(priv *privilege, arr privilegeTipsArray) { entries = append(entries, privilegeEntry{privilegeEntryTyp: privilegeEntryTypeCompound, compound: me}) //optional predefined privilege : tableAll, ownership + //put them into compound entries so they go through view-chain verification predefined := []PrivilegeType{PrivilegeTypeTableAll, PrivilegeTypeTableOwnership} for _, p := range predefined { - for par := range dedup { - e := privilegeEntriesMap[p] - e.databaseName = par.databaseName - e.tableName = par.tableName - entries = append(entries, e) + predefinedMultiPrivs := make([]privilegeItem, 0, len(arr)) + for _, tips := range arr { + predefinedMultiPrivs = append(predefinedMultiPrivs, privilegeItem{ + privilegeTyp: p, + objType: tips.objType, + originViews: tips.originViews, + directView: tips.directView, + scanSnapshot: tips.scanSnapshot, + dbName: tips.databaseName, + tableName: tips.tableName, + isClusterTable: tips.isClusterTable, + clusterTableOperation: tips.clusterTableOperation, + }) } + me := &compoundEntry{predefinedMultiPrivs} + entries = append(entries, privilegeEntry{privilegeEntryTyp: privilegeEntryTypeCompound, compound: me}) } priv.entries = entries @@ -6174,14 +6721,14 @@ func getSqlFromPrivilegeEntry(ctx context.Context, roleId int64, entry privilege var sql string //for object type table, need concrete tableid //TODO: table level check should be done after getting the plan - if entry.objType == objectTypeTable { + if entry.objType == objectTypeTable || entry.objType == objectTypeView { switch entry.privilegeLevel { case privilegeLevelDatabaseTable, privilegeLevelTable: - sql, err = getSqlForCheckRoleHasTableLevelPrivilege(ctx, roleId, entry.privilegeId, entry.databaseName, entry.tableName) + sql, err = getSqlForCheckRoleHasTableLevelPrivilegeWithObjType(ctx, entry.objType, roleId, entry.privilegeId, entry.databaseName, entry.tableName) case privilegeLevelDatabaseStar, privilegeLevelStar: - sql, err = getSqlForCheckRoleHasTableLevelForDatabaseStar(ctx, roleId, entry.privilegeId, entry.databaseName) + sql, err = getSqlForCheckRoleHasTableLevelForDatabaseStarWithObjType(ctx, entry.objType, roleId, entry.privilegeId, entry.databaseName) case privilegeLevelStarStar: - sql = getSqlForCheckRoleHasTableLevelForStarStar(roleId, entry.privilegeId) + sql = getSqlForCheckRoleHasTableLevelForStarStarWithObjType(entry.objType, roleId, entry.privilegeId) default: return "", moerr.NewInternalErrorf(ctx, "unsupported privilegel level %s for the privilege %s", entry.privilegeLevel, entry.privilegeId) } @@ -6221,14 +6768,14 @@ func getSqlForPrivilege(ctx context.Context, roleId int64, entry privilegeEntry, var err error //for object type table, need concrete tableid switch entry.objType { - case objectTypeTable: + case objectTypeTable, objectTypeView: switch pl { case privilegeLevelDatabaseTable, privilegeLevelTable: - sql, err = getSqlForCheckRoleHasTableLevelPrivilege(ctx, roleId, entry.privilegeId, entry.databaseName, entry.tableName) + sql, err = getSqlForCheckRoleHasTableLevelPrivilegeWithObjType(ctx, entry.objType, roleId, entry.privilegeId, entry.databaseName, entry.tableName) case privilegeLevelDatabaseStar, privilegeLevelStar: - sql, err = getSqlForCheckRoleHasTableLevelForDatabaseStar(ctx, roleId, entry.privilegeId, entry.databaseName) + sql, err = getSqlForCheckRoleHasTableLevelForDatabaseStarWithObjType(ctx, entry.objType, roleId, entry.privilegeId, entry.databaseName) case privilegeLevelStarStar: - sql = getSqlForCheckRoleHasTableLevelForStarStar(roleId, entry.privilegeId) + sql = getSqlForCheckRoleHasTableLevelForStarStarWithObjType(entry.objType, roleId, entry.privilegeId) default: return "", moerr.NewInternalErrorf(ctx, "the privilege level %s for the privilege %s is unsupported", pl, entry.privilegeId) } @@ -6265,6 +6812,73 @@ func getSqlForPrivilege2(ctx context.Context, ses *Session, roleId int64, entry } // verifyPrivilegeEntryInMultiPrivilegeLevels checks the privilege +// verifyPrivilegeWithRoleInheritance expands the role inheritance chain for startRoleId +// and checks whether any role in the chain has the given privilege entry. +// This is used for the DEFINER path where the effective role differs from the session role. +func verifyPrivilegeWithRoleInheritance( + ctx context.Context, + bh BackgroundExec, + ses *Session, + startRoleId int64, + entry privilegeEntry, + enableCache bool, +) (bool, error) { + if startRoleId == moAdminRoleID || startRoleId == accountAdminRoleID { + return true, nil + } + pls, err := getPrivilegeLevelsOfObjectType(ctx, entry.objType) + if err != nil { + return false, err + } + + visited := &btree.Set[int64]{} + currentSet := &btree.Set[int64]{} + currentSet.Insert(startRoleId) + visited.Insert(startRoleId) + + for { + for _, rid := range currentSet.Keys() { + yes, err := verifyPrivilegeEntryInMultiPrivilegeLevels(ctx, bh, ses, nil, rid, entry, pls, false) + if err != nil { + return false, err + } + if yes { + return true, nil + } + } + + nextSet := &btree.Set[int64]{} + for _, rid := range currentSet.Keys() { + bh.ClearExecResultSet() + err := bh.Exec(ctx, getSqlForInheritedRoleIdOfRoleId(rid)) + if err != nil { + return false, err + } + erArray, err := getResultSet(ctx, bh) + if err != nil { + return false, err + } + if execResultArrayHasData(erArray) { + for i := uint64(0); i < erArray[0].GetRowCount(); i++ { + grantedId, err := erArray[0].GetInt64(ctx, i, 0) + if err != nil { + return false, err + } + if !visited.Contains(grantedId) { + visited.Insert(grantedId) + nextSet.Insert(grantedId) + } + } + } + } + + if nextSet.Len() == 0 { + return false, nil + } + currentSet = nextSet + } +} + // with multi-privilege levels exists or not func verifyPrivilegeEntryInMultiPrivilegeLevels( ctx context.Context, @@ -6316,6 +6930,135 @@ func verifyPrivilegeEntryInMultiPrivilegeLevels( return false, nil } +func verifyViewPrivilegeForRole( + ctx context.Context, + bh BackgroundExec, + ses *Session, + cache *privilegeCache, + roleId int64, + privType PrivilegeType, + dbName string, + viewName string, + enableCache bool, +) (bool, error) { + if roleId == moAdminRoleID || roleId == accountAdminRoleID { + return true, nil + } + for _, objType := range []objectType{objectTypeView, objectTypeTable} { + yes, err := verifyViewPrivilegeForRoleWithObjectType( + ctx, bh, ses, cache, roleId, privType, dbName, viewName, objType, enableCache) + if err != nil { + return false, err + } + if yes { + return true, nil + } + } + return false, nil +} + +func verifyViewPrivilegeForRoleWithObjectType( + ctx context.Context, + bh BackgroundExec, + ses *Session, + cache *privilegeCache, + roleId int64, + privType PrivilegeType, + dbName string, + viewName string, + objType objectType, + enableCache bool, +) (bool, error) { + privTypes := []PrivilegeType{privType, PrivilegeTypeTableAll, PrivilegeTypeTableOwnership} + seen := make(map[PrivilegeType]struct{}, len(privTypes)) + for _, p := range privTypes { + if _, ok := seen[p]; ok { + continue + } + seen[p] = struct{}{} + entry := privilegeEntriesMap[p] + entry.objType = objType + entry.databaseName = dbName + entry.tableName = viewName + entry.privilegeEntryTyp = privilegeEntryTypeGeneral + entry.compound = nil + pls, err := getPrivilegeLevelsOfObjectType(ctx, objType) + if err != nil { + return false, err + } + yes, err := verifyPrivilegeEntryInMultiPrivilegeLevels(ctx, bh, ses, cache, roleId, entry, pls, enableCache) + if err != nil { + return false, err + } + if yes { + return true, nil + } + } + return false, nil +} + +// verifyViewPrivilegeWithRoleInheritance checks view privilege for a role with role inheritance expansion. +func verifyViewPrivilegeWithRoleInheritance( + ctx context.Context, + bh BackgroundExec, + ses *Session, + startRoleId int64, + privType PrivilegeType, + dbName string, + viewName string, +) (bool, error) { + if startRoleId == moAdminRoleID || startRoleId == accountAdminRoleID { + return true, nil + } + + visited := &btree.Set[int64]{} + currentSet := &btree.Set[int64]{} + currentSet.Insert(startRoleId) + visited.Insert(startRoleId) + + for { + for _, rid := range currentSet.Keys() { + yes, err := verifyViewPrivilegeForRole(ctx, bh, ses, nil, rid, privType, dbName, viewName, false) + if err != nil { + return false, err + } + if yes { + return true, nil + } + } + + nextSet := &btree.Set[int64]{} + for _, rid := range currentSet.Keys() { + bh.ClearExecResultSet() + err := bh.Exec(ctx, getSqlForInheritedRoleIdOfRoleId(rid)) + if err != nil { + return false, err + } + erArray, err := getResultSet(ctx, bh) + if err != nil { + return false, err + } + if execResultArrayHasData(erArray) { + for i := uint64(0); i < erArray[0].GetRowCount(); i++ { + grantedId, err := erArray[0].GetInt64(ctx, i, 0) + if err != nil { + return false, err + } + if !visited.Contains(grantedId) { + visited.Insert(grantedId) + nextSet.Insert(grantedId) + } + } + } + } + + if nextSet.Len() == 0 { + return false, nil + } + currentSet = nextSet + } +} + // determineRoleSetHasPrivilegeSet decides the role set has at least one privilege of the privilege set. // The algorithm 2. func determineRoleSetHasPrivilegeSet(ctx context.Context, bh BackgroundExec, ses *Session, roleIds *btree.Set[int64], priv *privilege, enableCache bool) (bool, error) { @@ -6361,8 +7104,6 @@ func determineRoleSetHasPrivilegeSet(ctx context.Context, bh BackgroundExec, ses //multi privileges take effect together for _, mi := range entry.compound.items { if mi.privilegeTyp == PrivilegeTypeCanGrantRoleToOthersInCreateUser { - //TODO: normalize the name - //TODO: simplify the logic yes, err = determineUserCanGrantRolesToOthersInternal(ctx, bh, ses, []*tree.Role{mi.role}) if err != nil { return false, err @@ -6385,6 +7126,7 @@ func determineRoleSetHasPrivilegeSet(ctx context.Context, bh BackgroundExec, ses } } else { tempEntry := privilegeEntriesMap[mi.privilegeTyp] + tempEntry.objType = mi.objType tempEntry.databaseName = mi.dbName tempEntry.tableName = mi.tableName tempEntry.privilegeEntryTyp = privilegeEntryTypeGeneral @@ -6394,17 +7136,77 @@ func determineRoleSetHasPrivilegeSet(ctx context.Context, bh BackgroundExec, ses return false, err } + yes = false + writeDirectly := priv.writeDatabaseAndTableDirectly + if (tempEntry.objType == objectTypeTable || tempEntry.objType == objectTypeView) && mi.privilegeTyp == PrivilegeTypeSelect { + writeDirectly = false + } yes2 = verifyLightPrivilege(ses, tempEntry.databaseName, - priv.writeDatabaseAndTableDirectly, + writeDirectly, mi.isClusterTable, mi.clusterTableOperation) if yes2 { - //At least there is one success - yes, err = verifyPrivilegeEntryInMultiPrivilegeLevels(ctx, bh, ses, cache, roleId, tempEntry, pls, enableCache) - if err != nil { - return false, err + viewChain := mi.originViews + directView := mi.directView + var viewSnapshot *plan.Snapshot + if directView != "" { + baseKey, ts, ok := splitViewSnapshotSuffix(directView) + if ok { + viewSnapshot = &plan.Snapshot{TS: ×tamp.Timestamp{PhysicalTime: ts}} + if mi.scanSnapshot != nil && mi.scanSnapshot.Tenant != nil { + viewSnapshot.Tenant = mi.scanSnapshot.Tenant + } + directView = baseKey + } + } + if len(viewChain) == 0 && directView != "" { + viewChain = []string{directView} + } + + checkRoleId := roleId + viewAllowed := true + skipBaseCheck := false + if len(viewChain) > 0 { + checkRoleId, viewAllowed, skipBaseCheck, err = resolveViewChainPrivilegeContext( + ctx, + bh, + ses, + cache, + roleId, + mi.privilegeTyp, + viewChain, + tempEntry.databaseName, + viewSnapshot, + enableCache, + ) + if err != nil { + return false, err + } + } + + if viewAllowed { + if skipBaseCheck { + yes = true + } else if len(viewChain) > 0 { + // View path: always expand role inheritance for the effective role, + // even if checkRoleId == roleId (definer may rely on inherited privileges) + yes, err = verifyPrivilegeWithRoleInheritance(ctx, bh, ses, checkRoleId, tempEntry, enableCache) + if err != nil { + return false, err + } + } else { + useCache := enableCache && cache != nil && checkRoleId == roleId + cacheToUse := cache + if !useCache { + cacheToUse = nil + } + yes, err = verifyPrivilegeEntryInMultiPrivilegeLevels(ctx, bh, ses, cacheToUse, checkRoleId, tempEntry, pls, useCache) + if err != nil { + return false, err + } + } } } } @@ -7117,6 +7919,21 @@ func authenticateUserCanExecuteStatementWithObjectTypeDatabaseAndTable(ctx conte return true, stats, nil } arr := extractPrivilegeTipsFromPlan(p) + if len(arr) == 0 { + if ins, ok := stmt.(*tree.Insert); ok { + dbName, tableName, ok := getInsertTargetTableName(ins, ses) + if ok { + arr = append(arr, privilegeTips{ + typ: PrivilegeTypeInsert, + objType: objectTypeTable, + databaseName: dbName, + tableName: tableName, + isClusterTable: isClusterTable(dbName, tableName), + clusterTableOperation: clusterTableModify, + }) + } + } + } if len(arr) == 0 { return true, stats, nil } @@ -7132,6 +7949,29 @@ func authenticateUserCanExecuteStatementWithObjectTypeDatabaseAndTable(ctx conte return true, stats, nil } +func getInsertTargetTableName(stmt *tree.Insert, ses *Session) (string, string, bool) { + if stmt == nil || stmt.Table == nil { + return "", "", false + } + var tbl tree.TableExpr = stmt.Table + if alias, ok := tbl.(*tree.AliasedTableExpr); ok { + tbl = alias.Expr + } + name, ok := tbl.(*tree.TableName) + if !ok || name == nil { + return "", "", false + } + dbName := string(name.SchemaName) + if dbName == "" { + dbName = ses.GetDatabaseName() + } + tableName := string(name.ObjectName) + if dbName == "" || tableName == "" { + return "", "", false + } + return dbName, tableName, true +} + func authenticateCreateTableAsSelectSourcePrivilege( ctx context.Context, ses *Session, @@ -7173,18 +8013,22 @@ func formSqlFromGrantPrivilege(ctx context.Context, ses *Session, gp *tree.Grant return "", err } switch gp.ObjType { - case tree.OBJECT_TYPE_TABLE: + case tree.OBJECT_TYPE_TABLE, tree.OBJECT_TYPE_VIEW: + objType := objectTypeTable + if gp.ObjType == tree.OBJECT_TYPE_VIEW { + objType = objectTypeView + } switch gp.Level.Level { case tree.PRIVILEGE_LEVEL_TYPE_STAR: - sql, err = getSqlForCheckWithGrantOptionForTableDatabaseStar(ctx, int64(tenant.GetDefaultRoleID()), privType, ses.GetDatabaseName()) + sql, err = getSqlForCheckWithGrantOptionForTableDatabaseStarWithObjType(ctx, objType, int64(tenant.GetDefaultRoleID()), privType, ses.GetDatabaseName()) case tree.PRIVILEGE_LEVEL_TYPE_STAR_STAR: - sql = getSqlForCheckWithGrantOptionForTableStarStar(int64(tenant.GetDefaultRoleID()), privType) + sql = getSqlForCheckWithGrantOptionForTableStarStarWithObjType(objType, int64(tenant.GetDefaultRoleID()), privType) case tree.PRIVILEGE_LEVEL_TYPE_DATABASE_STAR: - sql, err = getSqlForCheckWithGrantOptionForTableDatabaseStar(ctx, int64(tenant.GetDefaultRoleID()), privType, gp.Level.DbName) + sql, err = getSqlForCheckWithGrantOptionForTableDatabaseStarWithObjType(ctx, objType, int64(tenant.GetDefaultRoleID()), privType, gp.Level.DbName) case tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE: - sql, err = getSqlForCheckWithGrantOptionForTableDatabaseTable(ctx, int64(tenant.GetDefaultRoleID()), privType, gp.Level.DbName, gp.Level.TabName) + sql, err = getSqlForCheckWithGrantOptionForTableDatabaseTableWithObjType(ctx, objType, int64(tenant.GetDefaultRoleID()), privType, gp.Level.DbName, gp.Level.TabName) case tree.PRIVILEGE_LEVEL_TYPE_TABLE: - sql, err = getSqlForCheckWithGrantOptionForTableDatabaseTable(ctx, int64(tenant.GetDefaultRoleID()), privType, ses.GetDatabaseName(), gp.Level.TabName) + sql, err = getSqlForCheckWithGrantOptionForTableDatabaseTableWithObjType(ctx, objType, int64(tenant.GetDefaultRoleID()), privType, ses.GetDatabaseName(), gp.Level.TabName) default: return "", moerr.NewInternalErrorf(ctx, "in object type %v privilege level type %v is unsupported", gp.ObjType, gp.Level.Level) } @@ -7338,6 +8182,169 @@ func getRoleSetThatPrivilegeGrantedToWGO(ctx context.Context, bh BackgroundExec, return rset, err } +// getRoleSetThatPrivilegeGrantedToWGOScoped is like getRoleSetThatPrivilegeGrantedToWGO but +// for table/view-level privileges with a specific object target, it adds obj_type/obj_id filtering. +// For non-table/view privileges, it falls back to the unscoped version. +func getRoleSetThatPrivilegeGrantedToWGOScoped( + ctx context.Context, + ses *Session, + bh BackgroundExec, + privType PrivilegeType, + astObjType tree.ObjectType, + level tree.PrivilegeLevel, +) (*btree.Set[int64], error) { + scope := privType.Scope() + if scope != PrivilegeScopeTable || + (astObjType != tree.OBJECT_TYPE_TABLE && astObjType != tree.OBJECT_TYPE_VIEW) { + return getRoleSetThatPrivilegeGrantedToWGO(ctx, bh, privType) + } + + if astObjType == tree.OBJECT_TYPE_VIEW { + roleSet, err := getRoleSetThatPrivilegeGrantedToWGOScopedWithObjectType( + ctx, ses, bh, privType, astObjType, objectTypeView, level) + if err != nil { + return nil, err + } + legacyRoleSet, err := getRoleSetThatPrivilegeGrantedToWGOScopedWithObjectType( + ctx, ses, bh, privType, astObjType, objectTypeTable, level) + if err != nil { + return nil, err + } + mergeRoleSets(roleSet, legacyRoleSet) + return roleSet, nil + } + + objType, err := convertAstObjectTypeToObjectType(ctx, astObjType) + if err != nil { + return nil, err + } + return getRoleSetThatPrivilegeGrantedToWGOScopedWithObjectType(ctx, ses, bh, privType, astObjType, objType, level) +} + +func getRoleSetThatPrivilegeGrantedToWGOScopedWithObjectType( + ctx context.Context, + ses *Session, + bh BackgroundExec, + privType PrivilegeType, + astObjType tree.ObjectType, + objType objectType, + level tree.PrivilegeLevel, +) (*btree.Set[int64], error) { + // For specific named objects (db.table, table) and database-scoped wildcards (db.*), + // keep the resolved object id so WGO cannot leak across databases. + if level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE || + level.Level == tree.PRIVILEGE_LEVEL_TYPE_TABLE || + level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_STAR { + _, objId, err := checkPrivilegeObjectTypeAndPrivilegeLevel(ctx, ses, bh, astObjType, level) + if err != nil { + // If we can't resolve the object, fall back to obj_type-only check + return getRoleSetThatPrivilegeGrantedToWGOWithObjType(ctx, bh, privType, objType) + } + return getRoleSetThatPrivilegeGrantedToWGOWithObj(ctx, bh, privType, objType, objId) + } + + // For wildcard levels (*, *.*, db.*), filter by obj_type only + return getRoleSetThatPrivilegeGrantedToWGOWithObjType(ctx, bh, privType, objType) +} + +func mergeRoleSets(dst, src *btree.Set[int64]) { + if dst == nil || src == nil { + return + } + for _, id := range src.Keys() { + dst.Insert(id) + } +} + +// getRoleSetThatPrivilegeGrantedToWGOWithObj gets roles with WGO on a specific object. +func getRoleSetThatPrivilegeGrantedToWGOWithObj( + ctx context.Context, + bh BackgroundExec, + privType PrivilegeType, + objType objectType, + objId int64, +) (*btree.Set[int64], error) { + var sql string + switch privType { + case PrivilegeTypeSelect, PrivilegeTypeInsert, PrivilegeTypeUpdate, + PrivilegeTypeTruncate, PrivilegeTypeDelete, PrivilegeTypeReference, + PrivilegeTypeIndex, PrivilegeTypeValues: + sql = getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), objType, objId) + case PrivilegeTypeTableAll: + sql = getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), objType, objId) + case PrivilegeTypeTableOwnership: + sql = getSqlForCheckRoleHasPrivilegeWGOWithObj(int64(privType), objType, objId) + default: + // fallback for non-table privileges + sql = getSqlForCheckRoleHasPrivilegeWGODependsOnPrivType(privType) + } + + rset := &btree.Set[int64]{} + bh.ClearExecResultSet() + err := bh.Exec(ctx, sql) + if err != nil { + return nil, err + } + erArray, err := getResultSet(ctx, bh) + if err != nil { + return nil, err + } + if execResultArrayHasData(erArray) { + for i := uint64(0); i < erArray[0].GetRowCount(); i++ { + id, err := erArray[0].GetInt64(ctx, i, 0) + if err != nil { + return nil, err + } + rset.Insert(id) + } + } + return rset, err +} + +// getRoleSetThatPrivilegeGrantedToWGOWithObjType gets roles with WGO filtered by obj_type only (for wildcard grants). +func getRoleSetThatPrivilegeGrantedToWGOWithObjType( + ctx context.Context, + bh BackgroundExec, + privType PrivilegeType, + objType objectType, +) (*btree.Set[int64], error) { + var sql string + switch privType { + case PrivilegeTypeSelect, PrivilegeTypeInsert, PrivilegeTypeUpdate, + PrivilegeTypeTruncate, PrivilegeTypeDelete, PrivilegeTypeReference, + PrivilegeTypeIndex, PrivilegeTypeValues, PrivilegeTypeTableAll: + sql = getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObjType( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), objType) + case PrivilegeTypeTableOwnership: + sql = getSqlForCheckRoleHasPrivilegeWGOWithObjType(int64(privType), objType) + default: + sql = getSqlForCheckRoleHasPrivilegeWGODependsOnPrivType(privType) + } + + rset := &btree.Set[int64]{} + bh.ClearExecResultSet() + err := bh.Exec(ctx, sql) + if err != nil { + return nil, err + } + erArray, err := getResultSet(ctx, bh) + if err != nil { + return nil, err + } + if execResultArrayHasData(erArray) { + for i := uint64(0); i < erArray[0].GetRowCount(); i++ { + id, err := erArray[0].GetInt64(ctx, i, 0) + if err != nil { + return nil, err + } + rset.Insert(id) + } + } + return rset, err +} + // setIsIntersected decides the A is intersecting the B. func setIsIntersected(A, B *btree.Set[int64]) bool { if A.Len() > B.Len() { @@ -7406,7 +8413,8 @@ func determineUserCanGrantPrivilegesToOthers(ctx context.Context, ses *Session, } //call the algorithm 3. - roleSetOfPrivilegeGrantedToWGO, err = getRoleSetThatPrivilegeGrantedToWGO(ctx, bh, privType) + // For table/view-level privileges with a specific object, use object-scoped WGO check + roleSetOfPrivilegeGrantedToWGO, err = getRoleSetThatPrivilegeGrantedToWGOScoped(ctx, ses, bh, privType, gp.ObjType, *gp.Level) if err != nil { return false, stats, err } @@ -7491,7 +8499,7 @@ func convertAstPrivilegeTypeToPrivilegeType(ctx context.Context, priv tree.Privi privType = PrivilegeTypeAccountAll case tree.OBJECT_TYPE_DATABASE: privType = PrivilegeTypeDatabaseAll - case tree.OBJECT_TYPE_TABLE: + case tree.OBJECT_TYPE_TABLE, tree.OBJECT_TYPE_VIEW: privType = PrivilegeTypeTableAll default: return 0, moerr.NewInternalErrorf(ctx, `the object type "%s" do not support the privilege "%s"`, ot.String(), priv.ToString()) @@ -7500,7 +8508,7 @@ func convertAstPrivilegeTypeToPrivilegeType(ctx context.Context, priv tree.Privi switch ot { case tree.OBJECT_TYPE_DATABASE: privType = PrivilegeTypeDatabaseOwnership - case tree.OBJECT_TYPE_TABLE: + case tree.OBJECT_TYPE_TABLE, tree.OBJECT_TYPE_VIEW: privType = PrivilegeTypeTableOwnership default: return 0, moerr.NewInternalErrorf(ctx, `the object type "%s" do not support the privilege "%s"`, ot.String(), priv.ToString()) diff --git a/pkg/frontend/authenticate2.go b/pkg/frontend/authenticate2.go index b47fa4a39203d..2326a21977983 100644 --- a/pkg/frontend/authenticate2.go +++ b/pkg/frontend/authenticate2.go @@ -16,6 +16,7 @@ package frontend import ( "context" + "strings" "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/pb/plan" @@ -59,6 +60,7 @@ func verifyLightPrivilege(ses *Session, if len(dbName) == 0 { dbName = ses.GetDatabaseName() } + dbName = strings.ToLower(dbName) if ok2 := isBannedDatabase(dbName); ok2 { if isClusterTable { ok = verifyAccountCanOperateClusterTable(ses.GetTenantInfo(), dbName, clusterTableOperation) @@ -170,6 +172,9 @@ var checkPrivilegeInCache = func(ctx context.Context, ses *Session, priv *privil // } yes = false } else { + if len(mi.originViews) > 0 || mi.directView != "" { + return false, nil + } tempEntry := privilegeEntriesMap[mi.privilegeTyp] tempEntry.databaseName = mi.dbName tempEntry.tableName = mi.tableName @@ -180,9 +185,13 @@ var checkPrivilegeInCache = func(ctx context.Context, ses *Session, priv *privil return false, err } + writeDirectly := priv.writeDatabaseAndTableDirectly + if (tempEntry.objType == objectTypeTable || tempEntry.objType == objectTypeView) && mi.privilegeTyp == PrivilegeTypeSelect { + writeDirectly = false + } yes2 = verifyLightPrivilege(ses, tempEntry.databaseName, - priv.writeDatabaseAndTableDirectly, + writeDirectly, mi.isClusterTable, mi.clusterTableOperation) diff --git a/pkg/frontend/authenticate_test.go b/pkg/frontend/authenticate_test.go index 3d573e21e5fe8..4ccd7217c25f6 100644 --- a/pkg/frontend/authenticate_test.go +++ b/pkg/frontend/authenticate_test.go @@ -17,6 +17,7 @@ package frontend import ( "bytes" "context" + "encoding/json" "fmt" "reflect" "strings" @@ -1888,7 +1889,9 @@ func Test_determineGrantPrivilege(t *testing.T) { }, ObjType: tree.OBJECT_TYPE_TABLE, Level: &tree.PrivilegeLevel{ - Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE, + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE, + DbName: "db", + TabName: "t1", }, }, { @@ -1898,7 +1901,8 @@ func Test_determineGrantPrivilege(t *testing.T) { }, ObjType: tree.OBJECT_TYPE_TABLE, Level: &tree.PrivilegeLevel{ - Level: tree.PRIVILEGE_LEVEL_TYPE_TABLE, + Level: tree.PRIVILEGE_LEVEL_TYPE_TABLE, + TabName: "t1", }, }, } @@ -1917,6 +1921,30 @@ func Test_determineGrantPrivilege(t *testing.T) { ses.SetDatabaseName("db") //TODO: make sql2result bh.init() + + // Mock getDatabaseOrTableId for DATABASE_TABLE and TABLE levels + if stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE || + stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_TABLE { + dbName := stmt.Level.DbName + tabName := stmt.Level.TabName + if dbName == "" { + dbName = ses.GetDatabaseName() + } + checkSql, _ := getSqlForCheckDatabaseTable(ses.GetTxnHandler().GetTxnCtx(), dbName, tabName) + bh.sql2result[checkSql] = newMrsForCheckDatabaseTable([][]interface{}{{10001}}) + + // Mock scoped WGO queries + for _, p := range stmt.Privileges { + privType, _ := convertAstPrivilegeTypeToPrivilegeType(context.TODO(), p.Type, stmt.ObjType) + scopedSql := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeTable, 10001) + bh.sql2result[scopedSql] = newMrsForPrivilegeWGO([][]interface{}{ + {ses.GetTenantInfo().GetDefaultRoleID()}, + }) + } + } + for _, p := range stmt.Privileges { sql, err := formSqlFromGrantPrivilege(context.TODO(), ses, stmt, p) convey.So(err, convey.ShouldBeNil) @@ -1927,13 +1955,22 @@ func Test_determineGrantPrivilege(t *testing.T) { var privType PrivilegeType privType, err = convertAstPrivilegeTypeToPrivilegeType(context.TODO(), p.Type, stmt.ObjType) convey.So(err, convey.ShouldBeNil) - sql = getSqlForCheckRoleHasPrivilegeWGODependsOnPrivType(privType) - rows := [][]interface{}{ - {ses.GetTenantInfo().GetDefaultRoleID()}, - } + // For DATABASE_TABLE/TABLE levels, only the scoped WGO query (mocked above) should succeed. + // Leave the unscoped query empty so a fallback to the old path would fail. + unscopedSql := getSqlForCheckRoleHasPrivilegeWGODependsOnPrivType(privType) + bh.sql2result[unscopedSql] = newMrsForPrivilegeWGO([][]interface{}{}) - bh.sql2result[sql] = newMrsForPrivilegeWGO(rows) + // Mock obj_type-scoped WGO query for wildcard levels (*, *.*, db.*) + objType := objectTypeTable + if stmt.ObjType == tree.OBJECT_TYPE_VIEW { + objType = objectTypeView + } + objTypeScopedSql := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObjType( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), objType) + bh.sql2result[objTypeScopedSql] = newMrsForPrivilegeWGO([][]interface{}{ + {ses.GetTenantInfo().GetDefaultRoleID()}, + }) } ok, _, err := authenticateUserCanExecuteStatementWithObjectTypeNone(ses.GetTxnHandler().GetTxnCtx(), ses, stmt) @@ -1990,7 +2027,9 @@ func Test_determineGrantPrivilege(t *testing.T) { }, ObjType: tree.OBJECT_TYPE_TABLE, Level: &tree.PrivilegeLevel{ - Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE, + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE, + DbName: "db", + TabName: "t1", }, }, { @@ -2000,7 +2039,8 @@ func Test_determineGrantPrivilege(t *testing.T) { }, ObjType: tree.OBJECT_TYPE_TABLE, Level: &tree.PrivilegeLevel{ - Level: tree.PRIVILEGE_LEVEL_TYPE_TABLE, + Level: tree.PRIVILEGE_LEVEL_TYPE_TABLE, + TabName: "t1", }, }, } @@ -2019,6 +2059,28 @@ func Test_determineGrantPrivilege(t *testing.T) { ses.SetDatabaseName("db") //TODO: make sql2result bh.init() + + // Mock getDatabaseOrTableId for DATABASE_TABLE and TABLE levels + if stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE || + stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_TABLE { + dbName := stmt.Level.DbName + tabName := stmt.Level.TabName + if dbName == "" { + dbName = ses.GetDatabaseName() + } + checkSql, _ := getSqlForCheckDatabaseTable(ses.GetTxnHandler().GetTxnCtx(), dbName, tabName) + bh.sql2result[checkSql] = newMrsForCheckDatabaseTable([][]interface{}{{10001}}) + + // Mock scoped WGO queries (empty = no WGO, to match fail scenario) + for _, p := range stmt.Privileges { + privType, _ := convertAstPrivilegeTypeToPrivilegeType(context.TODO(), p.Type, stmt.ObjType) + scopedSql := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeTable, 10001) + bh.sql2result[scopedSql] = newMrsForPrivilegeWGO([][]interface{}{}) + } + } + var privType PrivilegeType for i, p := range stmt.Privileges { sql, err := formSqlFromGrantPrivilege(context.TODO(), ses, stmt, p) @@ -2035,16 +2097,40 @@ func Test_determineGrantPrivilege(t *testing.T) { privType, err = convertAstPrivilegeTypeToPrivilegeType(context.TODO(), p.Type, stmt.ObjType) convey.So(err, convey.ShouldBeNil) + + // Mock unscoped query (empty to ensure new paths are used) sql = getSqlForCheckRoleHasPrivilegeWGODependsOnPrivType(privType) + bh.sql2result[sql] = newMrsForPrivilegeWGO([][]interface{}{}) + + // Mock obj_type-scoped WGO query for wildcard levels + objType := objectTypeTable + if stmt.ObjType == tree.OBJECT_TYPE_VIEW { + objType = objectTypeView + } + objTypeScopedSql := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObjType( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), objType) if i == 0 { - rows = [][]interface{}{} + bh.sql2result[objTypeScopedSql] = newMrsForPrivilegeWGO([][]interface{}{}) } else { - rows = [][]interface{}{ + bh.sql2result[objTypeScopedSql] = newMrsForPrivilegeWGO([][]interface{}{ {ses.GetTenantInfo().GetDefaultRoleID()}, - } + }) } - bh.sql2result[sql] = newMrsForPrivilegeWGO(rows) + // Mock obj-scoped WGO query for DATABASE_TABLE/TABLE levels + if stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE || + stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_TABLE { + scopedSql := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(privType), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeTable, 10001) + if i == 0 { + bh.sql2result[scopedSql] = newMrsForPrivilegeWGO([][]interface{}{}) + } else { + bh.sql2result[scopedSql] = newMrsForPrivilegeWGO([][]interface{}{ + {ses.GetTenantInfo().GetDefaultRoleID()}, + }) + } + } } ok, _, err := authenticateUserCanExecuteStatementWithObjectTypeNone(ses.GetTxnHandler().GetTxnCtx(), ses, stmt) @@ -5190,6 +5276,140 @@ func Test_doGrantPrivilege(t *testing.T) { } } + err = doGrantPrivilege(ses.GetTxnHandler().GetTxnCtx(), ses, stmt, bh) + convey.So(err, convey.ShouldBeNil) + } + }) + convey.Convey("grant view, role succ", t, func() { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + bh := &backgroundExecTest{} + bh.init() + + bhStub := gostub.StubFunc(&NewBackgroundExec, bh) + defer bhStub.Reset() + + dbName := "d" + tableName := "v" + stmts := []*tree.GrantPrivilege{ + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_STAR, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_STAR_STAR, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_STAR, + DbName: dbName, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE, + DbName: dbName, + TabName: tableName, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_TABLE, + TabName: tableName, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + } + + ctx := context.WithValue(context.TODO(), defines.TenantIDKey{}, uint32(sysAccountID)) + + for _, stmt := range stmts { + priv := determinePrivilegeSetOfStatement(stmt) + ses := newSes(priv, ctrl) + ses.SetDatabaseName("d") + + bh.sql2result["begin;"] = nil + bh.sql2result["commit;"] = nil + bh.sql2result["rollback;"] = nil + + for i, role := range stmt.Roles { + sql, _ := getSqlForRoleIdOfRole(context.TODO(), role.UserName) + mrs := newMrsForRoleIdOfRole([][]interface{}{ + {i}, + }) + bh.sql2result[sql] = mrs + } + + objType, err := convertAstObjectTypeToObjectType(context.TODO(), stmt.ObjType) + convey.So(err, convey.ShouldBeNil) + + if stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_STAR || + stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_STAR { + sql, _ := getSqlForCheckDatabase(context.TODO(), dbName) + mrs := newMrsForCheckDatabase([][]interface{}{ + {0}, + }) + bh.sql2result[sql] = mrs + } else if stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_TABLE || + stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE { + sql, _ := getSqlForCheckDatabaseView(ctx, dbName, tableName) + mrs := newMrsForCheckDatabaseTable([][]interface{}{ + {0}, + }) + bh.sql2result[sql] = mrs + } + + _, objId, err := checkPrivilegeObjectTypeAndPrivilegeLevel(ctx, ses, bh, stmt.ObjType, *stmt.Level) + convey.So(err, convey.ShouldBeNil) + + for _, p := range stmt.Privileges { + privType, err := convertAstPrivilegeTypeToPrivilegeType(context.TODO(), p.Type, stmt.ObjType) + convey.So(err, convey.ShouldBeNil) + for j := range stmt.Roles { + sql := getSqlForCheckRoleHasPrivilege(int64(j), objType, objId, int64(privType)) + mrs := newMrsForCheckRoleHasPrivilege([][]interface{}{}) + bh.sql2result[sql] = mrs + } + } + err = doGrantPrivilege(ses.GetTxnHandler().GetTxnCtx(), ses, stmt, bh) convey.So(err, convey.ShouldBeNil) } @@ -5494,6 +5714,140 @@ func Test_doRevokePrivilege(t *testing.T) { } } + err = doRevokePrivilege(ses.GetTxnHandler().GetTxnCtx(), ses, stmt, bh) + convey.So(err, convey.ShouldBeNil) + } + }) + convey.Convey("revoke view, role succ", t, func() { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + bh := &backgroundExecTest{} + bh.init() + + bhStub := gostub.StubFunc(&NewBackgroundExec, bh) + defer bhStub.Reset() + + dbName := "d" + tableName := "v" + stmts := []*tree.RevokePrivilege{ + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_STAR, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_STAR_STAR, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_STAR, + DbName: dbName, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE, + DbName: dbName, + TabName: tableName, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + { + Privileges: []*tree.Privilege{ + {Type: tree.PRIVILEGE_TYPE_STATIC_SELECT}, + }, + ObjType: tree.OBJECT_TYPE_VIEW, + Level: &tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_TABLE, + TabName: tableName, + }, + Roles: []*tree.Role{ + {UserName: "r1"}, + }, + }, + } + + ctx := context.WithValue(context.TODO(), defines.TenantIDKey{}, uint32(sysAccountID)) + + for _, stmt := range stmts { + priv := determinePrivilegeSetOfStatement(stmt) + ses := newSes(priv, ctrl) + ses.SetDatabaseName("d") + + bh.sql2result["begin;"] = nil + bh.sql2result["commit;"] = nil + bh.sql2result["rollback;"] = nil + + for i, role := range stmt.Roles { + sql, _ := getSqlForRoleIdOfRole(context.TODO(), role.UserName) + mrs := newMrsForRoleIdOfRole([][]interface{}{ + {i}, + }) + bh.sql2result[sql] = mrs + } + + objType, err := convertAstObjectTypeToObjectType(context.TODO(), stmt.ObjType) + convey.So(err, convey.ShouldBeNil) + + if stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_STAR || + stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_STAR { + sql, _ := getSqlForCheckDatabase(context.TODO(), dbName) + mrs := newMrsForCheckDatabase([][]interface{}{ + {0}, + }) + bh.sql2result[sql] = mrs + } else if stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_TABLE || + stmt.Level.Level == tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE { + sql, _ := getSqlForCheckDatabaseView(ctx, dbName, tableName) + mrs := newMrsForCheckDatabaseTable([][]interface{}{ + {0}, + }) + bh.sql2result[sql] = mrs + } + + _, objId, err := checkPrivilegeObjectTypeAndPrivilegeLevel(ctx, ses, bh, stmt.ObjType, *stmt.Level) + convey.So(err, convey.ShouldBeNil) + + for _, p := range stmt.Privileges { + privType, err := convertAstPrivilegeTypeToPrivilegeType(context.TODO(), p.Type, stmt.ObjType) + convey.So(err, convey.ShouldBeNil) + for j := range stmt.Roles { + sql := getSqlForCheckRoleHasPrivilege(int64(j), objType, objId, int64(privType)) + mrs := newMrsForCheckRoleHasPrivilege([][]interface{}{}) + bh.sql2result[sql] = mrs + } + } + err = doRevokePrivilege(ses.GetTxnHandler().GetTxnCtx(), ses, stmt, bh) convey.So(err, convey.ShouldBeNil) } @@ -8012,6 +8366,27 @@ func newMrsForCheckDatabaseTable(rows [][]interface{}) *MysqlResultSet { return mrs } +func newMrsForCheckViewMeta(rows [][]interface{}) *MysqlResultSet { + mrs := &MysqlResultSet{} + + col1 := &MysqlColumn{} + col1.SetName("viewdef") + col1.SetColumnType(defines.MYSQL_TYPE_VARCHAR) + + col2 := &MysqlColumn{} + col2.SetName("owner") + col2.SetColumnType(defines.MYSQL_TYPE_LONGLONG) + + mrs.AddColumn(col1) + mrs.AddColumn(col2) + + for _, row := range rows { + mrs.AddRow(row) + } + + return mrs +} + func newMrsForGetAllAccounts(rows [][]interface{}) *MysqlResultSet { mrs := &MysqlResultSet{} @@ -8824,6 +9199,242 @@ func TestGetSqlForCheckRoleHasPrivilegeWGODependsOnPrivType(t *testing.T) { }) } +func TestVerifyViewPrivilegeForRoleFallsBackToLegacyTableGrant(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + ses := newSes(nil, ctrl) + ses.SetDatabaseName("db") + + bh := &backgroundExecTest{} + bh.init() + + ctx := context.Background() + roleID := int64(1001) + + viewPLs, err := getPrivilegeLevelsOfObjectType(ctx, objectTypeView) + require.NoError(t, err) + legacyPLs, err := getPrivilegeLevelsOfObjectType(ctx, objectTypeTable) + require.NoError(t, err) + + privTypes := []PrivilegeType{PrivilegeTypeSelect, PrivilegeTypeTableAll, PrivilegeTypeTableOwnership} + for _, privType := range privTypes { + viewEntry := privilegeEntriesMap[privType] + viewEntry.objType = objectTypeView + viewEntry.databaseName = "db" + viewEntry.tableName = "v" + for _, pl := range viewPLs { + sql, err := getSqlForPrivilege2(ctx, ses, roleID, viewEntry, pl) + require.NoError(t, err) + bh.sql2result[sql] = newMrsForPrivilegeWGO([][]interface{}{}) + } + + legacyEntry := privilegeEntriesMap[privType] + legacyEntry.objType = objectTypeTable + legacyEntry.databaseName = "db" + legacyEntry.tableName = "v" + for i, pl := range legacyPLs { + sql, err := getSqlForPrivilege2(ctx, ses, roleID, legacyEntry, pl) + require.NoError(t, err) + rows := [][]interface{}{} + if privType == PrivilegeTypeSelect && i == 0 { + rows = [][]interface{}{{roleID}} + } + bh.sql2result[sql] = newMrsForPrivilegeWGO(rows) + } + } + + ok, err := verifyViewPrivilegeForRole(ctx, bh, ses, nil, roleID, PrivilegeTypeSelect, "db", "v", false) + require.NoError(t, err) + require.True(t, ok) +} + +func TestGetRoleSetThatPrivilegeGrantedToWGOScopedFallsBackToLegacyViewRecords(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + ses := newSes(nil, ctrl) + ses.SetDatabaseName("db") + + bh := &backgroundExecTest{} + bh.init() + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, uint32(1001)) + roleID := int64(1001) + + checkViewSQL, err := getSqlForCheckDatabaseView(ctx, "db", "v") + require.NoError(t, err) + bh.sql2result[checkViewSQL] = newMrsForCheckDatabaseTable([][]interface{}{{10001}}) + + viewObjSQL := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(PrivilegeTypeSelect), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeView, 10001) + bh.sql2result[viewObjSQL] = newMrsForPrivilegeWGO([][]interface{}{}) + + legacyObjSQL := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(PrivilegeTypeSelect), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeTable, 10001) + bh.sql2result[legacyObjSQL] = newMrsForPrivilegeWGO([][]interface{}{{roleID}}) + + roleSet, err := getRoleSetThatPrivilegeGrantedToWGOScoped( + ctx, + ses, + bh, + PrivilegeTypeSelect, + tree.OBJECT_TYPE_VIEW, + tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_TABLE, + DbName: "db", + TabName: "v", + }, + ) + require.NoError(t, err) + require.True(t, roleSet.Contains(roleID)) +} + +func TestGetRoleSetThatPrivilegeGrantedToWGOScopedKeepsDatabaseScopeForViewDatabaseStar(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + ses := newSes(nil, ctrl) + ses.SetDatabaseName("db1") + + bh := &backgroundExecTest{} + bh.init() + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, uint32(1001)) + roleID := int64(1001) + dbID := int64(20002) + + checkDbSQL, err := getSqlForCheckDatabase(ctx, "db2") + require.NoError(t, err) + bh.sql2result[checkDbSQL] = newMrsForCheckDatabase([][]interface{}{{dbID}}) + + viewScopedSQL := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(PrivilegeTypeSelect), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeView, dbID) + bh.sql2result[viewScopedSQL] = newMrsForPrivilegeWGO([][]interface{}{}) + + legacyScopedSQL := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObj( + int64(PrivilegeTypeSelect), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeTable, dbID) + bh.sql2result[legacyScopedSQL] = newMrsForPrivilegeWGO([][]interface{}{}) + + // 旧实现会错误命中 obj_type 级别结果,把其他数据库上的 db.* WGO 复用到当前库。 + viewObjTypeSQL := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObjType( + int64(PrivilegeTypeSelect), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeView) + bh.sql2result[viewObjTypeSQL] = newMrsForPrivilegeWGO([][]interface{}{{roleID}}) + + legacyObjTypeSQL := getSqlForCheckRoleHasPrivilegeWGOOrWithOwnerShipWithObjType( + int64(PrivilegeTypeSelect), int64(PrivilegeTypeTableAll), int64(PrivilegeTypeTableOwnership), + objectTypeTable) + bh.sql2result[legacyObjTypeSQL] = newMrsForPrivilegeWGO([][]interface{}{{roleID}}) + + roleSet, err := getRoleSetThatPrivilegeGrantedToWGOScoped( + ctx, + ses, + bh, + PrivilegeTypeSelect, + tree.OBJECT_TYPE_VIEW, + tree.PrivilegeLevel{ + Level: tree.PRIVILEGE_LEVEL_TYPE_DATABASE_STAR, + DbName: "db2", + }, + ) + require.NoError(t, err) + require.Zero(t, roleSet.Len()) + require.False(t, roleSet.Contains(roleID)) +} + +func TestResolveViewChainPrivilegeContextSkipsNestedSystemViewPrivilegeChecks(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + ses := newSes(nil, ctrl) + ses.SetDatabaseName("userdb") + + bh := &backgroundExecTest{} + bh.init() + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, uint32(1001)) + roleID := int64(1001) + + viewPLs, err := getPrivilegeLevelsOfObjectType(ctx, objectTypeView) + require.NoError(t, err) + + entry := privilegeEntriesMap[PrivilegeTypeSelect] + entry.objType = objectTypeView + entry.databaseName = "userdb" + entry.tableName = "outer" + for _, pl := range viewPLs { + sql, err := getSqlForPrivilege2(ctx, ses, roleID, entry, pl) + require.NoError(t, err) + bh.sql2result[sql] = newMrsForPrivilegeWGO([][]interface{}{{roleID}}) + } + + outerViewData, err := json.Marshal(plan2.ViewData{ + Stmt: "create view outer as select 1", + DefaultDatabase: "userdb", + SecurityType: "INVOKER", + }) + require.NoError(t, err) + + viewMetaSQL, err := getSqlForCheckViewMeta(ctx, "userdb", "outer") + require.NoError(t, err) + bh.sql2result[viewMetaSQL] = newMrsForCheckViewMeta([][]interface{}{ + {string(outerViewData), roleID}, + }) + + checkRoleID, allowed, skipBaseCheck, err := resolveViewChainPrivilegeContext( + ctx, + bh, + ses, + nil, + roleID, + PrivilegeTypeSelect, + []string{"userdb.outer", "information_schema.inner"}, + "", + nil, + false, + ) + require.NoError(t, err) + require.Equal(t, roleID, checkRoleID) + require.True(t, allowed) + require.False(t, skipBaseCheck) + require.NotContains(t, strings.Join(bh.executedSQLs, "\n"), "information_schema") +} + +func TestPrivilegeCacheGetPrivilegeSetForView(t *testing.T) { + cache := &privilegeCache{} + + starSet := cache.getPrivilegeSet(objectTypeView, privilegeLevelStarStar, "", "") + require.NotNil(t, starSet) + starSet.Insert(PrivilegeTypeSelect) + require.True(t, cache.storeForView[privilegeLevelStarStar].Contains(PrivilegeTypeSelect)) + + dbSet := cache.getPrivilegeSet(objectTypeView, privilegeLevelDatabaseStar, "db", "") + require.NotNil(t, dbSet) + dbSet.Insert(PrivilegeTypeInsert) + dbSet2 := cache.getPrivilegeSet(objectTypeView, privilegeLevelDatabaseStar, "db", "") + require.Same(t, dbSet, dbSet2) + require.True(t, dbSet2.Contains(PrivilegeTypeInsert)) + + viewSet := cache.getPrivilegeSet(objectTypeView, privilegeLevelDatabaseTable, "db", "v") + require.NotNil(t, viewSet) + viewSet.Insert(PrivilegeTypeUpdate) + viewSet2 := cache.getPrivilegeSet(objectTypeView, privilegeLevelDatabaseTable, "db", "v") + require.Same(t, viewSet, viewSet2) + require.True(t, viewSet2.Contains(PrivilegeTypeUpdate)) + + tableLevelViewSet := cache.getPrivilegeSet(objectTypeView, privilegeLevelTable, "db", "v2") + require.NotNil(t, tableLevelViewSet) + tableLevelViewSet.Insert(PrivilegeTypeDelete) + require.True(t, tableLevelViewSet.Contains(PrivilegeTypeDelete)) + + require.Nil(t, cache.getPrivilegeSet(objectTypeView, privilegeLevelDatabase, "db", "v")) +} + func TestDoAlterDatabaseConfig(t *testing.T) { convey.Convey("doAlterDatabaseConfig success", t, func() { ctrl := gomock.NewController(t) diff --git a/pkg/frontend/variables.go b/pkg/frontend/variables.go index 8e9ce2a4a0774..318b8570666cb 100644 --- a/pkg/frontend/variables.go +++ b/pkg/frontend/variables.go @@ -1703,6 +1703,14 @@ var gSysVarsDefs = map[string]SystemVariable{ Type: InitSystemSystemEnumType("default_storage_engine", "InnoDB"), Default: "InnoDB", }, + "view_security_type": { + Name: "view_security_type", + Scope: ScopeSession, + Dynamic: true, + SetVarHintApplies: false, + Type: InitSystemSystemEnumType("view_security_type", "DEFINER", "INVOKER"), + Default: "DEFINER", + }, "default_table_encryption": { Name: "default_table_encryption", Scope: ScopeBoth, diff --git a/pkg/pb/plan/plan.pb.go b/pkg/pb/plan/plan.pb.go index b0ffb147375b9..4802ae68b0efd 100644 --- a/pkg/pb/plan/plan.pb.go +++ b/pkg/pb/plan/plan.pb.go @@ -6361,6 +6361,8 @@ type Node struct { DedupColName string `protobuf:"bytes,67,opt,name=dedup_col_name,json=dedupColName,proto3" json:"dedup_col_name,omitempty"` DedupColTypes []Type `protobuf:"bytes,68,rep,name=dedup_col_types,json=dedupColTypes,proto3" json:"dedup_col_types"` RollupFilter bool `protobuf:"varint,69,opt,name=rollup_filter,json=rollupFilter,proto3" json:"rollup_filter,omitempty"` + OriginViews []string `protobuf:"bytes,71,rep,name=origin_views,json=originViews,proto3" json:"origin_views,omitempty"` + DirectView string `protobuf:"bytes,72,opt,name=direct_view,json=directView,proto3" json:"direct_view,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -6882,6 +6884,20 @@ func (m *Node) GetRollupFilter() bool { return false } +func (m *Node) GetOriginViews() []string { + if m != nil { + return m.OriginViews + } + return nil +} + +func (m *Node) GetDirectView() string { + if m != nil { + return m.DirectView + } + return "" +} + type SnapshotExtraInfo struct { Level string `protobuf:"bytes,1,opt,name=Level,proto3" json:"Level,omitempty"` ObjId uint64 `protobuf:"varint,2,opt,name=ObjId,proto3" json:"ObjId,omitempty"` @@ -13064,788 +13080,790 @@ func init() { func init() { proto.RegisterFile("plan.proto", fileDescriptor_2d655ab2f7683c23) } var fileDescriptor_2d655ab2f7683c23 = []byte{ - // 12489 bytes of a gzipped FileDescriptorProto + // 12523 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0xbd, 0x5d, 0x8c, 0x23, 0x59, - 0x96, 0x10, 0x9c, 0x4e, 0xff, 0x1f, 0xff, 0x64, 0xe4, 0xad, 0xac, 0x2a, 0xd7, 0x4f, 0x57, 0x65, - 0x45, 0x55, 0x57, 0xd7, 0x54, 0x77, 0x67, 0x75, 0x57, 0xf5, 0x4f, 0xf5, 0xec, 0xcc, 0xce, 0x38, - 0x9d, 0xce, 0x4a, 0x4f, 0x39, 0xed, 0x9c, 0xb0, 0xb3, 0xaa, 0x7b, 0xf6, 0x5b, 0x85, 0xc2, 0x8e, - 0x70, 0x66, 0x74, 0x86, 0x23, 0xdc, 0x11, 0xe1, 0xca, 0xcc, 0x96, 0x56, 0xdf, 0x08, 0xa4, 0x5d, - 0x16, 0x5e, 0x90, 0xd0, 0x2e, 0x3c, 0xb0, 0xd2, 0xec, 0x4a, 0x08, 0x84, 0x40, 0x02, 0x69, 0xd1, - 0xf2, 0xc2, 0x13, 0x2f, 0x0b, 0x88, 0x05, 0x69, 0x25, 0x10, 0x20, 0x2d, 0x68, 0x78, 0x43, 0x42, - 0x80, 0xe0, 0x1d, 0x74, 0xce, 0xbd, 0x11, 0xbe, 0x61, 0x3b, 0xbb, 0xba, 0x7b, 0x66, 0x25, 0x78, - 0xc9, 0x8c, 0x7b, 0x7e, 0xee, 0xff, 0x3d, 0xf7, 0x9c, 0x73, 0xcf, 0xbd, 0x06, 0x98, 0x38, 0x86, - 0xbb, 0x35, 0xf1, 0xbd, 0xd0, 0x63, 0x19, 0xfc, 0xbe, 0xfe, 0xee, 0x91, 0x1d, 0x1e, 0x4f, 0x07, - 0x5b, 0x43, 0x6f, 0xfc, 0xe8, 0xc8, 0x3b, 0xf2, 0x1e, 0x11, 0x72, 0x30, 0x1d, 0x51, 0x8a, 0x12, - 0xf4, 0xc5, 0x99, 0xae, 0x83, 0xe3, 0x0d, 0x4f, 0xc4, 0xf7, 0x5a, 0x68, 0x8f, 0xad, 0x20, 0x34, - 0xc6, 0x13, 0x0e, 0x50, 0xff, 0x28, 0x05, 0x99, 0xfe, 0xf9, 0xc4, 0x62, 0x55, 0x58, 0xb5, 0xcd, - 0x5a, 0x6a, 0x33, 0xf5, 0x20, 0xab, 0xad, 0xda, 0x26, 0xdb, 0x84, 0x92, 0xeb, 0x85, 0x9d, 0xa9, - 0xe3, 0x18, 0x03, 0xc7, 0xaa, 0xad, 0x6e, 0xa6, 0x1e, 0x14, 0x34, 0x19, 0xc4, 0x6e, 0x40, 0xd1, - 0x98, 0x86, 0x9e, 0x6e, 0xbb, 0x43, 0xbf, 0x96, 0x26, 0x7c, 0x01, 0x01, 0x2d, 0x77, 0xe8, 0xb3, - 0x0d, 0xc8, 0x9e, 0xda, 0x66, 0x78, 0x5c, 0xcb, 0x50, 0x8e, 0x3c, 0x81, 0xd0, 0x60, 0x68, 0x38, - 0x56, 0x2d, 0xcb, 0xa1, 0x94, 0x40, 0x68, 0x48, 0x85, 0xe4, 0x36, 0x53, 0x0f, 0x8a, 0x1a, 0x4f, - 0xb0, 0x5b, 0x00, 0x96, 0x3b, 0x1d, 0xbf, 0x32, 0x9c, 0xa9, 0x15, 0xd4, 0xf2, 0x84, 0x92, 0x20, - 0xea, 0x0f, 0xa0, 0x38, 0x0e, 0x8e, 0xf6, 0x2c, 0xc3, 0xb4, 0x7c, 0x76, 0x15, 0xf2, 0xe3, 0xe0, - 0x48, 0x0f, 0x8d, 0x23, 0xd1, 0x84, 0xdc, 0x38, 0x38, 0xea, 0x1b, 0x47, 0xec, 0x1a, 0x14, 0x08, - 0x71, 0x3e, 0xe1, 0x6d, 0xc8, 0x6a, 0x48, 0x88, 0x2d, 0x56, 0x7f, 0x3b, 0x07, 0xf9, 0xb6, 0x1d, - 0x5a, 0xbe, 0xe1, 0xb0, 0x2b, 0x90, 0xb3, 0x03, 0x77, 0xea, 0x38, 0xc4, 0x5e, 0xd0, 0x44, 0x8a, - 0x5d, 0x81, 0xac, 0xfd, 0xf4, 0x95, 0xe1, 0x70, 0xde, 0xbd, 0x15, 0x8d, 0x27, 0x59, 0x0d, 0x72, - 0xf6, 0xfb, 0x1f, 0x21, 0x22, 0x2d, 0x10, 0x22, 0x4d, 0x98, 0x27, 0x8f, 0x11, 0x93, 0x89, 0x31, - 0x94, 0x26, 0xcc, 0x47, 0x1f, 0x20, 0x06, 0x5b, 0x9f, 0x26, 0x0c, 0xa5, 0xb1, 0x94, 0x29, 0x95, - 0x82, 0x1d, 0x50, 0xc1, 0x52, 0xa6, 0x51, 0x29, 0x53, 0x5e, 0x4a, 0x5e, 0x20, 0x44, 0x9a, 0x30, - 0xbc, 0x94, 0x42, 0x8c, 0x89, 0x4b, 0x99, 0xf2, 0x52, 0x8a, 0x9b, 0xa9, 0x07, 0x19, 0xc2, 0xf0, - 0x52, 0x36, 0x20, 0x63, 0x22, 0x1c, 0x36, 0x53, 0x0f, 0x52, 0x7b, 0x2b, 0x1a, 0xa5, 0x10, 0x1a, - 0x20, 0xb4, 0x84, 0x1d, 0x8c, 0xd0, 0x40, 0x40, 0x07, 0x08, 0x2d, 0x63, 0x6f, 0x20, 0x74, 0x20, - 0xa0, 0x23, 0x84, 0x56, 0x36, 0x53, 0x0f, 0x56, 0x11, 0x8a, 0x29, 0x76, 0x1d, 0xf2, 0xa6, 0x11, - 0x5a, 0x88, 0xa8, 0x8a, 0x26, 0x47, 0x00, 0xc4, 0xe1, 0x8c, 0x43, 0xdc, 0x9a, 0x68, 0x74, 0x04, - 0x60, 0x2a, 0x94, 0x90, 0x2c, 0xc2, 0x2b, 0x02, 0x2f, 0x03, 0xd9, 0x87, 0x50, 0x36, 0xad, 0xa1, - 0x3d, 0x36, 0x1c, 0xde, 0xa6, 0xf5, 0xcd, 0xd4, 0x83, 0xd2, 0xe3, 0xb5, 0x2d, 0x5a, 0x13, 0x31, - 0x66, 0x6f, 0x45, 0x4b, 0x90, 0xb1, 0xa7, 0x50, 0x11, 0xe9, 0xf7, 0x1f, 0x53, 0xc7, 0x32, 0xe2, - 0x53, 0x12, 0x7c, 0xef, 0x3f, 0x7e, 0xba, 0xb7, 0xa2, 0x25, 0x09, 0xd9, 0x3d, 0x28, 0xc7, 0x4b, - 0x04, 0x19, 0x2f, 0x89, 0x5a, 0x25, 0xa0, 0xd8, 0xac, 0xcf, 0x03, 0xcf, 0x45, 0x82, 0x0d, 0xd1, - 0x6f, 0x11, 0x80, 0x6d, 0x02, 0x98, 0xd6, 0xc8, 0x98, 0x3a, 0x21, 0xa2, 0x2f, 0x8b, 0x0e, 0x94, - 0x60, 0xec, 0x16, 0x14, 0xa7, 0x13, 0x6c, 0xe5, 0x0b, 0xc3, 0xa9, 0x5d, 0x11, 0x04, 0x33, 0x10, - 0xe6, 0x8e, 0xf3, 0x1c, 0xb1, 0x57, 0xc5, 0xe8, 0x46, 0x00, 0x1c, 0xde, 0x57, 0xd6, 0x10, 0x51, - 0x35, 0x51, 0xb0, 0x48, 0xe3, 0x2a, 0xb2, 0x83, 0x6d, 0xdb, 0xad, 0x5d, 0xa3, 0x19, 0xcc, 0x13, - 0xec, 0x26, 0xa4, 0x03, 0x7f, 0x58, 0xbb, 0x4e, 0xed, 0x07, 0xde, 0xfe, 0xe6, 0xd9, 0xc4, 0xd7, - 0x10, 0xbc, 0x9d, 0x87, 0x2c, 0xad, 0x26, 0xf5, 0x26, 0x14, 0x0e, 0x0c, 0xdf, 0x18, 0x6b, 0xd6, - 0x88, 0x29, 0x90, 0x9e, 0x78, 0x81, 0x58, 0x47, 0xf8, 0xa9, 0xb6, 0x21, 0xf7, 0xc2, 0xf0, 0x11, - 0xc7, 0x20, 0xe3, 0x1a, 0x63, 0x8b, 0x90, 0x45, 0x8d, 0xbe, 0x71, 0xed, 0x04, 0xe7, 0x41, 0x68, - 0x8d, 0x85, 0x90, 0x10, 0x29, 0x84, 0x1f, 0x39, 0xde, 0x40, 0xac, 0x91, 0x82, 0x26, 0x52, 0xea, - 0x5f, 0x48, 0x41, 0xae, 0xe1, 0x39, 0x98, 0xdd, 0x55, 0xc8, 0xfb, 0x96, 0xa3, 0xcf, 0x8a, 0xcb, - 0xf9, 0x96, 0x73, 0xe0, 0x05, 0x88, 0x18, 0x7a, 0x1c, 0xc1, 0x57, 0x6d, 0x6e, 0xe8, 0x11, 0x22, - 0xaa, 0x40, 0x5a, 0xaa, 0xc0, 0x35, 0x28, 0x84, 0x03, 0x47, 0x27, 0x78, 0x86, 0xe0, 0xf9, 0x70, - 0xe0, 0x74, 0x10, 0x75, 0x15, 0xf2, 0xe6, 0x80, 0x63, 0xb2, 0x84, 0xc9, 0x99, 0x03, 0x44, 0xa8, - 0x9f, 0x40, 0x51, 0x33, 0x4e, 0x45, 0x35, 0x2e, 0x43, 0x0e, 0x33, 0x10, 0xf2, 0x2f, 0xa3, 0x65, - 0xc3, 0x81, 0xd3, 0x32, 0x11, 0x8c, 0x95, 0xb0, 0x4d, 0xaa, 0x43, 0x46, 0xcb, 0x0e, 0x3d, 0xa7, - 0x65, 0xaa, 0x7d, 0x80, 0x86, 0xe7, 0xfb, 0xdf, 0xba, 0x09, 0x1b, 0x90, 0x35, 0xad, 0x49, 0x78, - 0xcc, 0x45, 0x87, 0xc6, 0x13, 0xea, 0x43, 0x28, 0xe0, 0xb8, 0xb4, 0xed, 0x20, 0x64, 0xb7, 0x20, - 0xe3, 0xd8, 0x41, 0x58, 0x4b, 0x6d, 0xa6, 0xe7, 0x46, 0x8d, 0xe0, 0xea, 0x26, 0x14, 0xf6, 0x8d, - 0xb3, 0x17, 0x38, 0x72, 0x98, 0x1b, 0x0d, 0xa1, 0x18, 0x12, 0x31, 0x9e, 0x65, 0x80, 0xbe, 0xe1, - 0x1f, 0x59, 0x21, 0x49, 0xba, 0xff, 0x99, 0x82, 0x52, 0x6f, 0x3a, 0xf8, 0x62, 0x6a, 0xf9, 0xe7, - 0x58, 0xe7, 0x07, 0x90, 0x0e, 0xcf, 0x27, 0xc4, 0x51, 0x7d, 0x7c, 0x85, 0x67, 0x2f, 0xe1, 0xb7, - 0x90, 0x49, 0x43, 0x12, 0x6c, 0x84, 0xeb, 0x99, 0x56, 0xd4, 0x07, 0x59, 0x2d, 0x87, 0xc9, 0x96, - 0x89, 0xdb, 0x85, 0x37, 0x11, 0xa3, 0xb0, 0xea, 0x4d, 0xd8, 0x26, 0x64, 0x87, 0xc7, 0xb6, 0x63, - 0xd2, 0x00, 0x24, 0xeb, 0xcc, 0x11, 0x38, 0x4a, 0xbe, 0x77, 0xaa, 0x07, 0xf6, 0x97, 0x91, 0xf8, - 0xcf, 0xfb, 0xde, 0x69, 0xcf, 0xfe, 0xd2, 0x52, 0xfb, 0x62, 0x0f, 0x02, 0xc8, 0xf5, 0x1a, 0xf5, - 0x76, 0x5d, 0x53, 0x56, 0xf0, 0xbb, 0xf9, 0x69, 0xab, 0xd7, 0xef, 0x29, 0x29, 0x56, 0x05, 0xe8, - 0x74, 0xfb, 0xba, 0x48, 0xaf, 0xb2, 0x1c, 0xac, 0xb6, 0x3a, 0x4a, 0x1a, 0x69, 0x10, 0xde, 0xea, - 0x28, 0x19, 0x96, 0x87, 0x74, 0xbd, 0xf3, 0x99, 0x92, 0xa5, 0x8f, 0x76, 0x5b, 0xc9, 0xa9, 0x7f, - 0xb2, 0x0a, 0xc5, 0xee, 0xe0, 0x73, 0x6b, 0x18, 0x62, 0x9b, 0x71, 0x96, 0x5a, 0xfe, 0x2b, 0xcb, - 0xa7, 0x66, 0xa7, 0x35, 0x91, 0xc2, 0x86, 0x98, 0x03, 0x6a, 0x5c, 0x5a, 0x5b, 0x35, 0x07, 0x44, - 0x37, 0x3c, 0xb6, 0xc6, 0x06, 0x35, 0x0e, 0xe9, 0x28, 0x85, 0xab, 0xc2, 0x1b, 0x7c, 0x4e, 0xcd, - 0x4b, 0x6b, 0xf8, 0xc9, 0x6e, 0x43, 0x89, 0xe7, 0x21, 0xcf, 0x2f, 0xe0, 0xa0, 0xf9, 0xc9, 0x97, - 0x93, 0x27, 0x1f, 0x71, 0x52, 0xae, 0x1c, 0x29, 0xf6, 0x36, 0x0e, 0xea, 0x88, 0x19, 0xed, 0x0d, - 0x3e, 0xe7, 0xd8, 0x02, 0x9f, 0xd1, 0xde, 0xe0, 0x73, 0x42, 0xbd, 0x0d, 0xeb, 0xc1, 0x74, 0x10, - 0x0c, 0x7d, 0x7b, 0x12, 0xda, 0x9e, 0xcb, 0x69, 0x8a, 0x44, 0xa3, 0xc8, 0x08, 0x22, 0x7e, 0x00, - 0x85, 0xc9, 0x74, 0xa0, 0xdb, 0xee, 0xc8, 0x23, 0xb1, 0x5f, 0x7a, 0x5c, 0xe1, 0x03, 0x73, 0x30, - 0x1d, 0xb4, 0xdc, 0x91, 0xa7, 0xe5, 0x27, 0xfc, 0x83, 0xa9, 0x50, 0x71, 0xbd, 0x50, 0x47, 0x55, - 0x41, 0x1f, 0x5b, 0xa1, 0x41, 0xfb, 0x01, 0xdf, 0xf0, 0xdb, 0xde, 0xf0, 0x64, 0xdf, 0x0a, 0x0d, - 0xf5, 0x3e, 0xe4, 0x05, 0x1f, 0xee, 0xfd, 0xa1, 0xe5, 0x1a, 0x6e, 0xa8, 0xc7, 0x4a, 0x43, 0x81, - 0x03, 0x5a, 0xa6, 0xfa, 0x87, 0x29, 0x50, 0x7a, 0x52, 0x55, 0x90, 0x79, 0xa9, 0xe4, 0x78, 0x03, - 0xc0, 0x18, 0x0e, 0xbd, 0x29, 0xcf, 0x86, 0x4f, 0xb0, 0xa2, 0x80, 0xb4, 0x4c, 0xb9, 0xff, 0xd2, - 0x89, 0xfe, 0xbb, 0x03, 0xe5, 0x88, 0x4f, 0x5a, 0xf4, 0x25, 0x01, 0x8b, 0x7a, 0x30, 0x98, 0x26, - 0x56, 0x7e, 0x3e, 0x98, 0x72, 0xee, 0x2b, 0x90, 0x23, 0x0d, 0x23, 0x88, 0x46, 0x85, 0xa7, 0xd4, - 0x7f, 0x9b, 0x82, 0x4a, 0xcb, 0x35, 0xad, 0xb3, 0xde, 0xd0, 0x70, 0xa3, 0x4e, 0xb1, 0x03, 0xdd, - 0x46, 0x98, 0x1e, 0x0c, 0x0d, 0x57, 0x28, 0x07, 0x25, 0x3b, 0x88, 0xe9, 0xb0, 0x0d, 0x9c, 0x80, - 0x8a, 0x5a, 0xa5, 0x1c, 0x8b, 0x04, 0xa1, 0xc2, 0xee, 0xc3, 0xda, 0xc0, 0x72, 0x3c, 0xf7, 0x48, - 0x0f, 0x3d, 0x9d, 0x6b, 0x39, 0xbc, 0x2d, 0x15, 0x0e, 0xee, 0x7b, 0x7d, 0xd2, 0x76, 0x36, 0x20, - 0x3b, 0x31, 0xfc, 0x30, 0xa8, 0x65, 0x36, 0xd3, 0xb8, 0x8c, 0x29, 0x81, 0xdd, 0x6c, 0x07, 0xfa, - 0xd4, 0xb5, 0xbf, 0x98, 0xf2, 0x66, 0x14, 0xb4, 0x82, 0x1d, 0x1c, 0x52, 0x9a, 0x3d, 0x00, 0x85, - 0x97, 0x4c, 0xd9, 0xca, 0xf3, 0xac, 0x4a, 0x70, 0xca, 0x98, 0x84, 0xdd, 0x5f, 0x5e, 0x85, 0xc2, - 0xee, 0xd4, 0x1d, 0xe2, 0x60, 0xb0, 0xbb, 0x90, 0x19, 0x4d, 0xdd, 0x21, 0xb5, 0x25, 0xde, 0x4a, - 0xe3, 0x75, 0xa2, 0x11, 0x12, 0x25, 0x90, 0xe1, 0x1f, 0xa1, 0xe4, 0x5a, 0x90, 0x40, 0x08, 0x57, - 0xff, 0x71, 0x8a, 0xe7, 0xb8, 0xeb, 0x18, 0x47, 0xac, 0x00, 0x99, 0x4e, 0xb7, 0xd3, 0x54, 0x56, - 0x58, 0x19, 0x0a, 0xad, 0x4e, 0xbf, 0xa9, 0x75, 0xea, 0x6d, 0x25, 0x45, 0xcb, 0xb9, 0x5f, 0xdf, - 0x6e, 0x37, 0x95, 0x55, 0xc4, 0xbc, 0xe8, 0xb6, 0xeb, 0xfd, 0x56, 0xbb, 0xa9, 0x64, 0x38, 0x46, - 0x6b, 0x35, 0xfa, 0x4a, 0x81, 0x29, 0x50, 0x3e, 0xd0, 0xba, 0x3b, 0x87, 0x8d, 0xa6, 0xde, 0x39, - 0x6c, 0xb7, 0x15, 0x85, 0x5d, 0x82, 0xb5, 0x18, 0xd2, 0xe5, 0xc0, 0x4d, 0x64, 0x79, 0x51, 0xd7, - 0xea, 0xda, 0x33, 0xe5, 0x87, 0xac, 0x00, 0xe9, 0xfa, 0xb3, 0x67, 0xca, 0x4f, 0x51, 0x32, 0x14, - 0x5f, 0xb6, 0x3a, 0xfa, 0x8b, 0x7a, 0xfb, 0xb0, 0xa9, 0xfc, 0x74, 0x35, 0x4a, 0x77, 0xb5, 0x9d, - 0xa6, 0xa6, 0xfc, 0x34, 0xc3, 0xd6, 0xa1, 0xfc, 0x93, 0x6e, 0xa7, 0xb9, 0x5f, 0x3f, 0x38, 0xa0, - 0x8a, 0xfc, 0xb4, 0xa0, 0xfe, 0xd7, 0x0c, 0x64, 0xb0, 0x25, 0x4c, 0x9d, 0x49, 0xc1, 0xb8, 0x89, - 0x28, 0x86, 0xb6, 0x33, 0x7f, 0xfc, 0x67, 0xb7, 0x57, 0xb8, 0xfc, 0xbb, 0x03, 0x69, 0xc7, 0x0e, - 0x69, 0x58, 0xe3, 0xb5, 0x23, 0x74, 0xc6, 0xbd, 0x15, 0x0d, 0x71, 0xec, 0x16, 0xa4, 0xb8, 0x20, - 0x2c, 0x3d, 0xae, 0x8a, 0xc5, 0x25, 0x76, 0xd2, 0xbd, 0x15, 0x2d, 0x35, 0x61, 0x37, 0x21, 0xf5, - 0x4a, 0x48, 0xc5, 0x32, 0xc7, 0xf3, 0xbd, 0x14, 0xb1, 0xaf, 0xd8, 0x26, 0xa4, 0x87, 0x1e, 0xd7, - 0x08, 0x63, 0x3c, 0xdf, 0x59, 0x30, 0xff, 0xa1, 0xe7, 0xb0, 0xbb, 0x90, 0xf6, 0x8d, 0x53, 0x1a, - 0xd9, 0x78, 0xb8, 0xe2, 0xad, 0x0b, 0x89, 0x7c, 0xe3, 0x14, 0x2b, 0x31, 0x22, 0x39, 0x12, 0x57, - 0x22, 0x1a, 0x6f, 0x2c, 0x66, 0xc4, 0x36, 0x21, 0x75, 0x4a, 0x92, 0x24, 0x56, 0x82, 0x5e, 0xda, - 0xae, 0xe9, 0x9d, 0xf6, 0x26, 0xd6, 0x10, 0x29, 0x4e, 0xd9, 0x9b, 0x90, 0x0e, 0xa6, 0x03, 0x92, - 0x24, 0xa5, 0xc7, 0xeb, 0x0b, 0x7b, 0x02, 0x16, 0x14, 0x4c, 0x07, 0xec, 0x3e, 0x64, 0x86, 0x9e, - 0xef, 0x0b, 0x69, 0xa2, 0x44, 0x15, 0x8e, 0xb6, 0x43, 0x54, 0x0a, 0x11, 0x8f, 0x05, 0x86, 0x24, - 0x43, 0x62, 0xa2, 0xd9, 0x7e, 0x84, 0x05, 0x86, 0xec, 0x9e, 0xd8, 0xe4, 0xca, 0x72, 0xad, 0xa3, - 0x2d, 0x10, 0xf3, 0x41, 0x2c, 0x0e, 0xd2, 0xd8, 0x38, 0x23, 0x8d, 0x33, 0x26, 0x8a, 0xf6, 0x3e, - 0xac, 0xd3, 0xd8, 0x38, 0x63, 0xf7, 0x20, 0xfd, 0xca, 0x1a, 0x92, 0xf2, 0x19, 0x97, 0x26, 0x06, - 0xe9, 0x05, 0x35, 0x0f, 0xd1, 0x34, 0xef, 0x3d, 0xc7, 0x24, 0x3d, 0x34, 0x1e, 0xcb, 0x5d, 0xcf, - 0x31, 0x5f, 0xd0, 0x58, 0x12, 0x12, 0xb7, 0x7c, 0x63, 0x7a, 0x86, 0xd2, 0x48, 0xe1, 0x9b, 0xb3, - 0x31, 0x3d, 0x6b, 0x99, 0x28, 0xfc, 0x5d, 0xf3, 0x15, 0x69, 0x9f, 0x29, 0x0d, 0x3f, 0xd1, 0x3c, - 0x0a, 0x2c, 0xc7, 0x1a, 0x86, 0xf6, 0x2b, 0x3b, 0x3c, 0x27, 0xfd, 0x32, 0xa5, 0xc9, 0xa0, 0xed, - 0x1c, 0x64, 0xac, 0xb3, 0x89, 0xaf, 0xee, 0x41, 0x5e, 0x94, 0xb2, 0x60, 0x63, 0x5d, 0x83, 0x82, - 0x1d, 0xe8, 0x43, 0xcf, 0x0d, 0x42, 0xa1, 0x3b, 0xe5, 0xed, 0xa0, 0x81, 0x49, 0x14, 0x97, 0xa6, - 0x11, 0xf2, 0x4d, 0xa8, 0xac, 0xd1, 0xb7, 0xfa, 0x18, 0x60, 0xd6, 0x2c, 0xac, 0x93, 0x63, 0xb9, - 0x91, 0x9a, 0xe6, 0x58, 0x6e, 0xcc, 0xb3, 0x2a, 0xf1, 0x5c, 0x83, 0x62, 0xac, 0x19, 0xb3, 0x32, - 0xa4, 0x0c, 0xb1, 0xfd, 0xa5, 0x0c, 0xf5, 0x01, 0x2a, 0xaa, 0x91, 0xee, 0x9b, 0xc4, 0x61, 0x2a, - 0xda, 0x14, 0x53, 0x03, 0xf5, 0x7b, 0x50, 0xd6, 0xac, 0x60, 0xea, 0x84, 0x0d, 0xcf, 0xd9, 0xb1, - 0x46, 0xec, 0x1d, 0x80, 0x38, 0x1d, 0x08, 0x2d, 0x65, 0x36, 0x77, 0x77, 0xac, 0x91, 0x26, 0xe1, - 0xd5, 0xbf, 0x93, 0x21, 0x7d, 0x6f, 0x87, 0x2b, 0x5a, 0x42, 0xa3, 0x4a, 0x49, 0x1a, 0x55, 0xbc, - 0x37, 0xac, 0x26, 0xb5, 0xca, 0x63, 0xdb, 0x34, 0x2d, 0x37, 0xd2, 0x1e, 0x79, 0x0a, 0x07, 0xdb, - 0x70, 0x8e, 0x68, 0x41, 0x55, 0x1f, 0xb3, 0xa8, 0xd0, 0xf1, 0xc4, 0xb7, 0x82, 0x80, 0xeb, 0x2d, - 0x86, 0x73, 0x14, 0xad, 0xed, 0xec, 0x57, 0xad, 0xed, 0x6b, 0x50, 0xc0, 0x2d, 0x8f, 0xac, 0xbe, - 0x1c, 0xef, 0x7d, 0x61, 0xde, 0xb2, 0xb7, 0x20, 0x2f, 0xf4, 0x75, 0xb1, 0xa8, 0xc4, 0x74, 0xd9, - 0xe1, 0x40, 0x2d, 0xc2, 0xb2, 0x1a, 0x2a, 0x79, 0xe3, 0xb1, 0xe5, 0x86, 0xd1, 0x3e, 0x2d, 0x92, - 0xec, 0x6d, 0x28, 0x7a, 0xae, 0xce, 0x95, 0x7a, 0xb1, 0xaa, 0xc4, 0xf4, 0xed, 0xba, 0x87, 0x04, - 0xd5, 0x0a, 0x9e, 0xf8, 0xc2, 0xaa, 0x38, 0xde, 0xa9, 0x3e, 0x34, 0x7c, 0x93, 0x56, 0x56, 0x41, - 0xcb, 0x3b, 0xde, 0x69, 0xc3, 0xf0, 0x4d, 0xae, 0xb7, 0x7c, 0xe1, 0x4e, 0xc7, 0xb4, 0x9a, 0x2a, - 0x9a, 0x48, 0xb1, 0x9b, 0x50, 0x1c, 0x3a, 0xd3, 0x20, 0xb4, 0xfc, 0xed, 0x73, 0x6e, 0xa6, 0x69, - 0x33, 0x00, 0xd6, 0x6b, 0xe2, 0xdb, 0x63, 0xc3, 0x3f, 0xa7, 0xa5, 0x53, 0xd0, 0xa2, 0x24, 0x6d, - 0x34, 0x27, 0xb6, 0x79, 0xc6, 0x6d, 0x35, 0x8d, 0x27, 0x90, 0xfe, 0x98, 0x2c, 0xe9, 0x80, 0xd6, - 0x47, 0x41, 0x8b, 0x92, 0x34, 0x0e, 0xf4, 0x49, 0x2b, 0xa2, 0xa8, 0x89, 0x54, 0x42, 0xe9, 0x5e, - 0xbf, 0x50, 0xe9, 0x66, 0xf3, 0x7a, 0x8f, 0xe7, 0xdb, 0x47, 0xb6, 0xd0, 0x5a, 0x2e, 0x71, 0xbd, - 0x87, 0x83, 0x68, 0xa3, 0xfa, 0x02, 0xf2, 0xa2, 0x8b, 0x71, 0x07, 0xc2, 0xe5, 0x93, 0x14, 0xcf, - 0x7c, 0x07, 0x42, 0x38, 0xbb, 0x0b, 0x15, 0x91, 0x57, 0x10, 0xfa, 0xb6, 0x7b, 0x24, 0x26, 0x4f, - 0x99, 0x03, 0x7b, 0x04, 0x43, 0x45, 0x01, 0x87, 0x57, 0x37, 0x06, 0xb6, 0x83, 0xcb, 0x34, 0x2d, - 0x94, 0x9a, 0xa9, 0xe3, 0xd4, 0x39, 0x48, 0xed, 0x42, 0x21, 0x1a, 0x90, 0x5f, 0x4a, 0x99, 0xea, - 0x6f, 0xa6, 0xa0, 0x44, 0xea, 0x41, 0x97, 0x94, 0x1f, 0xf6, 0x0e, 0xb0, 0xa1, 0x6f, 0x19, 0xa1, - 0xa5, 0x5b, 0x67, 0xa1, 0x6f, 0x08, 0x25, 0x80, 0x6b, 0x12, 0x0a, 0xc7, 0x34, 0x11, 0xc1, 0xf5, - 0x80, 0xdb, 0x50, 0x9a, 0x18, 0x7e, 0x10, 0x29, 0x95, 0xbc, 0x00, 0xe0, 0x20, 0xa1, 0xd2, 0x29, - 0xee, 0x91, 0x6f, 0x8c, 0xf5, 0xd0, 0x3b, 0xb1, 0x5c, 0xae, 0x4e, 0x73, 0x43, 0xa2, 0x4a, 0xf0, - 0x3e, 0x82, 0x49, 0xab, 0xfe, 0xf7, 0x29, 0xa8, 0x1c, 0xf0, 0x51, 0x7f, 0x6e, 0x9d, 0xef, 0x70, - 0xeb, 0x6d, 0x18, 0xad, 0xd8, 0x8c, 0x46, 0xdf, 0xec, 0x16, 0x94, 0x26, 0x27, 0xd6, 0xb9, 0x9e, - 0xb0, 0x74, 0x8a, 0x08, 0x6a, 0xd0, 0xda, 0xfc, 0x0e, 0xe4, 0x3c, 0x6a, 0x88, 0xd8, 0xe3, 0xc4, - 0xd6, 0x20, 0xb5, 0x50, 0x13, 0x04, 0xa8, 0x2e, 0xc5, 0x59, 0xc9, 0x7a, 0x99, 0xc8, 0x8c, 0xaa, - 0xbf, 0x01, 0x59, 0x44, 0x05, 0xb5, 0x2c, 0xd7, 0x73, 0x28, 0xc1, 0xde, 0x83, 0xca, 0xd0, 0x1b, - 0x4f, 0xf4, 0x88, 0x5d, 0xec, 0x76, 0x49, 0x99, 0x52, 0x42, 0x92, 0x03, 0x9e, 0x97, 0xfa, 0xbb, - 0x69, 0x28, 0x50, 0x1d, 0x84, 0x58, 0xb1, 0xcd, 0xb3, 0x48, 0xac, 0x14, 0xb5, 0xac, 0x6d, 0xa2, - 0xd4, 0x7e, 0x8d, 0x6a, 0x16, 0xab, 0x5c, 0x69, 0x59, 0xe5, 0xba, 0x02, 0x39, 0xa1, 0x6f, 0x65, - 0xb8, 0xdc, 0x99, 0x5e, 0xac, 0x6d, 0x65, 0x97, 0x69, 0x5b, 0x38, 0x84, 0x9c, 0xc6, 0x3a, 0xc3, - 0xfd, 0x8d, 0x8b, 0x16, 0x20, 0x50, 0x13, 0x21, 0xb2, 0xd0, 0xc8, 0x27, 0x85, 0x46, 0x0d, 0xf2, - 0xaf, 0xec, 0xc0, 0xc6, 0x09, 0x52, 0xe0, 0xcb, 0x50, 0x24, 0xa5, 0x61, 0x28, 0xbe, 0x6e, 0x18, - 0xe2, 0x66, 0x1b, 0xce, 0x11, 0x57, 0xfb, 0xa3, 0x66, 0xd7, 0x9d, 0x23, 0x8f, 0xbd, 0x0f, 0x97, - 0x67, 0x68, 0xd1, 0x1a, 0x72, 0x8f, 0x91, 0x07, 0x48, 0x63, 0x31, 0x25, 0xb5, 0x88, 0xec, 0xb2, - 0x87, 0xb0, 0x2e, 0xb1, 0x4c, 0x50, 0xbd, 0x09, 0x48, 0xe6, 0x14, 0xb5, 0xb5, 0x98, 0x9c, 0xb4, - 0x9e, 0x40, 0xfd, 0x67, 0xab, 0x50, 0xd9, 0xf5, 0x7c, 0xcb, 0x3e, 0x72, 0x67, 0xb3, 0x6e, 0x41, - 0xf3, 0x8f, 0x66, 0xe2, 0xaa, 0x34, 0x13, 0x6f, 0x43, 0x69, 0xc4, 0x19, 0xf5, 0x70, 0xc0, 0x9d, - 0x06, 0x19, 0x0d, 0x04, 0xa8, 0x3f, 0x70, 0x70, 0x35, 0x47, 0x04, 0xc4, 0x9c, 0x21, 0xe6, 0x88, - 0x09, 0xf7, 0x1a, 0xf6, 0x5d, 0x92, 0xba, 0xa6, 0xe5, 0x58, 0x21, 0x1f, 0x9e, 0xea, 0xe3, 0x37, - 0xa2, 0x9d, 0x5e, 0xaa, 0xd3, 0x96, 0x66, 0x8d, 0xea, 0xa4, 0x1e, 0xa1, 0x10, 0xde, 0x21, 0x72, - 0xc1, 0x2b, 0x24, 0x76, 0xee, 0x6b, 0xf2, 0x72, 0xc9, 0xa1, 0xf6, 0xa1, 0x18, 0x83, 0x51, 0xd7, - 0xd5, 0x9a, 0x42, 0xbf, 0x5d, 0x61, 0x25, 0xc8, 0x37, 0xea, 0xbd, 0x46, 0x7d, 0xa7, 0xa9, 0xa4, - 0x10, 0xd5, 0x6b, 0xf6, 0xb9, 0x4e, 0xbb, 0xca, 0xd6, 0xa0, 0x84, 0xa9, 0x9d, 0xe6, 0x6e, 0xfd, - 0xb0, 0xdd, 0x57, 0xd2, 0xac, 0x02, 0xc5, 0x4e, 0x57, 0xaf, 0x37, 0xfa, 0xad, 0x6e, 0x47, 0xc9, - 0xa8, 0x3f, 0x84, 0x42, 0xe3, 0xd8, 0x1a, 0x9e, 0x5c, 0xd4, 0x8b, 0x64, 0x74, 0x5b, 0xc3, 0x13, - 0xa1, 0x9f, 0xce, 0x19, 0xdd, 0xd6, 0xf0, 0x44, 0x6d, 0x42, 0xf1, 0xc0, 0xf0, 0x43, 0x9b, 0xea, - 0xf5, 0x14, 0x2a, 0x71, 0x62, 0xc7, 0x1a, 0x45, 0x3b, 0x37, 0x8b, 0xb5, 0xd6, 0x18, 0xa5, 0x25, - 0x09, 0xd5, 0x77, 0xa0, 0x2c, 0x03, 0xd8, 0x4d, 0x48, 0x9b, 0xd6, 0x68, 0x89, 0x9c, 0x44, 0xb0, - 0xfa, 0x02, 0xca, 0x8d, 0x68, 0x27, 0xba, 0xa8, 0xea, 0x8f, 0xa1, 0x4a, 0x2b, 0x7e, 0x38, 0x88, - 0x96, 0xfc, 0xea, 0x92, 0x25, 0x5f, 0x46, 0x9a, 0xc6, 0x40, 0xac, 0xf9, 0x0f, 0xa1, 0x74, 0xe0, - 0x7b, 0x13, 0xcb, 0x0f, 0x29, 0x5b, 0x05, 0xd2, 0x27, 0xd6, 0xb9, 0xc8, 0x15, 0x3f, 0x67, 0xbe, - 0x90, 0x55, 0xd9, 0x17, 0xf2, 0x18, 0x0a, 0x11, 0xdb, 0xd7, 0xe6, 0xf9, 0x01, 0x8a, 0x4e, 0xe2, - 0xb1, 0xad, 0x00, 0x0b, 0xdb, 0x02, 0x98, 0xc4, 0x00, 0xd1, 0x71, 0x91, 0xba, 0x2f, 0x32, 0xd7, - 0x24, 0x0a, 0xf5, 0x0d, 0xc8, 0xbf, 0xb0, 0xad, 0x53, 0xd1, 0xfc, 0x57, 0xb6, 0x75, 0x1a, 0x35, - 0x1f, 0xbf, 0xd5, 0xbf, 0x52, 0x84, 0x02, 0xad, 0xaf, 0x9d, 0x8b, 0xdd, 0x4f, 0xdf, 0x44, 0x2b, - 0xda, 0x14, 0xeb, 0x29, 0xb3, 0x44, 0x17, 0xe3, 0xab, 0xeb, 0x0d, 0x00, 0x69, 0xad, 0x73, 0xc9, - 0x55, 0x0c, 0xe3, 0x25, 0x8e, 0xea, 0x04, 0xed, 0x45, 0xc1, 0x17, 0x8e, 0xb0, 0x22, 0x67, 0x00, - 0xb6, 0xc5, 0x37, 0x7b, 0xb2, 0x1b, 0xb9, 0x42, 0x74, 0x29, 0x52, 0xea, 0x07, 0x8e, 0x15, 0x99, - 0x1a, 0xa4, 0x01, 0x60, 0x82, 0xe4, 0x98, 0xe5, 0x07, 0x28, 0xae, 0xc8, 0x3f, 0xad, 0x45, 0x49, - 0xf6, 0x16, 0x64, 0x50, 0xc8, 0x0b, 0xd3, 0xe0, 0x52, 0xd4, 0x83, 0xd2, 0x2e, 0xa5, 0x11, 0x01, - 0x7b, 0x00, 0x79, 0x12, 0x2d, 0x16, 0x4a, 0x1a, 0xa9, 0xb7, 0x23, 0xa1, 0xaf, 0x45, 0x68, 0xf6, - 0x1d, 0xc8, 0x8e, 0x4e, 0xac, 0xf3, 0xa0, 0x56, 0x21, 0xba, 0x4b, 0x4b, 0xd6, 0xac, 0xc6, 0x29, - 0xd8, 0x3d, 0xa8, 0xfa, 0xd6, 0x48, 0x27, 0x87, 0x14, 0x0a, 0x99, 0xa0, 0x56, 0x25, 0x19, 0x52, - 0xf6, 0xad, 0x51, 0x03, 0x81, 0xfd, 0x81, 0x13, 0xb0, 0xfb, 0x90, 0xa3, 0xd5, 0x83, 0xba, 0x90, - 0x54, 0x72, 0xb4, 0x14, 0x35, 0x81, 0x65, 0xef, 0x03, 0x08, 0x8d, 0x4b, 0x1f, 0x9c, 0x93, 0x23, - 0x37, 0x5e, 0x4c, 0xf2, 0xfc, 0x97, 0xf5, 0xb2, 0xb7, 0x20, 0x8b, 0x93, 0x24, 0xa8, 0x5d, 0xa5, - 0x9c, 0xd7, 0x93, 0x33, 0x88, 0x6a, 0x4a, 0x78, 0xf6, 0x00, 0x0a, 0x38, 0x51, 0x74, 0x1c, 0x8e, - 0x9a, 0xac, 0x82, 0x8a, 0x59, 0x85, 0x3b, 0x83, 0x75, 0xda, 0xfb, 0xc2, 0x61, 0x0f, 0x21, 0x63, - 0xe2, 0x62, 0xbe, 0x46, 0x39, 0x5e, 0x91, 0xc6, 0x05, 0x85, 0xd5, 0x8e, 0x35, 0x22, 0xad, 0x98, - 0x68, 0xd8, 0x1e, 0x54, 0x71, 0x1a, 0x3d, 0xa6, 0xcd, 0x1e, 0xbb, 0xaf, 0x76, 0x9d, 0xb8, 0xee, - 0xcc, 0x71, 0x75, 0x04, 0x11, 0x75, 0x76, 0xd3, 0x0d, 0xfd, 0x73, 0xad, 0xe2, 0xca, 0x30, 0x76, - 0x1d, 0x4d, 0x97, 0xb6, 0x37, 0x3c, 0xb1, 0xcc, 0xda, 0x8d, 0xc8, 0x31, 0xc1, 0xd3, 0xec, 0x13, - 0xa8, 0xd0, 0xc4, 0xc2, 0x24, 0x16, 0x5e, 0xbb, 0x49, 0xc2, 0x54, 0x9e, 0x32, 0x11, 0x4a, 0x4b, - 0x52, 0xa2, 0x88, 0xb7, 0x03, 0x3d, 0xb4, 0xc6, 0x13, 0xcf, 0x47, 0xe5, 0xf5, 0x8d, 0xc8, 0xe1, - 0xd2, 0x8f, 0x40, 0xb8, 0x11, 0xc7, 0xc7, 0x4e, 0xba, 0x37, 0x1a, 0x05, 0x56, 0x58, 0xbb, 0x45, - 0xeb, 0xa6, 0x1a, 0x9d, 0x3e, 0x75, 0x09, 0x4a, 0x1b, 0x61, 0xa0, 0x9b, 0xe7, 0xae, 0x31, 0xb6, - 0x87, 0xb5, 0xdb, 0x5c, 0x47, 0xb6, 0x83, 0x1d, 0x0e, 0x90, 0xd5, 0xd4, 0xcd, 0x84, 0x9a, 0x7a, - 0x09, 0xb2, 0xe6, 0x00, 0x97, 0xe3, 0x1d, 0xca, 0x36, 0x63, 0x0e, 0x5a, 0x26, 0x7b, 0x17, 0x8a, - 0x93, 0x48, 0x04, 0xd6, 0x54, 0xd9, 0x18, 0x8f, 0x25, 0xa3, 0x36, 0xa3, 0x40, 0xfb, 0x70, 0xd7, - 0x32, 0xc2, 0xa9, 0x6f, 0xed, 0x3a, 0xc6, 0x51, 0xed, 0x2e, 0xe5, 0x24, 0x83, 0xae, 0x3f, 0x23, - 0x5d, 0x97, 0x5a, 0xfd, 0xe1, 0x9c, 0x70, 0x49, 0x2c, 0x0d, 0x49, 0x0a, 0xed, 0xad, 0xc8, 0x32, - 0x66, 0x3b, 0x4b, 0x52, 0xf8, 0xfa, 0x0f, 0x81, 0x2d, 0x8e, 0xd7, 0xeb, 0x24, 0x5d, 0x56, 0x48, - 0xba, 0xef, 0xae, 0x3e, 0x4d, 0xa9, 0x2f, 0xa0, 0x92, 0x58, 0xc8, 0x4b, 0x25, 0x36, 0x57, 0x97, - 0x8c, 0xb1, 0x30, 0x2f, 0x79, 0x42, 0x78, 0xa8, 0x02, 0xdb, 0x3d, 0x12, 0x9e, 0x2d, 0x9a, 0x08, - 0x3d, 0x4a, 0xab, 0x7f, 0x92, 0x86, 0xf2, 0x9e, 0x11, 0x1c, 0xef, 0x1b, 0x93, 0x5e, 0x68, 0x84, - 0x01, 0x0e, 0xef, 0xb1, 0x11, 0x1c, 0x8f, 0x8d, 0x09, 0x57, 0x5c, 0x53, 0xdc, 0x6c, 0x16, 0x30, - 0xd4, 0x5a, 0x71, 0x62, 0x61, 0xb2, 0xeb, 0x1e, 0x3c, 0x17, 0x36, 0x71, 0x9c, 0x46, 0xb1, 0x12, - 0x1c, 0x4f, 0x47, 0xa3, 0xb8, 0xa8, 0x28, 0xc9, 0xee, 0x41, 0x45, 0x7c, 0x92, 0xd6, 0x7a, 0x26, - 0x8e, 0x1d, 0x93, 0x40, 0xf6, 0x04, 0x4a, 0x02, 0xd0, 0x8f, 0x84, 0x60, 0x35, 0xf6, 0x75, 0xcc, - 0x10, 0x9a, 0x4c, 0xc5, 0x7e, 0x0c, 0x97, 0xa5, 0xe4, 0xae, 0xe7, 0xef, 0x4f, 0x9d, 0xd0, 0x6e, - 0x74, 0x84, 0x8a, 0x70, 0x63, 0x81, 0x7d, 0x46, 0xa2, 0x2d, 0xe7, 0x4c, 0xd6, 0x76, 0xdf, 0x76, - 0x49, 0xa6, 0xa6, 0xb5, 0x24, 0x70, 0x8e, 0xca, 0x38, 0x23, 0x51, 0x9a, 0xa4, 0x32, 0xce, 0x70, - 0xb1, 0x09, 0xc0, 0xbe, 0x15, 0x1e, 0x7b, 0x26, 0xe9, 0x87, 0xf1, 0x62, 0xeb, 0xc9, 0x28, 0x2d, - 0x49, 0x89, 0xdd, 0x89, 0x96, 0xd0, 0xd0, 0x0d, 0x49, 0x4b, 0x4c, 0x6b, 0x51, 0x12, 0xb7, 0x19, - 0xdf, 0x70, 0x8f, 0xac, 0xa0, 0x56, 0xda, 0x4c, 0x3f, 0x48, 0x69, 0x22, 0xa5, 0xfe, 0xad, 0x55, - 0xc8, 0xf2, 0x91, 0xbc, 0x01, 0xc5, 0x01, 0x39, 0x8b, 0xd1, 0x32, 0x15, 0x0e, 0x60, 0x02, 0x74, - 0xa6, 0x63, 0xae, 0xdd, 0x09, 0x9f, 0x46, 0x4a, 0xa3, 0x6f, 0xcc, 0xd2, 0x9b, 0x86, 0x58, 0x56, - 0x9a, 0xa0, 0x22, 0x85, 0x95, 0xf0, 0xbd, 0x53, 0x9a, 0x0d, 0x19, 0x42, 0x44, 0x49, 0xf2, 0x31, - 0xd3, 0x8e, 0x85, 0x4c, 0x59, 0xc2, 0x15, 0x08, 0xd0, 0x70, 0xc3, 0x79, 0xff, 0x4b, 0x6e, 0xc1, - 0xff, 0xc2, 0x6e, 0x01, 0xea, 0x8e, 0x43, 0xab, 0xeb, 0x5a, 0x8d, 0x0e, 0xf5, 0x70, 0x41, 0x93, - 0x20, 0xb8, 0x40, 0x4c, 0x6f, 0x42, 0x9d, 0x9a, 0xd5, 0xf0, 0x93, 0x7d, 0x14, 0xcf, 0x4e, 0x6a, - 0xa3, 0xd0, 0xb4, 0x85, 0x44, 0x97, 0xe7, 0xb1, 0x96, 0xa0, 0xc3, 0x9c, 0x50, 0x4c, 0x73, 0x4d, - 0x1b, 0x3f, 0xd5, 0x26, 0x80, 0xe6, 0x9d, 0x06, 0x56, 0x48, 0x8e, 0xc6, 0xab, 0xd4, 0xc4, 0xc4, - 0x11, 0x91, 0x77, 0x7a, 0xe0, 0x05, 0xb1, 0xbd, 0xb9, 0xba, 0xdc, 0xde, 0x54, 0x1f, 0x41, 0x1e, - 0xf7, 0x70, 0x23, 0x34, 0xd8, 0x3d, 0xe1, 0xdb, 0xe1, 0x9a, 0x87, 0x70, 0x72, 0xcd, 0xca, 0x10, - 0xde, 0x9e, 0x76, 0x54, 0x2e, 0xf1, 0xdc, 0x91, 0xcc, 0xbd, 0x78, 0xff, 0x10, 0x19, 0x0a, 0xad, - 0xe0, 0x06, 0x14, 0xb1, 0x6a, 0xe4, 0x37, 0x17, 0x72, 0xa1, 0xe0, 0x7b, 0xa7, 0x0d, 0x4c, 0xab, - 0xff, 0x21, 0x05, 0xa5, 0xae, 0x6f, 0xe2, 0xc6, 0xd5, 0x9b, 0x58, 0xc3, 0xd7, 0x9a, 0xc7, 0xa8, - 0x43, 0x78, 0x8e, 0x63, 0x90, 0x88, 0x14, 0xe6, 0x56, 0x0c, 0x60, 0xef, 0x43, 0x66, 0x84, 0xa2, - 0x30, 0x2d, 0x6b, 0xd6, 0x52, 0xf6, 0xd1, 0x37, 0x0a, 0x47, 0x8d, 0x48, 0xd5, 0x5f, 0x8b, 0xcb, - 0x27, 0x3f, 0xb3, 0xec, 0x5d, 0x5e, 0xa1, 0x73, 0x9e, 0x5e, 0x43, 0x49, 0xb1, 0x02, 0x64, 0x76, - 0x9a, 0xbd, 0x06, 0xd7, 0xa7, 0x51, 0xb3, 0xee, 0xe9, 0xbb, 0x2d, 0xad, 0xd7, 0x57, 0x32, 0x74, - 0x70, 0x44, 0x80, 0x76, 0xbd, 0xd7, 0x57, 0x0a, 0x0c, 0x20, 0x77, 0xd8, 0x69, 0xfd, 0xf8, 0xb0, - 0xa9, 0x28, 0xea, 0x9f, 0xa6, 0x00, 0x66, 0x4e, 0x50, 0xf6, 0x36, 0x94, 0x4e, 0x29, 0xa5, 0x4b, - 0xde, 0x71, 0xb9, 0x8d, 0xc0, 0xd1, 0xa4, 0xdf, 0xbc, 0x0b, 0xe5, 0x58, 0xd4, 0xe3, 0xde, 0xbf, - 0xe8, 0x26, 0x2f, 0xc5, 0xf8, 0xed, 0x73, 0xf6, 0x0e, 0x14, 0x3c, 0x6c, 0x07, 0x92, 0xa6, 0xe5, - 0x8d, 0x5f, 0x6a, 0xbe, 0x96, 0xf7, 0x78, 0x02, 0x75, 0x84, 0x91, 0x1f, 0x99, 0xcf, 0x31, 0xe9, - 0x2e, 0x82, 0x1a, 0x8e, 0x31, 0x0d, 0x2c, 0x8d, 0xe3, 0x63, 0x29, 0x9d, 0x9d, 0x49, 0x69, 0xf5, - 0x27, 0x50, 0xed, 0x19, 0xe3, 0x09, 0x97, 0xe5, 0xd4, 0x30, 0x06, 0x19, 0x9c, 0x13, 0x62, 0xea, - 0xd1, 0x37, 0x2e, 0xba, 0x03, 0xcb, 0x1f, 0x5a, 0x6e, 0xb4, 0x46, 0xa3, 0x24, 0x8a, 0xdf, 0x43, - 0x94, 0xe6, 0x9a, 0x77, 0x1a, 0x89, 0xf3, 0x28, 0xad, 0xfe, 0xbd, 0x14, 0x94, 0xa4, 0x6a, 0xb0, - 0x47, 0x90, 0x21, 0x65, 0x32, 0x25, 0x0b, 0x42, 0x89, 0x80, 0x7f, 0x73, 0xf5, 0x03, 0x09, 0xd9, - 0x7d, 0xc8, 0x06, 0xa1, 0xe1, 0x47, 0xfe, 0x74, 0x45, 0xe2, 0xd8, 0xf6, 0xa6, 0xae, 0xa9, 0x71, - 0x34, 0x53, 0x21, 0x6d, 0xb9, 0xa6, 0x70, 0x38, 0x2c, 0x52, 0x21, 0x52, 0xdd, 0x84, 0x62, 0x9c, - 0x3d, 0x4e, 0x01, 0xad, 0xfb, 0xb2, 0xa7, 0xac, 0xb0, 0x22, 0x64, 0xb5, 0x7a, 0xe7, 0x59, 0x53, - 0x49, 0xa9, 0x7f, 0x98, 0x02, 0x98, 0x71, 0xb1, 0xad, 0x44, 0x6d, 0xaf, 0xcf, 0xe7, 0xba, 0x45, - 0x7f, 0xa5, 0xca, 0xde, 0x84, 0xe2, 0xd4, 0x25, 0xa0, 0x65, 0x8a, 0x9d, 0x68, 0x06, 0x40, 0x0b, - 0x28, 0x8a, 0xfe, 0x98, 0xb3, 0x80, 0x5e, 0x19, 0x8e, 0xfa, 0x5d, 0x28, 0xc6, 0xd9, 0xa1, 0x51, - 0xb7, 0xdb, 0x6d, 0xb7, 0xbb, 0x2f, 0x5b, 0x9d, 0x67, 0xca, 0x0a, 0x26, 0x0f, 0xb4, 0x66, 0xa3, - 0xb9, 0x83, 0xc9, 0x14, 0xce, 0xd9, 0xc6, 0xa1, 0xa6, 0x35, 0x3b, 0x7d, 0x5d, 0xeb, 0xbe, 0x54, - 0x56, 0xd5, 0xbf, 0x98, 0x81, 0xf5, 0xae, 0xbb, 0x33, 0x9d, 0x38, 0xf6, 0xd0, 0x08, 0xad, 0xe7, - 0xd6, 0x79, 0x23, 0x3c, 0xc3, 0xdd, 0xd7, 0x08, 0x43, 0x9f, 0x2f, 0xe6, 0xa2, 0xc6, 0x13, 0xdc, - 0x29, 0x11, 0x58, 0x7e, 0x48, 0x3e, 0x17, 0x79, 0x15, 0x57, 0x39, 0xbc, 0xe1, 0x39, 0xb4, 0x96, - 0xd9, 0xf7, 0xe1, 0x32, 0x77, 0x64, 0x70, 0x4a, 0x54, 0x60, 0x75, 0x5a, 0xcc, 0xe9, 0x85, 0xa9, - 0xcb, 0x38, 0x21, 0xb2, 0x22, 0x19, 0x89, 0xb0, 0xdb, 0x50, 0x9a, 0xb1, 0x47, 0x87, 0x54, 0x10, - 0x13, 0x52, 0x4d, 0xd0, 0xf0, 0x8e, 0x6a, 0xad, 0xdb, 0xe6, 0x19, 0xb9, 0x78, 0xb2, 0x5a, 0xd5, - 0x9b, 0x35, 0x06, 0x37, 0xe1, 0x4f, 0x61, 0x3d, 0x41, 0x49, 0xb5, 0xc8, 0x51, 0x2d, 0xde, 0x89, - 0x1c, 0xa4, 0x73, 0xad, 0x97, 0x21, 0x58, 0x1d, 0xae, 0x91, 0xae, 0x79, 0x49, 0xa8, 0xd0, 0x45, - 0xec, 0x23, 0xd7, 0xf3, 0x2d, 0x21, 0xf0, 0x0b, 0x76, 0xd0, 0xa2, 0xf4, 0xcc, 0xfe, 0x91, 0x0e, - 0x55, 0xf9, 0xfe, 0x12, 0x9d, 0x17, 0x72, 0xb4, 0xcd, 0x77, 0xd0, 0x8c, 0x96, 0xa7, 0x74, 0xcb, - 0x64, 0x77, 0x85, 0x3a, 0xab, 0x47, 0x26, 0x0d, 0x90, 0x49, 0x53, 0x26, 0xe0, 0x0b, 0x0e, 0xbb, - 0xde, 0x81, 0x8d, 0x65, 0x95, 0x5c, 0xa2, 0x86, 0x6d, 0xca, 0x6a, 0xd8, 0x9c, 0xd1, 0x3e, 0x53, - 0xc9, 0xfe, 0x41, 0x0a, 0xca, 0x3b, 0x96, 0x39, 0x9d, 0xfc, 0xc8, 0xb3, 0x5d, 0x9c, 0x00, 0x1f, - 0x40, 0xd9, 0x73, 0x4c, 0x1a, 0x3d, 0x29, 0x36, 0x20, 0x71, 0x62, 0x24, 0x9c, 0xdb, 0xe0, 0x39, - 0x66, 0xc3, 0x73, 0x28, 0x92, 0xe0, 0x5d, 0xb8, 0xc4, 0x1d, 0x1a, 0xc2, 0xbf, 0x77, 0xc6, 0x99, - 0x57, 0x69, 0x64, 0x14, 0x8e, 0xe2, 0xca, 0x11, 0x91, 0xff, 0x0a, 0x6c, 0x48, 0xe4, 0x38, 0x32, - 0x9c, 0x7e, 0x71, 0x92, 0xac, 0xc7, 0xbc, 0xd1, 0x91, 0x8d, 0xfa, 0x5b, 0xab, 0x50, 0xe4, 0xee, - 0x10, 0xac, 0xef, 0x03, 0xc8, 0x7b, 0x83, 0xcf, 0x75, 0x3f, 0x76, 0x13, 0x2c, 0x9c, 0x34, 0xe6, - 0xbc, 0xc1, 0xe7, 0x9a, 0x35, 0x62, 0x6f, 0x47, 0xfb, 0xbc, 0x69, 0x8d, 0x44, 0xa7, 0x54, 0x93, - 0xf6, 0x88, 0xd8, 0xf7, 0xd1, 0x56, 0x7e, 0x02, 0xa5, 0xd9, 0x8c, 0x0f, 0x6a, 0xf9, 0x8b, 0x7b, - 0x21, 0x5e, 0x00, 0x01, 0x32, 0x71, 0x97, 0x10, 0x67, 0x2a, 0x5c, 0xcc, 0xc4, 0xc9, 0x88, 0xe9, - 0x13, 0xa8, 0xce, 0x64, 0x3c, 0xf1, 0x15, 0x2f, 0xe4, 0xab, 0xc4, 0x94, 0x74, 0xe2, 0xf1, 0x0f, - 0x53, 0x50, 0x6c, 0xf1, 0xe2, 0xc3, 0x33, 0x76, 0x07, 0xd2, 0x5f, 0xd1, 0x0b, 0x88, 0x63, 0x0f, - 0x61, 0xdd, 0x30, 0x4d, 0xdd, 0x18, 0x8d, 0xac, 0x61, 0x68, 0x99, 0x3a, 0xaa, 0x40, 0x42, 0xe6, - 0xac, 0x19, 0xa6, 0x59, 0x17, 0x70, 0x92, 0xdd, 0xb8, 0xe6, 0x03, 0x3d, 0x32, 0x3c, 0x67, 0x47, - 0xca, 0x05, 0xad, 0x6a, 0x07, 0xc2, 0xee, 0xe4, 0xbe, 0xe4, 0x44, 0xc7, 0x66, 0xbe, 0xba, 0x63, - 0xd5, 0xdf, 0x59, 0x05, 0xd0, 0xac, 0x89, 0x63, 0x0c, 0xad, 0xff, 0x67, 0x2a, 0x8d, 0x62, 0x29, - 0x1e, 0x58, 0xd7, 0x8c, 0x42, 0x30, 0xa2, 0x41, 0x74, 0x4d, 0xf6, 0x43, 0x78, 0xc3, 0xb7, 0x4e, - 0x7d, 0x3b, 0xb4, 0xf4, 0x91, 0xef, 0x8d, 0xf5, 0x84, 0xe4, 0xc1, 0x85, 0x59, 0xa4, 0x4a, 0x5c, - 0x13, 0x44, 0xbb, 0xbe, 0x37, 0x4e, 0x4a, 0x1f, 0xf5, 0x4f, 0x8b, 0x50, 0xaa, 0xbb, 0x86, 0x73, - 0xfe, 0xa5, 0x45, 0x31, 0x01, 0xe4, 0x5d, 0x9d, 0x4c, 0x43, 0xde, 0x5c, 0x7e, 0x60, 0x56, 0x24, - 0x08, 0x35, 0xf4, 0x36, 0x94, 0xbc, 0x69, 0x18, 0xe3, 0xf9, 0x11, 0x1a, 0x70, 0x10, 0x11, 0xc4, - 0xfc, 0xb1, 0xe7, 0x3e, 0xe2, 0x27, 0xf3, 0x67, 0xc6, 0x1f, 0xab, 0xc4, 0x31, 0x3f, 0x11, 0xa0, - 0x34, 0xb2, 0xc7, 0xd4, 0xe0, 0x60, 0x3a, 0xb6, 0x78, 0xa3, 0xd3, 0x3c, 0x3e, 0xad, 0x21, 0x60, - 0x98, 0xcb, 0xd8, 0x1a, 0x7b, 0xfe, 0x39, 0xcf, 0x25, 0xc7, 0x73, 0xe1, 0x20, 0xca, 0xe5, 0x1d, - 0x60, 0xa7, 0x86, 0x1d, 0xea, 0xc9, 0xac, 0xb8, 0x19, 0xa2, 0x20, 0xa6, 0x2f, 0x67, 0x77, 0x05, - 0x72, 0xa6, 0x1d, 0x9c, 0xb4, 0xba, 0xc2, 0x04, 0x11, 0x29, 0x6c, 0x4b, 0x30, 0x34, 0x50, 0x03, - 0x0a, 0x2d, 0xae, 0x2e, 0xa7, 0xb5, 0x22, 0x42, 0xb6, 0x11, 0x80, 0x3b, 0xa8, 0x6b, 0x85, 0xa7, - 0x9e, 0x8f, 0x9c, 0xdc, 0xc2, 0x98, 0x01, 0x50, 0xd3, 0x40, 0x52, 0x2c, 0x88, 0xbc, 0x41, 0x69, - 0x2d, 0x4e, 0xa3, 0xee, 0xce, 0x97, 0x2f, 0x61, 0xcb, 0xbc, 0xfa, 0x33, 0x08, 0xbb, 0x07, 0x55, - 0xaa, 0x3e, 0x59, 0x20, 0xd8, 0x06, 0x3a, 0xe5, 0x4a, 0x6b, 0x65, 0x84, 0x92, 0x33, 0x01, 0xa9, - 0x3e, 0x81, 0x6b, 0x89, 0xf6, 0xe9, 0x86, 0xef, 0x1b, 0xe7, 0xfa, 0xd8, 0xf8, 0xdc, 0xf3, 0xc9, - 0xf1, 0x93, 0xd6, 0xae, 0xc8, 0xdd, 0x56, 0x47, 0xf4, 0x3e, 0x62, 0x2f, 0x64, 0xb5, 0x5d, 0xcf, - 0x27, 0xaf, 0xd0, 0x52, 0x56, 0xc4, 0x92, 0x0b, 0x83, 0x06, 0x98, 0xcc, 0xa1, 0x80, 0xc7, 0x35, - 0x6a, 0x25, 0x82, 0x6d, 0x13, 0x08, 0x0d, 0x82, 0xe0, 0x09, 0x97, 0xac, 0xeb, 0x22, 0xc8, 0xe8, - 0x09, 0xc9, 0x5f, 0x8e, 0x38, 0xb6, 0x0c, 0x93, 0x4e, 0xce, 0x08, 0xb1, 0x67, 0x19, 0x74, 0x2e, - 0x1d, 0x3c, 0xd1, 0x27, 0xd3, 0x90, 0x07, 0x24, 0x6a, 0xd9, 0xe0, 0xc9, 0xc1, 0x34, 0x14, 0xe0, - 0x23, 0x2b, 0xa4, 0x30, 0x44, 0x02, 0x3f, 0xb3, 0x42, 0xdc, 0x08, 0x83, 0x27, 0x91, 0x17, 0xfc, - 0xb2, 0xe8, 0xdb, 0x27, 0xc2, 0xcd, 0xad, 0x42, 0x25, 0x46, 0xea, 0xe3, 0x29, 0x8f, 0x40, 0x4c, - 0x6b, 0xa5, 0x88, 0x60, 0x7f, 0xea, 0xe0, 0xc0, 0x0e, 0x8d, 0xe1, 0xb1, 0xa5, 0xfb, 0x58, 0x95, - 0xab, 0x7c, 0xe8, 0x08, 0xa2, 0x61, 0x6d, 0x6e, 0x00, 0x4f, 0xe8, 0xc7, 0x76, 0x48, 0xde, 0xa9, - 0xb4, 0x56, 0x20, 0xc0, 0x9e, 0x1d, 0xa2, 0x58, 0xe0, 0x48, 0x31, 0x03, 0x29, 0x8b, 0x6b, 0x44, - 0xb4, 0x46, 0x88, 0x7d, 0x82, 0x53, 0x46, 0x0f, 0x40, 0x49, 0xd0, 0x62, 0x7e, 0xd7, 0x89, 0xb4, - 0x2a, 0x91, 0x62, 0xae, 0xf7, 0x81, 0x33, 0xeb, 0x38, 0xf5, 0x78, 0x9e, 0x37, 0xb8, 0x39, 0x4c, - 0xe0, 0x1d, 0x3b, 0x38, 0xa1, 0x1c, 0xef, 0x41, 0x55, 0xa2, 0xc3, 0xfc, 0x6e, 0xf2, 0x99, 0x11, - 0x93, 0x25, 0xea, 0xe8, 0x5b, 0x63, 0x2f, 0x14, 0xcd, 0x7c, 0x43, 0xaa, 0xa3, 0x46, 0xf0, 0x64, - 0x1d, 0x05, 0x2d, 0xe6, 0x79, 0x4b, 0xaa, 0x23, 0x27, 0xc5, 0x5c, 0xef, 0x40, 0x19, 0xa5, 0x48, - 0x68, 0xb9, 0x7c, 0xf1, 0xdf, 0xe6, 0x1d, 0x2b, 0x60, 0xb4, 0xfa, 0xef, 0x40, 0x99, 0xf7, 0xbc, - 0x10, 0x97, 0x9b, 0x9c, 0x44, 0xc0, 0x88, 0x04, 0x4d, 0x32, 0xcb, 0x30, 0xf9, 0xca, 0xbd, 0xc3, - 0x3b, 0x17, 0x01, 0xb4, 0x6e, 0x37, 0xa1, 0x1c, 0x3c, 0xd1, 0x67, 0x78, 0x95, 0x2f, 0x8d, 0xe0, - 0x89, 0x16, 0x51, 0xdc, 0x83, 0x6a, 0xdc, 0x45, 0x9c, 0xe6, 0x2e, 0xef, 0x00, 0x53, 0x74, 0x11, - 0x9d, 0x0d, 0xfe, 0x34, 0x05, 0xd7, 0xbb, 0x74, 0x6a, 0x49, 0x52, 0x75, 0xdf, 0x0a, 0x02, 0xe3, - 0xc8, 0xda, 0xf5, 0xfc, 0xdd, 0xe9, 0x97, 0x5f, 0x9e, 0xb3, 0x07, 0xb0, 0x76, 0x60, 0xf8, 0x96, - 0x1b, 0xc6, 0xa7, 0x5a, 0x42, 0x83, 0x99, 0x07, 0xb3, 0xa7, 0xa0, 0x70, 0xd0, 0x61, 0xac, 0x0b, - 0x0a, 0x6b, 0x28, 0xe9, 0x84, 0x5e, 0xa0, 0x52, 0xff, 0xaa, 0x0a, 0x99, 0x8e, 0x67, 0x5a, 0xec, - 0x3d, 0x28, 0x52, 0x8c, 0xa1, 0xa4, 0x9d, 0x0b, 0xef, 0x05, 0xa2, 0xe9, 0x0f, 0xa9, 0xe5, 0x05, - 0x57, 0x7c, 0x5d, 0x1c, 0x95, 0x78, 0x87, 0x0c, 0x0c, 0x3a, 0xd2, 0xc3, 0x8d, 0xa3, 0x24, 0x9c, - 0x20, 0x64, 0xb3, 0x73, 0x0c, 0x8a, 0x1d, 0x72, 0xff, 0xfa, 0x96, 0x4b, 0x6a, 0x6c, 0x56, 0x8b, - 0xd3, 0x64, 0xd6, 0xf9, 0x1e, 0x6e, 0x72, 0x7c, 0x71, 0x66, 0x97, 0x98, 0x75, 0x1c, 0x4f, 0xab, - 0xf5, 0x3d, 0x28, 0x7e, 0xee, 0xd9, 0x2e, 0xaf, 0x78, 0x6e, 0xa1, 0xe2, 0xa8, 0xb9, 0xf1, 0x8a, - 0x7f, 0x2e, 0xbe, 0xd8, 0x5d, 0xc8, 0x7b, 0x2e, 0xcf, 0x3b, 0xbf, 0x90, 0x77, 0xce, 0x73, 0xdb, - 0x3c, 0xe4, 0xa5, 0x62, 0x07, 0xba, 0x6f, 0x1f, 0x1d, 0x87, 0x3a, 0x72, 0x8a, 0xa3, 0xc0, 0x92, - 0x1d, 0x68, 0x08, 0xc3, 0x6c, 0xd1, 0x5a, 0x1d, 0xd9, 0x0e, 0xee, 0xa5, 0x94, 0x59, 0x71, 0x21, - 0x33, 0xe0, 0x68, 0xca, 0xf0, 0x4d, 0x28, 0x1c, 0xf9, 0xde, 0x74, 0x82, 0xe6, 0x27, 0x2c, 0x50, - 0xe6, 0x09, 0xb7, 0x7d, 0x8e, 0x3b, 0x0b, 0x7d, 0xda, 0xee, 0x91, 0x4e, 0x96, 0x7a, 0x69, 0x33, - 0xfd, 0xa0, 0xa0, 0x95, 0x23, 0x20, 0xd9, 0xe0, 0x6f, 0x42, 0xc1, 0x38, 0x3a, 0xd2, 0x45, 0xe4, - 0xce, 0x42, 0x5e, 0xc6, 0xd1, 0x11, 0x15, 0xb9, 0x05, 0x95, 0x53, 0xdb, 0xd5, 0x83, 0x89, 0x35, - 0xe4, 0xb4, 0x95, 0xc5, 0xae, 0x3c, 0xb5, 0x5d, 0x34, 0x50, 0x89, 0x5e, 0xb6, 0x90, 0xab, 0xaf, - 0xb5, 0x90, 0x37, 0x21, 0xeb, 0xd8, 0x63, 0x3b, 0x14, 0xb1, 0x3c, 0x09, 0x15, 0x9a, 0x10, 0x4c, - 0x85, 0x9c, 0x70, 0x0d, 0x2b, 0x0b, 0x24, 0x02, 0xc3, 0xde, 0x87, 0x92, 0x6f, 0xb8, 0x27, 0xba, - 0x38, 0x57, 0xfd, 0x4c, 0xb6, 0x36, 0x35, 0xc3, 0x3d, 0x11, 0xc7, 0xaa, 0xe0, 0xc7, 0xdf, 0x49, - 0xe5, 0x64, 0xfd, 0x35, 0xca, 0x89, 0xa4, 0x01, 0xb3, 0xaf, 0xd6, 0x80, 0x3f, 0x24, 0x55, 0xd3, - 0x72, 0x43, 0x3d, 0x62, 0xb8, 0xb4, 0x9c, 0xa1, 0xcc, 0xc9, 0xba, 0x9c, 0x0d, 0x1b, 0x40, 0xde, - 0x1e, 0x9d, 0x5c, 0x43, 0x1b, 0x89, 0x06, 0xc4, 0x6e, 0x20, 0x0d, 0xfc, 0x99, 0x4b, 0xa8, 0x0e, - 0x6b, 0xb3, 0x70, 0x46, 0x1e, 0x17, 0x7a, 0x59, 0x76, 0x37, 0x27, 0xe2, 0x1f, 0x23, 0xe5, 0xd6, - 0x4e, 0x04, 0x45, 0xde, 0x85, 0x0a, 0x0f, 0x64, 0xe0, 0xfd, 0x16, 0xd0, 0xfe, 0x51, 0xd4, 0xca, - 0x04, 0xe4, 0xfd, 0x14, 0xb0, 0x2d, 0x80, 0x48, 0x31, 0x0b, 0xcf, 0x68, 0x03, 0x89, 0x5b, 0xc3, - 0x77, 0x99, 0x46, 0x78, 0xa6, 0x15, 0xcd, 0xe8, 0x13, 0xe5, 0xe2, 0xc0, 0x76, 0x4d, 0x9c, 0x7a, - 0xa1, 0x71, 0x14, 0xd4, 0x6a, 0xb4, 0x32, 0x4b, 0x02, 0xd6, 0x37, 0x8e, 0x02, 0x34, 0x80, 0x0c, - 0xae, 0x87, 0xf1, 0x7a, 0x5f, 0x93, 0xbd, 0x23, 0x92, 0x86, 0xa6, 0x95, 0x0c, 0x49, 0x5d, 0xfb, - 0x18, 0x58, 0x74, 0x72, 0x25, 0xd9, 0x33, 0xd7, 0x17, 0x66, 0xe3, 0x9a, 0x38, 0xba, 0x8a, 0x63, - 0xb0, 0x6f, 0x43, 0x29, 0xf0, 0xa6, 0xfe, 0xd0, 0xd2, 0x83, 0xd0, 0x9a, 0xd4, 0x6e, 0x50, 0x85, - 0x80, 0x83, 0x7a, 0xa1, 0x35, 0x61, 0x1f, 0x43, 0x25, 0xa9, 0xcf, 0xde, 0x5c, 0x72, 0x00, 0x44, - 0xd3, 0x42, 0x2b, 0x0f, 0x65, 0x0d, 0xf7, 0x2e, 0x0f, 0xb5, 0xa5, 0xcd, 0x83, 0x18, 0xf9, 0x21, - 0x47, 0xd9, 0xf5, 0xc2, 0x46, 0x04, 0xc3, 0x0e, 0x8c, 0xec, 0x9c, 0xf0, 0x8c, 0xf6, 0x9b, 0xb8, - 0x03, 0x63, 0xcb, 0x02, 0xf5, 0xc6, 0xc8, 0xc8, 0xc0, 0xb9, 0xc0, 0xb5, 0x77, 0x62, 0xb8, 0x9d, - 0x98, 0x0b, 0xb1, 0x5a, 0xaf, 0x81, 0x3f, 0x53, 0xf1, 0x3f, 0x86, 0x2a, 0x77, 0xe1, 0xc6, 0x2b, - 0x6f, 0xf3, 0xa2, 0x95, 0x57, 0x26, 0x42, 0x01, 0x41, 0xe1, 0xc3, 0x19, 0xf9, 0x22, 0xbc, 0xb3, - 0xe8, 0x2a, 0x23, 0x74, 0x9b, 0x56, 0xe2, 0x53, 0xa8, 0x4e, 0x7c, 0x1c, 0xb2, 0xb8, 0x31, 0xaa, - 0xdc, 0x4f, 0x07, 0xbe, 0x35, 0x6b, 0x4f, 0x79, 0x22, 0xa5, 0xd8, 0x0f, 0x60, 0x5d, 0xe2, 0x9c, - 0x9e, 0x10, 0xf3, 0x5d, 0x62, 0xde, 0x98, 0x63, 0x3e, 0x3c, 0x41, 0xf6, 0xea, 0x24, 0x91, 0x66, - 0xf5, 0x39, 0x9f, 0x04, 0xea, 0xfb, 0xf7, 0x88, 0xff, 0xea, 0x05, 0x8e, 0x86, 0x84, 0xb3, 0xe2, - 0x39, 0x3f, 0x33, 0x69, 0x05, 0x4d, 0xd7, 0xac, 0xbd, 0xc9, 0x2f, 0x55, 0x50, 0x82, 0x3d, 0x81, - 0x32, 0xd7, 0x3c, 0x29, 0xa4, 0x31, 0xa8, 0xdd, 0x97, 0x9d, 0xb2, 0xa4, 0x7e, 0x12, 0x42, 0x2b, - 0x39, 0xf1, 0x77, 0xc0, 0x3e, 0x82, 0x75, 0xde, 0x6b, 0xb2, 0xe0, 0x7e, 0x6b, 0x71, 0x22, 0x12, - 0xd1, 0xee, 0x4c, 0x7a, 0x6b, 0x70, 0xcd, 0x9f, 0xba, 0xa4, 0x8d, 0x0a, 0xce, 0x89, 0xef, 0x0d, - 0x2c, 0xce, 0xff, 0x80, 0xf8, 0x45, 0x73, 0x34, 0x4e, 0xc6, 0x79, 0x69, 0xdc, 0xae, 0xf8, 0x32, - 0xe8, 0x00, 0xf9, 0x2e, 0xc8, 0x73, 0x30, 0xb5, 0x1d, 0x93, 0xe7, 0xf9, 0x9d, 0x6f, 0x92, 0xe7, - 0x36, 0xf2, 0x51, 0x9e, 0x0c, 0x32, 0xd3, 0xa9, 0x6d, 0xd6, 0x1e, 0xf2, 0xe8, 0x43, 0xfc, 0x66, - 0x6f, 0x42, 0xd5, 0xb7, 0x86, 0x53, 0x3f, 0xb0, 0x5f, 0x59, 0x7a, 0x60, 0xbb, 0x27, 0xb5, 0xb7, - 0xa9, 0x1f, 0x2b, 0x31, 0xb4, 0x67, 0xbb, 0x27, 0x38, 0x79, 0xad, 0xb3, 0xd0, 0xf2, 0x5d, 0x1e, + 0x96, 0x10, 0x9c, 0x4e, 0xff, 0x1f, 0x3b, 0x9d, 0x91, 0xb7, 0xb2, 0xaa, 0x5c, 0x3f, 0x5d, 0x95, + 0x15, 0x55, 0x5d, 0x5d, 0x53, 0xdd, 0x9d, 0xd5, 0x5d, 0xd5, 0x3f, 0xd5, 0xb3, 0x33, 0x3b, 0xe3, + 0xb4, 0x9d, 0x95, 0x9e, 0x72, 0xda, 0x39, 0x61, 0x67, 0x55, 0xf7, 0xec, 0xb7, 0x0a, 0x85, 0x1d, + 0xe1, 0xcc, 0xe8, 0x0c, 0x47, 0xb8, 0x23, 0xc2, 0x95, 0x99, 0x2d, 0xad, 0xbe, 0x11, 0x48, 0xbb, + 0x2c, 0x3c, 0xa2, 0x5d, 0x78, 0x60, 0xa5, 0xd9, 0x95, 0x10, 0x08, 0x81, 0x04, 0xd2, 0xa2, 0xe5, + 0x85, 0x27, 0x5e, 0x16, 0x10, 0x0b, 0xd2, 0x22, 0x10, 0x20, 0x2d, 0x68, 0x78, 0x43, 0x42, 0x80, + 0xe0, 0x1d, 0x74, 0xce, 0xbd, 0x11, 0xbe, 0x61, 0x3b, 0xbb, 0xba, 0x7b, 0x66, 0x25, 0x78, 0xc9, + 0x8c, 0x7b, 0x7e, 0xee, 0xff, 0x3d, 0xf7, 0x9c, 0x73, 0xcf, 0xbd, 0x06, 0x98, 0x38, 0x86, 0xbb, + 0x3d, 0xf1, 0xbd, 0xd0, 0x63, 0x19, 0xfc, 0xbe, 0xfe, 0xee, 0x91, 0x1d, 0x1e, 0x4f, 0x07, 0xdb, + 0x43, 0x6f, 0xfc, 0xe8, 0xc8, 0x3b, 0xf2, 0x1e, 0x11, 0x72, 0x30, 0x1d, 0x51, 0x8a, 0x12, 0xf4, + 0xc5, 0x99, 0xae, 0x83, 0xe3, 0x0d, 0x4f, 0xc4, 0xf7, 0x7a, 0x68, 0x8f, 0xad, 0x20, 0x34, 0xc6, + 0x13, 0x0e, 0x50, 0xff, 0x28, 0x05, 0x99, 0xfe, 0xf9, 0xc4, 0x62, 0x15, 0x58, 0xb5, 0xcd, 0x6a, + 0x6a, 0x2b, 0xf5, 0x20, 0xab, 0xad, 0xda, 0x26, 0xdb, 0x82, 0x92, 0xeb, 0x85, 0x9d, 0xa9, 0xe3, + 0x18, 0x03, 0xc7, 0xaa, 0xae, 0x6e, 0xa5, 0x1e, 0x14, 0x34, 0x19, 0xc4, 0x6e, 0x40, 0xd1, 0x98, + 0x86, 0x9e, 0x6e, 0xbb, 0x43, 0xbf, 0x9a, 0x26, 0x7c, 0x01, 0x01, 0x2d, 0x77, 0xe8, 0xb3, 0x4d, + 0xc8, 0x9e, 0xda, 0x66, 0x78, 0x5c, 0xcd, 0x50, 0x8e, 0x3c, 0x81, 0xd0, 0x60, 0x68, 0x38, 0x56, + 0x35, 0xcb, 0xa1, 0x94, 0x40, 0x68, 0x48, 0x85, 0xe4, 0xb6, 0x52, 0x0f, 0x8a, 0x1a, 0x4f, 0xb0, + 0x5b, 0x00, 0x96, 0x3b, 0x1d, 0xbf, 0x32, 0x9c, 0xa9, 0x15, 0x54, 0xf3, 0x84, 0x92, 0x20, 0xea, + 0x0f, 0xa0, 0x38, 0x0e, 0x8e, 0xf6, 0x2c, 0xc3, 0xb4, 0x7c, 0x76, 0x15, 0xf2, 0xe3, 0xe0, 0x48, + 0x0f, 0x8d, 0x23, 0xd1, 0x84, 0xdc, 0x38, 0x38, 0xea, 0x1b, 0x47, 0xec, 0x1a, 0x14, 0x08, 0x71, + 0x3e, 0xe1, 0x6d, 0xc8, 0x6a, 0x48, 0x88, 0x2d, 0x56, 0x7f, 0x3b, 0x07, 0xf9, 0xb6, 0x1d, 0x5a, + 0xbe, 0xe1, 0xb0, 0x2b, 0x90, 0xb3, 0x03, 0x77, 0xea, 0x38, 0xc4, 0x5e, 0xd0, 0x44, 0x8a, 0x5d, + 0x81, 0xac, 0xfd, 0xf4, 0x95, 0xe1, 0x70, 0xde, 0xbd, 0x15, 0x8d, 0x27, 0x59, 0x15, 0x72, 0xf6, + 0xfb, 0x1f, 0x21, 0x22, 0x2d, 0x10, 0x22, 0x4d, 0x98, 0x27, 0x8f, 0x11, 0x93, 0x89, 0x31, 0x94, + 0x26, 0xcc, 0x47, 0x1f, 0x20, 0x06, 0x5b, 0x9f, 0x26, 0x0c, 0xa5, 0xb1, 0x94, 0x29, 0x95, 0x82, + 0x1d, 0xb0, 0x86, 0xa5, 0x4c, 0xa3, 0x52, 0xa6, 0xbc, 0x94, 0xbc, 0x40, 0x88, 0x34, 0x61, 0x78, + 0x29, 0x85, 0x18, 0x13, 0x97, 0x32, 0xe5, 0xa5, 0x14, 0xb7, 0x52, 0x0f, 0x32, 0x84, 0xe1, 0xa5, + 0x6c, 0x42, 0xc6, 0x44, 0x38, 0x6c, 0xa5, 0x1e, 0xa4, 0xf6, 0x56, 0x34, 0x4a, 0x21, 0x34, 0x40, + 0x68, 0x09, 0x3b, 0x18, 0xa1, 0x81, 0x80, 0x0e, 0x10, 0x5a, 0xc6, 0xde, 0x40, 0xe8, 0x40, 0x40, + 0x47, 0x08, 0x5d, 0xdb, 0x4a, 0x3d, 0x58, 0x45, 0x28, 0xa6, 0xd8, 0x75, 0xc8, 0x9b, 0x46, 0x68, + 0x21, 0xa2, 0x22, 0x9a, 0x1c, 0x01, 0x10, 0x87, 0x33, 0x0e, 0x71, 0xeb, 0xa2, 0xd1, 0x11, 0x80, + 0xa9, 0x50, 0x42, 0xb2, 0x08, 0xaf, 0x08, 0xbc, 0x0c, 0x64, 0x1f, 0x42, 0xd9, 0xb4, 0x86, 0xf6, + 0xd8, 0x70, 0x78, 0x9b, 0x36, 0xb6, 0x52, 0x0f, 0x4a, 0x8f, 0xd7, 0xb7, 0x69, 0x4d, 0xc4, 0x98, + 0xbd, 0x15, 0x2d, 0x41, 0xc6, 0x9e, 0xc2, 0x9a, 0x48, 0xbf, 0xff, 0x98, 0x3a, 0x96, 0x11, 0x9f, + 0x92, 0xe0, 0x7b, 0xff, 0xf1, 0xd3, 0xbd, 0x15, 0x2d, 0x49, 0xc8, 0xee, 0x41, 0x39, 0x5e, 0x22, + 0xc8, 0x78, 0x49, 0xd4, 0x2a, 0x01, 0xc5, 0x66, 0x7d, 0x1e, 0x78, 0x2e, 0x12, 0x6c, 0x8a, 0x7e, + 0x8b, 0x00, 0x6c, 0x0b, 0xc0, 0xb4, 0x46, 0xc6, 0xd4, 0x09, 0x11, 0x7d, 0x59, 0x74, 0xa0, 0x04, + 0x63, 0xb7, 0xa0, 0x38, 0x9d, 0x60, 0x2b, 0x5f, 0x18, 0x4e, 0xf5, 0x8a, 0x20, 0x98, 0x81, 0x30, + 0x77, 0x9c, 0xe7, 0x88, 0xbd, 0x2a, 0x46, 0x37, 0x02, 0xe0, 0xf0, 0xbe, 0xb2, 0x86, 0x88, 0xaa, + 0x8a, 0x82, 0x45, 0x1a, 0x57, 0x91, 0x1d, 0xec, 0xd8, 0x6e, 0xf5, 0x1a, 0xcd, 0x60, 0x9e, 0x60, + 0x37, 0x21, 0x1d, 0xf8, 0xc3, 0xea, 0x75, 0x6a, 0x3f, 0xf0, 0xf6, 0x37, 0xcf, 0x26, 0xbe, 0x86, + 0xe0, 0x9d, 0x3c, 0x64, 0x69, 0x35, 0xa9, 0x37, 0xa1, 0x70, 0x60, 0xf8, 0xc6, 0x58, 0xb3, 0x46, + 0x4c, 0x81, 0xf4, 0xc4, 0x0b, 0xc4, 0x3a, 0xc2, 0x4f, 0xb5, 0x0d, 0xb9, 0x17, 0x86, 0x8f, 0x38, + 0x06, 0x19, 0xd7, 0x18, 0x5b, 0x84, 0x2c, 0x6a, 0xf4, 0x8d, 0x6b, 0x27, 0x38, 0x0f, 0x42, 0x6b, + 0x2c, 0x84, 0x84, 0x48, 0x21, 0xfc, 0xc8, 0xf1, 0x06, 0x62, 0x8d, 0x14, 0x34, 0x91, 0x52, 0xff, + 0x42, 0x0a, 0x72, 0x75, 0xcf, 0xc1, 0xec, 0xae, 0x42, 0xde, 0xb7, 0x1c, 0x7d, 0x56, 0x5c, 0xce, + 0xb7, 0x9c, 0x03, 0x2f, 0x40, 0xc4, 0xd0, 0xe3, 0x08, 0xbe, 0x6a, 0x73, 0x43, 0x8f, 0x10, 0x51, + 0x05, 0xd2, 0x52, 0x05, 0xae, 0x41, 0x21, 0x1c, 0x38, 0x3a, 0xc1, 0x33, 0x04, 0xcf, 0x87, 0x03, + 0xa7, 0x83, 0xa8, 0xab, 0x90, 0x37, 0x07, 0x1c, 0x93, 0x25, 0x4c, 0xce, 0x1c, 0x20, 0x42, 0xfd, + 0x04, 0x8a, 0x9a, 0x71, 0x2a, 0xaa, 0x71, 0x19, 0x72, 0x98, 0x81, 0x90, 0x7f, 0x19, 0x2d, 0x1b, + 0x0e, 0x9c, 0x96, 0x89, 0x60, 0xac, 0x84, 0x6d, 0x52, 0x1d, 0x32, 0x5a, 0x76, 0xe8, 0x39, 0x2d, + 0x53, 0xed, 0x03, 0xd4, 0x3d, 0xdf, 0xff, 0xd6, 0x4d, 0xd8, 0x84, 0xac, 0x69, 0x4d, 0xc2, 0x63, + 0x2e, 0x3a, 0x34, 0x9e, 0x50, 0x1f, 0x42, 0x01, 0xc7, 0xa5, 0x6d, 0x07, 0x21, 0xbb, 0x05, 0x19, + 0xc7, 0x0e, 0xc2, 0x6a, 0x6a, 0x2b, 0x3d, 0x37, 0x6a, 0x04, 0x57, 0xb7, 0xa0, 0xb0, 0x6f, 0x9c, + 0xbd, 0xc0, 0x91, 0xc3, 0xdc, 0x68, 0x08, 0xc5, 0x90, 0x88, 0xf1, 0x2c, 0x03, 0xf4, 0x0d, 0xff, + 0xc8, 0x0a, 0x49, 0xd2, 0xfd, 0xcf, 0x14, 0x94, 0x7a, 0xd3, 0xc1, 0x17, 0x53, 0xcb, 0x3f, 0xc7, + 0x3a, 0x3f, 0x80, 0x74, 0x78, 0x3e, 0x21, 0x8e, 0xca, 0xe3, 0x2b, 0x3c, 0x7b, 0x09, 0xbf, 0x8d, + 0x4c, 0x1a, 0x92, 0x60, 0x23, 0x5c, 0xcf, 0xb4, 0xa2, 0x3e, 0xc8, 0x6a, 0x39, 0x4c, 0xb6, 0x4c, + 0xdc, 0x2e, 0xbc, 0x89, 0x18, 0x85, 0x55, 0x6f, 0xc2, 0xb6, 0x20, 0x3b, 0x3c, 0xb6, 0x1d, 0x93, + 0x06, 0x20, 0x59, 0x67, 0x8e, 0xc0, 0x51, 0xf2, 0xbd, 0x53, 0x3d, 0xb0, 0xbf, 0x8c, 0xc4, 0x7f, + 0xde, 0xf7, 0x4e, 0x7b, 0xf6, 0x97, 0x96, 0xda, 0x17, 0x7b, 0x10, 0x40, 0xae, 0x57, 0xaf, 0xb5, + 0x6b, 0x9a, 0xb2, 0x82, 0xdf, 0xcd, 0x4f, 0x5b, 0xbd, 0x7e, 0x4f, 0x49, 0xb1, 0x0a, 0x40, 0xa7, + 0xdb, 0xd7, 0x45, 0x7a, 0x95, 0xe5, 0x60, 0xb5, 0xd5, 0x51, 0xd2, 0x48, 0x83, 0xf0, 0x56, 0x47, + 0xc9, 0xb0, 0x3c, 0xa4, 0x6b, 0x9d, 0xcf, 0x94, 0x2c, 0x7d, 0xb4, 0xdb, 0x4a, 0x4e, 0xfd, 0x93, + 0x55, 0x28, 0x76, 0x07, 0x9f, 0x5b, 0xc3, 0x10, 0xdb, 0x8c, 0xb3, 0xd4, 0xf2, 0x5f, 0x59, 0x3e, + 0x35, 0x3b, 0xad, 0x89, 0x14, 0x36, 0xc4, 0x1c, 0x50, 0xe3, 0xd2, 0xda, 0xaa, 0x39, 0x20, 0xba, + 0xe1, 0xb1, 0x35, 0x36, 0xa8, 0x71, 0x48, 0x47, 0x29, 0x5c, 0x15, 0xde, 0xe0, 0x73, 0x6a, 0x5e, + 0x5a, 0xc3, 0x4f, 0x76, 0x1b, 0x4a, 0x3c, 0x0f, 0x79, 0x7e, 0x01, 0x07, 0xcd, 0x4f, 0xbe, 0x9c, + 0x3c, 0xf9, 0x88, 0x93, 0x72, 0xe5, 0x48, 0xb1, 0xb7, 0x71, 0x50, 0x47, 0xcc, 0x68, 0x6f, 0xf0, + 0x39, 0xc7, 0x16, 0xf8, 0x8c, 0xf6, 0x06, 0x9f, 0x13, 0xea, 0x6d, 0xd8, 0x08, 0xa6, 0x83, 0x60, + 0xe8, 0xdb, 0x93, 0xd0, 0xf6, 0x5c, 0x4e, 0x53, 0x24, 0x1a, 0x45, 0x46, 0x10, 0xf1, 0x03, 0x28, + 0x4c, 0xa6, 0x03, 0xdd, 0x76, 0x47, 0x1e, 0x89, 0xfd, 0xd2, 0xe3, 0x35, 0x3e, 0x30, 0x07, 0xd3, + 0x41, 0xcb, 0x1d, 0x79, 0x5a, 0x7e, 0xc2, 0x3f, 0x98, 0x0a, 0x6b, 0xae, 0x17, 0xea, 0xa8, 0x2a, + 0xe8, 0x63, 0x2b, 0x34, 0x68, 0x3f, 0xe0, 0x1b, 0x7e, 0xdb, 0x1b, 0x9e, 0xec, 0x5b, 0xa1, 0xa1, + 0xde, 0x87, 0xbc, 0xe0, 0xc3, 0xbd, 0x3f, 0xb4, 0x5c, 0xc3, 0x0d, 0xf5, 0x58, 0x69, 0x28, 0x70, + 0x40, 0xcb, 0x54, 0xff, 0x30, 0x05, 0x4a, 0x4f, 0xaa, 0x0a, 0x32, 0x2f, 0x95, 0x1c, 0x6f, 0x00, + 0x18, 0xc3, 0xa1, 0x37, 0xe5, 0xd9, 0xf0, 0x09, 0x56, 0x14, 0x90, 0x96, 0x29, 0xf7, 0x5f, 0x3a, + 0xd1, 0x7f, 0x77, 0xa0, 0x1c, 0xf1, 0x49, 0x8b, 0xbe, 0x24, 0x60, 0x51, 0x0f, 0x06, 0xd3, 0xc4, + 0xca, 0xcf, 0x07, 0x53, 0xce, 0x7d, 0x05, 0x72, 0xa4, 0x61, 0x04, 0xd1, 0xa8, 0xf0, 0x94, 0xfa, + 0x6f, 0x53, 0xb0, 0xd6, 0x72, 0x4d, 0xeb, 0xac, 0x37, 0x34, 0xdc, 0xa8, 0x53, 0xec, 0x40, 0xb7, + 0x11, 0xa6, 0x07, 0x43, 0xc3, 0x15, 0xca, 0x41, 0xc9, 0x0e, 0x62, 0x3a, 0x6c, 0x03, 0x27, 0xa0, + 0xa2, 0x56, 0x29, 0xc7, 0x22, 0x41, 0xa8, 0xb0, 0xfb, 0xb0, 0x3e, 0xb0, 0x1c, 0xcf, 0x3d, 0xd2, + 0x43, 0x4f, 0xe7, 0x5a, 0x0e, 0x6f, 0xcb, 0x1a, 0x07, 0xf7, 0xbd, 0x3e, 0x69, 0x3b, 0x9b, 0x90, + 0x9d, 0x18, 0x7e, 0x18, 0x54, 0x33, 0x5b, 0x69, 0x5c, 0xc6, 0x94, 0xc0, 0x6e, 0xb6, 0x03, 0x7d, + 0xea, 0xda, 0x5f, 0x4c, 0x79, 0x33, 0x0a, 0x5a, 0xc1, 0x0e, 0x0e, 0x29, 0xcd, 0x1e, 0x80, 0xc2, + 0x4b, 0xa6, 0x6c, 0xe5, 0x79, 0x56, 0x21, 0x38, 0x65, 0x4c, 0xc2, 0xee, 0x2f, 0xaf, 0x42, 0x61, + 0x77, 0xea, 0x0e, 0x71, 0x30, 0xd8, 0x5d, 0xc8, 0x8c, 0xa6, 0xee, 0x90, 0xda, 0x12, 0x6f, 0xa5, + 0xf1, 0x3a, 0xd1, 0x08, 0x89, 0x12, 0xc8, 0xf0, 0x8f, 0x50, 0x72, 0x2d, 0x48, 0x20, 0x84, 0xab, + 0xff, 0x28, 0xc5, 0x73, 0xdc, 0x75, 0x8c, 0x23, 0x56, 0x80, 0x4c, 0xa7, 0xdb, 0x69, 0x2a, 0x2b, + 0xac, 0x0c, 0x85, 0x56, 0xa7, 0xdf, 0xd4, 0x3a, 0xb5, 0xb6, 0x92, 0xa2, 0xe5, 0xdc, 0xaf, 0xed, + 0xb4, 0x9b, 0xca, 0x2a, 0x62, 0x5e, 0x74, 0xdb, 0xb5, 0x7e, 0xab, 0xdd, 0x54, 0x32, 0x1c, 0xa3, + 0xb5, 0xea, 0x7d, 0xa5, 0xc0, 0x14, 0x28, 0x1f, 0x68, 0xdd, 0xc6, 0x61, 0xbd, 0xa9, 0x77, 0x0e, + 0xdb, 0x6d, 0x45, 0x61, 0x97, 0x60, 0x3d, 0x86, 0x74, 0x39, 0x70, 0x0b, 0x59, 0x5e, 0xd4, 0xb4, + 0x9a, 0xf6, 0x4c, 0xf9, 0x21, 0x2b, 0x40, 0xba, 0xf6, 0xec, 0x99, 0xf2, 0x53, 0x94, 0x0c, 0xc5, + 0x97, 0xad, 0x8e, 0xfe, 0xa2, 0xd6, 0x3e, 0x6c, 0x2a, 0x3f, 0x5d, 0x8d, 0xd2, 0x5d, 0xad, 0xd1, + 0xd4, 0x94, 0x9f, 0x66, 0xd8, 0x06, 0x94, 0x7f, 0xd2, 0xed, 0x34, 0xf7, 0x6b, 0x07, 0x07, 0x54, + 0x91, 0x9f, 0x16, 0xd4, 0xff, 0x9a, 0x81, 0x0c, 0xb6, 0x84, 0xa9, 0x33, 0x29, 0x18, 0x37, 0x11, + 0xc5, 0xd0, 0x4e, 0xe6, 0x8f, 0xff, 0xec, 0xf6, 0x0a, 0x97, 0x7f, 0x77, 0x20, 0xed, 0xd8, 0x21, + 0x0d, 0x6b, 0xbc, 0x76, 0x84, 0xce, 0xb8, 0xb7, 0xa2, 0x21, 0x8e, 0xdd, 0x82, 0x14, 0x17, 0x84, + 0xa5, 0xc7, 0x15, 0xb1, 0xb8, 0xc4, 0x4e, 0xba, 0xb7, 0xa2, 0xa5, 0x26, 0xec, 0x26, 0xa4, 0x5e, + 0x09, 0xa9, 0x58, 0xe6, 0x78, 0xbe, 0x97, 0x22, 0xf6, 0x15, 0xdb, 0x82, 0xf4, 0xd0, 0xe3, 0x1a, + 0x61, 0x8c, 0xe7, 0x3b, 0x0b, 0xe6, 0x3f, 0xf4, 0x1c, 0x76, 0x17, 0xd2, 0xbe, 0x71, 0x4a, 0x23, + 0x1b, 0x0f, 0x57, 0xbc, 0x75, 0x21, 0x91, 0x6f, 0x9c, 0x62, 0x25, 0x46, 0x24, 0x47, 0xe2, 0x4a, + 0x44, 0xe3, 0x8d, 0xc5, 0x8c, 0xd8, 0x16, 0xa4, 0x4e, 0x49, 0x92, 0xc4, 0x4a, 0xd0, 0x4b, 0xdb, + 0x35, 0xbd, 0xd3, 0xde, 0xc4, 0x1a, 0x22, 0xc5, 0x29, 0x7b, 0x13, 0xd2, 0xc1, 0x74, 0x40, 0x92, + 0xa4, 0xf4, 0x78, 0x63, 0x61, 0x4f, 0xc0, 0x82, 0x82, 0xe9, 0x80, 0xdd, 0x87, 0xcc, 0xd0, 0xf3, + 0x7d, 0x21, 0x4d, 0x94, 0xa8, 0xc2, 0xd1, 0x76, 0x88, 0x4a, 0x21, 0xe2, 0xb1, 0xc0, 0x90, 0x64, + 0x48, 0x4c, 0x34, 0xdb, 0x8f, 0xb0, 0xc0, 0x90, 0xdd, 0x13, 0x9b, 0x5c, 0x59, 0xae, 0x75, 0xb4, + 0x05, 0x62, 0x3e, 0x88, 0xc5, 0x41, 0x1a, 0x1b, 0x67, 0xa4, 0x71, 0xc6, 0x44, 0xd1, 0xde, 0x87, + 0x75, 0x1a, 0x1b, 0x67, 0xec, 0x1e, 0xa4, 0x5f, 0x59, 0x43, 0x52, 0x3e, 0xe3, 0xd2, 0xc4, 0x20, + 0xbd, 0xa0, 0xe6, 0x21, 0x9a, 0xe6, 0xbd, 0xe7, 0x98, 0xa4, 0x87, 0xc6, 0x63, 0xb9, 0xeb, 0x39, + 0xe6, 0x0b, 0x1a, 0x4b, 0x42, 0xe2, 0x96, 0x6f, 0x4c, 0xcf, 0x50, 0x1a, 0x29, 0x7c, 0x73, 0x36, + 0xa6, 0x67, 0x2d, 0x13, 0x85, 0xbf, 0x6b, 0xbe, 0x22, 0xed, 0x33, 0xa5, 0xe1, 0x27, 0x9a, 0x47, + 0x81, 0xe5, 0x58, 0xc3, 0xd0, 0x7e, 0x65, 0x87, 0xe7, 0xa4, 0x5f, 0xa6, 0x34, 0x19, 0xb4, 0x93, + 0x83, 0x8c, 0x75, 0x36, 0xf1, 0xd5, 0x3d, 0xc8, 0x8b, 0x52, 0x16, 0x6c, 0xac, 0x6b, 0x50, 0xb0, + 0x03, 0x7d, 0xe8, 0xb9, 0x41, 0x28, 0x74, 0xa7, 0xbc, 0x1d, 0xd4, 0x31, 0x89, 0xe2, 0xd2, 0x34, + 0x42, 0xbe, 0x09, 0x95, 0x35, 0xfa, 0x56, 0x1f, 0x03, 0xcc, 0x9a, 0x85, 0x75, 0x72, 0x2c, 0x37, + 0x52, 0xd3, 0x1c, 0xcb, 0x8d, 0x79, 0x56, 0x25, 0x9e, 0x6b, 0x50, 0x8c, 0x35, 0x63, 0x56, 0x86, + 0x94, 0x21, 0xb6, 0xbf, 0x94, 0xa1, 0x3e, 0x40, 0x45, 0x35, 0xd2, 0x7d, 0x93, 0x38, 0x4c, 0x45, + 0x9b, 0x62, 0x6a, 0xa0, 0x7e, 0x0f, 0xca, 0x9a, 0x15, 0x4c, 0x9d, 0xb0, 0xee, 0x39, 0x0d, 0x6b, + 0xc4, 0xde, 0x01, 0x88, 0xd3, 0x81, 0xd0, 0x52, 0x66, 0x73, 0xb7, 0x61, 0x8d, 0x34, 0x09, 0xaf, + 0xfe, 0xed, 0x0c, 0xe9, 0x7b, 0x0d, 0xae, 0x68, 0x09, 0x8d, 0x2a, 0x25, 0x69, 0x54, 0xf1, 0xde, + 0xb0, 0x9a, 0xd4, 0x2a, 0x8f, 0x6d, 0xd3, 0xb4, 0xdc, 0x48, 0x7b, 0xe4, 0x29, 0x1c, 0x6c, 0xc3, + 0x39, 0xa2, 0x05, 0x55, 0x79, 0xcc, 0xa2, 0x42, 0xc7, 0x13, 0xdf, 0x0a, 0x02, 0xae, 0xb7, 0x18, + 0xce, 0x51, 0xb4, 0xb6, 0xb3, 0x5f, 0xb5, 0xb6, 0xaf, 0x41, 0x01, 0xb7, 0x3c, 0xb2, 0xfa, 0x72, + 0xbc, 0xf7, 0x85, 0x79, 0xcb, 0xde, 0x82, 0xbc, 0xd0, 0xd7, 0xc5, 0xa2, 0x12, 0xd3, 0xa5, 0xc1, + 0x81, 0x5a, 0x84, 0x65, 0x55, 0x54, 0xf2, 0xc6, 0x63, 0xcb, 0x0d, 0xa3, 0x7d, 0x5a, 0x24, 0xd9, + 0xdb, 0x50, 0xf4, 0x5c, 0x9d, 0x2b, 0xf5, 0x62, 0x55, 0x89, 0xe9, 0xdb, 0x75, 0x0f, 0x09, 0xaa, + 0x15, 0x3c, 0xf1, 0x85, 0x55, 0x71, 0xbc, 0x53, 0x7d, 0x68, 0xf8, 0x26, 0xad, 0xac, 0x82, 0x96, + 0x77, 0xbc, 0xd3, 0xba, 0xe1, 0x9b, 0x5c, 0x6f, 0xf9, 0xc2, 0x9d, 0x8e, 0x69, 0x35, 0xad, 0x69, + 0x22, 0xc5, 0x6e, 0x42, 0x71, 0xe8, 0x4c, 0x83, 0xd0, 0xf2, 0x77, 0xce, 0xb9, 0x99, 0xa6, 0xcd, + 0x00, 0x58, 0xaf, 0x89, 0x6f, 0x8f, 0x0d, 0xff, 0x9c, 0x96, 0x4e, 0x41, 0x8b, 0x92, 0xb4, 0xd1, + 0x9c, 0xd8, 0xe6, 0x19, 0xb7, 0xd5, 0x34, 0x9e, 0x40, 0xfa, 0x63, 0xb2, 0xa4, 0x03, 0x5a, 0x1f, + 0x05, 0x2d, 0x4a, 0xd2, 0x38, 0xd0, 0x27, 0xad, 0x88, 0xa2, 0x26, 0x52, 0x09, 0xa5, 0x7b, 0xe3, + 0x42, 0xa5, 0x9b, 0xcd, 0xeb, 0x3d, 0x9e, 0x6f, 0x1f, 0xd9, 0x42, 0x6b, 0xb9, 0xc4, 0xf5, 0x1e, + 0x0e, 0xa2, 0x8d, 0xea, 0x0b, 0xc8, 0x8b, 0x2e, 0xc6, 0x1d, 0x08, 0x97, 0x4f, 0x52, 0x3c, 0xf3, + 0x1d, 0x08, 0xe1, 0xec, 0x2e, 0xac, 0x89, 0xbc, 0x82, 0xd0, 0xb7, 0xdd, 0x23, 0x31, 0x79, 0xca, + 0x1c, 0xd8, 0x23, 0x18, 0x2a, 0x0a, 0x38, 0xbc, 0xba, 0x31, 0xb0, 0x1d, 0x5c, 0xa6, 0x69, 0xa1, + 0xd4, 0x4c, 0x1d, 0xa7, 0xc6, 0x41, 0x6a, 0x17, 0x0a, 0xd1, 0x80, 0xfc, 0x52, 0xca, 0x54, 0x7f, + 0x33, 0x05, 0x25, 0x52, 0x0f, 0xba, 0xa4, 0xfc, 0xb0, 0x77, 0x80, 0x0d, 0x7d, 0xcb, 0x08, 0x2d, + 0xdd, 0x3a, 0x0b, 0x7d, 0x43, 0x28, 0x01, 0x5c, 0x93, 0x50, 0x38, 0xa6, 0x89, 0x08, 0xae, 0x07, + 0xdc, 0x86, 0xd2, 0xc4, 0xf0, 0x83, 0x48, 0xa9, 0xe4, 0x05, 0x00, 0x07, 0x09, 0x95, 0x4e, 0x71, + 0x8f, 0x7c, 0x63, 0xac, 0x87, 0xde, 0x89, 0xe5, 0x72, 0x75, 0x9a, 0x1b, 0x12, 0x15, 0x82, 0xf7, + 0x11, 0x4c, 0x5a, 0xf5, 0xbf, 0x4f, 0xc1, 0xda, 0x01, 0x1f, 0xf5, 0xe7, 0xd6, 0x79, 0x83, 0x5b, + 0x6f, 0xc3, 0x68, 0xc5, 0x66, 0x34, 0xfa, 0x66, 0xb7, 0xa0, 0x34, 0x39, 0xb1, 0xce, 0xf5, 0x84, + 0xa5, 0x53, 0x44, 0x50, 0x9d, 0xd6, 0xe6, 0x77, 0x20, 0xe7, 0x51, 0x43, 0xc4, 0x1e, 0x27, 0xb6, + 0x06, 0xa9, 0x85, 0x9a, 0x20, 0x40, 0x75, 0x29, 0xce, 0x4a, 0xd6, 0xcb, 0x44, 0x66, 0x54, 0xfd, + 0x4d, 0xc8, 0x22, 0x2a, 0xa8, 0x66, 0xb9, 0x9e, 0x43, 0x09, 0xf6, 0x1e, 0xac, 0x0d, 0xbd, 0xf1, + 0x44, 0x8f, 0xd8, 0xc5, 0x6e, 0x97, 0x94, 0x29, 0x25, 0x24, 0x39, 0xe0, 0x79, 0xa9, 0xbf, 0x9b, + 0x86, 0x02, 0xd5, 0x41, 0x88, 0x15, 0xdb, 0x3c, 0x8b, 0xc4, 0x4a, 0x51, 0xcb, 0xda, 0x26, 0x4a, + 0xed, 0xd7, 0xa8, 0x66, 0xb1, 0xca, 0x95, 0x96, 0x55, 0xae, 0x2b, 0x90, 0x13, 0xfa, 0x56, 0x86, + 0xcb, 0x9d, 0xe9, 0xc5, 0xda, 0x56, 0x76, 0x99, 0xb6, 0x85, 0x43, 0xc8, 0x69, 0xac, 0x33, 0xdc, + 0xdf, 0xb8, 0x68, 0x01, 0x02, 0x35, 0x11, 0x22, 0x0b, 0x8d, 0x7c, 0x52, 0x68, 0x54, 0x21, 0xff, + 0xca, 0x0e, 0x6c, 0x9c, 0x20, 0x05, 0xbe, 0x0c, 0x45, 0x52, 0x1a, 0x86, 0xe2, 0xeb, 0x86, 0x21, + 0x6e, 0xb6, 0xe1, 0x1c, 0x71, 0xb5, 0x3f, 0x6a, 0x76, 0xcd, 0x39, 0xf2, 0xd8, 0xfb, 0x70, 0x79, + 0x86, 0x16, 0xad, 0x21, 0xf7, 0x18, 0x79, 0x80, 0x34, 0x16, 0x53, 0x52, 0x8b, 0xc8, 0x2e, 0x7b, + 0x08, 0x1b, 0x12, 0xcb, 0x04, 0xd5, 0x9b, 0x80, 0x64, 0x4e, 0x51, 0x5b, 0x8f, 0xc9, 0x49, 0xeb, + 0x09, 0xd4, 0x7f, 0xba, 0x0a, 0x6b, 0xbb, 0x9e, 0x6f, 0xd9, 0x47, 0xee, 0x6c, 0xd6, 0x2d, 0x68, + 0xfe, 0xd1, 0x4c, 0x5c, 0x95, 0x66, 0xe2, 0x6d, 0x28, 0x8d, 0x38, 0xa3, 0x1e, 0x0e, 0xb8, 0xd3, + 0x20, 0xa3, 0x81, 0x00, 0xf5, 0x07, 0x0e, 0xae, 0xe6, 0x88, 0x80, 0x98, 0x33, 0xc4, 0x1c, 0x31, + 0xe1, 0x5e, 0xc3, 0xbe, 0x4b, 0x52, 0xd7, 0xb4, 0x1c, 0x2b, 0xe4, 0xc3, 0x53, 0x79, 0xfc, 0x46, + 0xb4, 0xd3, 0x4b, 0x75, 0xda, 0xd6, 0xac, 0x51, 0x8d, 0xd4, 0x23, 0x14, 0xc2, 0x0d, 0x22, 0x17, + 0xbc, 0x42, 0x62, 0xe7, 0xbe, 0x26, 0x2f, 0x97, 0x1c, 0x6a, 0x1f, 0x8a, 0x31, 0x18, 0x75, 0x5d, + 0xad, 0x29, 0xf4, 0xdb, 0x15, 0x56, 0x82, 0x7c, 0xbd, 0xd6, 0xab, 0xd7, 0x1a, 0x4d, 0x25, 0x85, + 0xa8, 0x5e, 0xb3, 0xcf, 0x75, 0xda, 0x55, 0xb6, 0x0e, 0x25, 0x4c, 0x35, 0x9a, 0xbb, 0xb5, 0xc3, + 0x76, 0x5f, 0x49, 0xb3, 0x35, 0x28, 0x76, 0xba, 0x7a, 0xad, 0xde, 0x6f, 0x75, 0x3b, 0x4a, 0x46, + 0xfd, 0x21, 0x14, 0xea, 0xc7, 0xd6, 0xf0, 0xe4, 0xa2, 0x5e, 0x24, 0xa3, 0xdb, 0x1a, 0x9e, 0x08, + 0xfd, 0x74, 0xce, 0xe8, 0xb6, 0x86, 0x27, 0x6a, 0x13, 0x8a, 0x07, 0x86, 0x1f, 0xda, 0x54, 0xaf, + 0xa7, 0xb0, 0x16, 0x27, 0x1a, 0xd6, 0x28, 0xda, 0xb9, 0x59, 0xac, 0xb5, 0xc6, 0x28, 0x2d, 0x49, + 0xa8, 0xbe, 0x03, 0x65, 0x19, 0xc0, 0x6e, 0x42, 0xda, 0xb4, 0x46, 0x4b, 0xe4, 0x24, 0x82, 0xd5, + 0x17, 0x50, 0xae, 0x47, 0x3b, 0xd1, 0x45, 0x55, 0x7f, 0x0c, 0x15, 0x5a, 0xf1, 0xc3, 0x41, 0xb4, + 0xe4, 0x57, 0x97, 0x2c, 0xf9, 0x32, 0xd2, 0xd4, 0x07, 0x62, 0xcd, 0x7f, 0x08, 0xa5, 0x03, 0xdf, + 0x9b, 0x58, 0x7e, 0x48, 0xd9, 0x2a, 0x90, 0x3e, 0xb1, 0xce, 0x45, 0xae, 0xf8, 0x39, 0xf3, 0x85, + 0xac, 0xca, 0xbe, 0x90, 0xc7, 0x50, 0x88, 0xd8, 0xbe, 0x36, 0xcf, 0x0f, 0x50, 0x74, 0x12, 0x8f, + 0x6d, 0x05, 0x58, 0xd8, 0x36, 0xc0, 0x24, 0x06, 0x88, 0x8e, 0x8b, 0xd4, 0x7d, 0x91, 0xb9, 0x26, + 0x51, 0xa8, 0x6f, 0x40, 0xfe, 0x85, 0x6d, 0x9d, 0x8a, 0xe6, 0xbf, 0xb2, 0xad, 0xd3, 0xa8, 0xf9, + 0xf8, 0xad, 0xfe, 0x95, 0x22, 0x14, 0x68, 0x7d, 0x35, 0x2e, 0x76, 0x3f, 0x7d, 0x13, 0xad, 0x68, + 0x4b, 0xac, 0xa7, 0xcc, 0x12, 0x5d, 0x8c, 0xaf, 0xae, 0x37, 0x00, 0xa4, 0xb5, 0xce, 0x25, 0x57, + 0x31, 0x8c, 0x97, 0x38, 0xaa, 0x13, 0xb4, 0x17, 0x05, 0x5f, 0x38, 0xc2, 0x8a, 0x9c, 0x01, 0xd8, + 0x36, 0xdf, 0xec, 0xc9, 0x6e, 0xe4, 0x0a, 0xd1, 0xa5, 0x48, 0xa9, 0x1f, 0x38, 0x56, 0x64, 0x6a, + 0x90, 0x06, 0x80, 0x09, 0x92, 0x63, 0x96, 0x1f, 0xa0, 0xb8, 0x22, 0xff, 0xb4, 0x16, 0x25, 0xd9, + 0x5b, 0x90, 0x41, 0x21, 0x2f, 0x4c, 0x83, 0x4b, 0x51, 0x0f, 0x4a, 0xbb, 0x94, 0x46, 0x04, 0xec, + 0x01, 0xe4, 0x49, 0xb4, 0x58, 0x28, 0x69, 0xa4, 0xde, 0x8e, 0x84, 0xbe, 0x16, 0xa1, 0xd9, 0x77, + 0x20, 0x3b, 0x3a, 0xb1, 0xce, 0x83, 0xea, 0x1a, 0xd1, 0x5d, 0x5a, 0xb2, 0x66, 0x35, 0x4e, 0xc1, + 0xee, 0x41, 0xc5, 0xb7, 0x46, 0x3a, 0x39, 0xa4, 0x50, 0xc8, 0x04, 0xd5, 0x0a, 0xc9, 0x90, 0xb2, + 0x6f, 0x8d, 0xea, 0x08, 0xec, 0x0f, 0x9c, 0x80, 0xdd, 0x87, 0x1c, 0xad, 0x1e, 0xd4, 0x85, 0xa4, + 0x92, 0xa3, 0xa5, 0xa8, 0x09, 0x2c, 0x7b, 0x1f, 0x40, 0x68, 0x5c, 0xfa, 0xe0, 0x9c, 0x1c, 0xb9, + 0xf1, 0x62, 0x92, 0xe7, 0xbf, 0xac, 0x97, 0xbd, 0x05, 0x59, 0x9c, 0x24, 0x41, 0xf5, 0x2a, 0xe5, + 0xbc, 0x91, 0x9c, 0x41, 0x54, 0x53, 0xc2, 0xb3, 0x07, 0x50, 0xc0, 0x89, 0xa2, 0xe3, 0x70, 0x54, + 0x65, 0x15, 0x54, 0xcc, 0x2a, 0xdc, 0x19, 0xac, 0xd3, 0xde, 0x17, 0x0e, 0x7b, 0x08, 0x19, 0x13, + 0x17, 0xf3, 0x35, 0xca, 0xf1, 0x8a, 0x34, 0x2e, 0x28, 0xac, 0x1a, 0xd6, 0x88, 0xb4, 0x62, 0xa2, + 0x61, 0x7b, 0x50, 0xc1, 0x69, 0xf4, 0x98, 0x36, 0x7b, 0xec, 0xbe, 0xea, 0x75, 0xe2, 0xba, 0x33, + 0xc7, 0xd5, 0x11, 0x44, 0xd4, 0xd9, 0x4d, 0x37, 0xf4, 0xcf, 0xb5, 0x35, 0x57, 0x86, 0xb1, 0xeb, + 0x68, 0xba, 0xb4, 0xbd, 0xe1, 0x89, 0x65, 0x56, 0x6f, 0x44, 0x8e, 0x09, 0x9e, 0x66, 0x9f, 0xc0, + 0x1a, 0x4d, 0x2c, 0x4c, 0x62, 0xe1, 0xd5, 0x9b, 0x24, 0x4c, 0xe5, 0x29, 0x13, 0xa1, 0xb4, 0x24, + 0x25, 0x8a, 0x78, 0x3b, 0xd0, 0x43, 0x6b, 0x3c, 0xf1, 0x7c, 0x54, 0x5e, 0xdf, 0x88, 0x1c, 0x2e, + 0xfd, 0x08, 0x84, 0x1b, 0x71, 0x7c, 0xec, 0xa4, 0x7b, 0xa3, 0x51, 0x60, 0x85, 0xd5, 0x5b, 0xb4, + 0x6e, 0x2a, 0xd1, 0xe9, 0x53, 0x97, 0xa0, 0xb4, 0x11, 0x06, 0xba, 0x79, 0xee, 0x1a, 0x63, 0x7b, + 0x58, 0xbd, 0xcd, 0x75, 0x64, 0x3b, 0x68, 0x70, 0x80, 0xac, 0xa6, 0x6e, 0x25, 0xd4, 0xd4, 0x4b, + 0x90, 0x35, 0x07, 0xb8, 0x1c, 0xef, 0x50, 0xb6, 0x19, 0x73, 0xd0, 0x32, 0xd9, 0xbb, 0x50, 0x9c, + 0x44, 0x22, 0xb0, 0xaa, 0xca, 0xc6, 0x78, 0x2c, 0x19, 0xb5, 0x19, 0x05, 0xda, 0x87, 0xbb, 0x96, + 0x11, 0x4e, 0x7d, 0x6b, 0xd7, 0x31, 0x8e, 0xaa, 0x77, 0x29, 0x27, 0x19, 0x74, 0xfd, 0x19, 0xe9, + 0xba, 0xd4, 0xea, 0x0f, 0xe7, 0x84, 0x4b, 0x62, 0x69, 0x48, 0x52, 0x68, 0x6f, 0x45, 0x96, 0x31, + 0x3b, 0x59, 0x92, 0xc2, 0xd7, 0x7f, 0x08, 0x6c, 0x71, 0xbc, 0x5e, 0x27, 0xe9, 0xb2, 0x42, 0xd2, + 0x7d, 0x77, 0xf5, 0x69, 0x4a, 0x7d, 0x01, 0x6b, 0x89, 0x85, 0xbc, 0x54, 0x62, 0x73, 0x75, 0xc9, + 0x18, 0x0b, 0xf3, 0x92, 0x27, 0x84, 0x87, 0x2a, 0xb0, 0xdd, 0x23, 0xe1, 0xd9, 0xa2, 0x89, 0xd0, + 0xa3, 0xb4, 0xfa, 0x27, 0x69, 0x28, 0xef, 0x19, 0xc1, 0xf1, 0xbe, 0x31, 0xe9, 0x85, 0x46, 0x18, + 0xe0, 0xf0, 0x1e, 0x1b, 0xc1, 0xf1, 0xd8, 0x98, 0x70, 0xc5, 0x35, 0xc5, 0xcd, 0x66, 0x01, 0x43, + 0xad, 0x15, 0x27, 0x16, 0x26, 0xbb, 0xee, 0xc1, 0x73, 0x61, 0x13, 0xc7, 0x69, 0x14, 0x2b, 0xc1, + 0xf1, 0x74, 0x34, 0x8a, 0x8b, 0x8a, 0x92, 0xec, 0x1e, 0xac, 0x89, 0x4f, 0xd2, 0x5a, 0xcf, 0xc4, + 0xb1, 0x63, 0x12, 0xc8, 0x9e, 0x40, 0x49, 0x00, 0xfa, 0x91, 0x10, 0xac, 0xc4, 0xbe, 0x8e, 0x19, + 0x42, 0x93, 0xa9, 0xd8, 0x8f, 0xe1, 0xb2, 0x94, 0xdc, 0xf5, 0xfc, 0xfd, 0xa9, 0x13, 0xda, 0xf5, + 0x8e, 0x50, 0x11, 0x6e, 0x2c, 0xb0, 0xcf, 0x48, 0xb4, 0xe5, 0x9c, 0xc9, 0xda, 0xee, 0xdb, 0x2e, + 0xc9, 0xd4, 0xb4, 0x96, 0x04, 0xce, 0x51, 0x19, 0x67, 0x24, 0x4a, 0x93, 0x54, 0xc6, 0x19, 0x2e, + 0x36, 0x01, 0xd8, 0xb7, 0xc2, 0x63, 0xcf, 0x24, 0xfd, 0x30, 0x5e, 0x6c, 0x3d, 0x19, 0xa5, 0x25, + 0x29, 0xb1, 0x3b, 0xd1, 0x12, 0x1a, 0xba, 0x21, 0x69, 0x89, 0x69, 0x2d, 0x4a, 0xe2, 0x36, 0xe3, + 0x1b, 0xee, 0x91, 0x15, 0x54, 0x4b, 0x5b, 0xe9, 0x07, 0x29, 0x4d, 0xa4, 0xd4, 0xbf, 0xb9, 0x0a, + 0x59, 0x3e, 0x92, 0x37, 0xa0, 0x38, 0x20, 0x67, 0x31, 0x5a, 0xa6, 0xc2, 0x01, 0x4c, 0x80, 0xce, + 0x74, 0xcc, 0xb5, 0x3b, 0xe1, 0xd3, 0x48, 0x69, 0xf4, 0x8d, 0x59, 0x7a, 0xd3, 0x10, 0xcb, 0x4a, + 0x13, 0x54, 0xa4, 0xb0, 0x12, 0xbe, 0x77, 0x4a, 0xb3, 0x21, 0x43, 0x88, 0x28, 0x49, 0x3e, 0x66, + 0xda, 0xb1, 0x90, 0x29, 0x4b, 0xb8, 0x02, 0x01, 0xea, 0x6e, 0x38, 0xef, 0x7f, 0xc9, 0x2d, 0xf8, + 0x5f, 0xd8, 0x2d, 0x40, 0xdd, 0x71, 0x68, 0x75, 0x5d, 0xab, 0xde, 0xa1, 0x1e, 0x2e, 0x68, 0x12, + 0x04, 0x17, 0x88, 0xe9, 0x4d, 0xa8, 0x53, 0xb3, 0x1a, 0x7e, 0xb2, 0x8f, 0xe2, 0xd9, 0x49, 0x6d, + 0x14, 0x9a, 0xb6, 0x90, 0xe8, 0xf2, 0x3c, 0xd6, 0x12, 0x74, 0x98, 0x13, 0x8a, 0x69, 0xae, 0x69, + 0xe3, 0xa7, 0xda, 0x04, 0xd0, 0xbc, 0xd3, 0xc0, 0x0a, 0xc9, 0xd1, 0x78, 0x95, 0x9a, 0x98, 0x38, + 0x22, 0xf2, 0x4e, 0x0f, 0xbc, 0x20, 0xb6, 0x37, 0x57, 0x97, 0xdb, 0x9b, 0xea, 0x23, 0xc8, 0xe3, + 0x1e, 0x6e, 0x84, 0x06, 0xbb, 0x27, 0x7c, 0x3b, 0x5c, 0xf3, 0x10, 0x4e, 0xae, 0x59, 0x19, 0xc2, + 0xdb, 0xd3, 0x8e, 0xca, 0x25, 0x9e, 0x3b, 0x92, 0xb9, 0x17, 0xef, 0x1f, 0x22, 0x43, 0xa1, 0x15, + 0xdc, 0x80, 0x22, 0x56, 0x8d, 0xfc, 0xe6, 0x42, 0x2e, 0x14, 0x7c, 0xef, 0xb4, 0x8e, 0x69, 0xf5, + 0x3f, 0xa4, 0xa0, 0xd4, 0xf5, 0x4d, 0xdc, 0xb8, 0x7a, 0x13, 0x6b, 0xf8, 0x5a, 0xf3, 0x18, 0x75, + 0x08, 0xcf, 0x71, 0x0c, 0x12, 0x91, 0xc2, 0xdc, 0x8a, 0x01, 0xec, 0x7d, 0xc8, 0x8c, 0x50, 0x14, + 0xa6, 0x65, 0xcd, 0x5a, 0xca, 0x3e, 0xfa, 0x46, 0xe1, 0xa8, 0x11, 0xa9, 0xfa, 0x6b, 0x71, 0xf9, + 0xe4, 0x67, 0x96, 0xbd, 0xcb, 0x2b, 0x74, 0xce, 0xd3, 0xab, 0x2b, 0x29, 0x56, 0x80, 0x4c, 0xa3, + 0xd9, 0xab, 0x73, 0x7d, 0x1a, 0x35, 0xeb, 0x9e, 0xbe, 0xdb, 0xd2, 0x7a, 0x7d, 0x25, 0x43, 0x07, + 0x47, 0x04, 0x68, 0xd7, 0x7a, 0x7d, 0xa5, 0xc0, 0x00, 0x72, 0x87, 0x9d, 0xd6, 0x8f, 0x0f, 0x9b, + 0x8a, 0xa2, 0xfe, 0x69, 0x0a, 0x60, 0xe6, 0x04, 0x65, 0x6f, 0x43, 0xe9, 0x94, 0x52, 0xba, 0xe4, + 0x1d, 0x97, 0xdb, 0x08, 0x1c, 0x4d, 0xfa, 0xcd, 0xbb, 0x50, 0x8e, 0x45, 0x3d, 0xee, 0xfd, 0x8b, + 0x6e, 0xf2, 0x52, 0x8c, 0xdf, 0x39, 0x67, 0xef, 0x40, 0xc1, 0xc3, 0x76, 0x20, 0x69, 0x5a, 0xde, + 0xf8, 0xa5, 0xe6, 0x6b, 0x79, 0x8f, 0x27, 0x50, 0x47, 0x18, 0xf9, 0x91, 0xf9, 0x1c, 0x93, 0xee, + 0x22, 0xa8, 0xee, 0x18, 0xd3, 0xc0, 0xd2, 0x38, 0x3e, 0x96, 0xd2, 0xd9, 0x99, 0x94, 0x56, 0x7f, + 0x02, 0x95, 0x9e, 0x31, 0x9e, 0x70, 0x59, 0x4e, 0x0d, 0x63, 0x90, 0xc1, 0x39, 0x21, 0xa6, 0x1e, + 0x7d, 0xe3, 0xa2, 0x3b, 0xb0, 0xfc, 0xa1, 0xe5, 0x46, 0x6b, 0x34, 0x4a, 0xa2, 0xf8, 0x3d, 0x44, + 0x69, 0xae, 0x79, 0xa7, 0x91, 0x38, 0x8f, 0xd2, 0xea, 0xdf, 0x4d, 0x41, 0x49, 0xaa, 0x06, 0x7b, + 0x04, 0x19, 0x52, 0x26, 0x53, 0xb2, 0x20, 0x94, 0x08, 0xf8, 0x37, 0x57, 0x3f, 0x90, 0x90, 0xdd, + 0x87, 0x6c, 0x10, 0x1a, 0x7e, 0xe4, 0x4f, 0x57, 0x24, 0x8e, 0x1d, 0x6f, 0xea, 0x9a, 0x1a, 0x47, + 0x33, 0x15, 0xd2, 0x96, 0x6b, 0x0a, 0x87, 0xc3, 0x22, 0x15, 0x22, 0xd5, 0x2d, 0x28, 0xc6, 0xd9, + 0xe3, 0x14, 0xd0, 0xba, 0x2f, 0x7b, 0xca, 0x0a, 0x2b, 0x42, 0x56, 0xab, 0x75, 0x9e, 0x35, 0x95, + 0x94, 0xfa, 0x87, 0x29, 0x80, 0x19, 0x17, 0xdb, 0x4e, 0xd4, 0xf6, 0xfa, 0x7c, 0xae, 0xdb, 0xf4, + 0x57, 0xaa, 0xec, 0x4d, 0x28, 0x4e, 0x5d, 0x02, 0x5a, 0xa6, 0xd8, 0x89, 0x66, 0x00, 0xb4, 0x80, + 0xa2, 0xe8, 0x8f, 0x39, 0x0b, 0xe8, 0x95, 0xe1, 0xa8, 0xdf, 0x85, 0x62, 0x9c, 0x1d, 0x1a, 0x75, + 0xbb, 0xdd, 0x76, 0xbb, 0xfb, 0xb2, 0xd5, 0x79, 0xa6, 0xac, 0x60, 0xf2, 0x40, 0x6b, 0xd6, 0x9b, + 0x0d, 0x4c, 0xa6, 0x70, 0xce, 0xd6, 0x0f, 0x35, 0xad, 0xd9, 0xe9, 0xeb, 0x5a, 0xf7, 0xa5, 0xb2, + 0xaa, 0xfe, 0xc5, 0x0c, 0x6c, 0x74, 0xdd, 0xc6, 0x74, 0xe2, 0xd8, 0x43, 0x23, 0xb4, 0x9e, 0x5b, + 0xe7, 0xf5, 0xf0, 0x0c, 0x77, 0x5f, 0x23, 0x0c, 0x7d, 0xbe, 0x98, 0x8b, 0x1a, 0x4f, 0x70, 0xa7, + 0x44, 0x60, 0xf9, 0x21, 0xf9, 0x5c, 0xe4, 0x55, 0x5c, 0xe1, 0xf0, 0xba, 0xe7, 0xd0, 0x5a, 0x66, + 0xdf, 0x87, 0xcb, 0xdc, 0x91, 0xc1, 0x29, 0x51, 0x81, 0xd5, 0x69, 0x31, 0xa7, 0x17, 0xa6, 0x2e, + 0xe3, 0x84, 0xc8, 0x8a, 0x64, 0x24, 0xc2, 0x6e, 0x43, 0x69, 0xc6, 0x1e, 0x1d, 0x52, 0x41, 0x4c, + 0x48, 0x35, 0x41, 0xc3, 0x3b, 0xaa, 0xb5, 0x6e, 0x9b, 0x67, 0xe4, 0xe2, 0xc9, 0x6a, 0x15, 0x6f, + 0xd6, 0x18, 0xdc, 0x84, 0x3f, 0x85, 0x8d, 0x04, 0x25, 0xd5, 0x22, 0x47, 0xb5, 0x78, 0x27, 0x72, + 0x90, 0xce, 0xb5, 0x5e, 0x86, 0x60, 0x75, 0xb8, 0x46, 0xba, 0xee, 0x25, 0xa1, 0x42, 0x17, 0xb1, + 0x8f, 0x5c, 0xcf, 0xb7, 0x84, 0xc0, 0x2f, 0xd8, 0x41, 0x8b, 0xd2, 0x33, 0xfb, 0x47, 0x3a, 0x54, + 0xe5, 0xfb, 0x4b, 0x74, 0x5e, 0xc8, 0xd1, 0x36, 0xdf, 0x41, 0x33, 0x5a, 0x9e, 0xd2, 0x2d, 0x93, + 0xdd, 0x15, 0xea, 0xac, 0x1e, 0x99, 0x34, 0x40, 0x26, 0x4d, 0x99, 0x80, 0x2f, 0x38, 0xec, 0x7a, + 0x07, 0x36, 0x97, 0x55, 0x72, 0x89, 0x1a, 0xb6, 0x25, 0xab, 0x61, 0x73, 0x46, 0xfb, 0x4c, 0x25, + 0xfb, 0xfb, 0x29, 0x28, 0x37, 0x2c, 0x73, 0x3a, 0xf9, 0x91, 0x67, 0xbb, 0x38, 0x01, 0x3e, 0x80, + 0xb2, 0xe7, 0x98, 0x34, 0x7a, 0x52, 0x6c, 0x40, 0xe2, 0xc4, 0x48, 0x38, 0xb7, 0xc1, 0x73, 0xcc, + 0xba, 0xe7, 0x50, 0x24, 0xc1, 0xbb, 0x70, 0x89, 0x3b, 0x34, 0x84, 0x7f, 0xef, 0x8c, 0x33, 0xaf, + 0xd2, 0xc8, 0x28, 0x1c, 0xc5, 0x95, 0x23, 0x22, 0xff, 0x15, 0xd8, 0x94, 0xc8, 0x71, 0x64, 0x38, + 0xfd, 0xe2, 0x24, 0xd9, 0x88, 0x79, 0xa3, 0x23, 0x1b, 0xf5, 0xb7, 0x56, 0xa1, 0xc8, 0xdd, 0x21, + 0x58, 0xdf, 0x07, 0x90, 0xf7, 0x06, 0x9f, 0xeb, 0x7e, 0xec, 0x26, 0x58, 0x38, 0x69, 0xcc, 0x79, + 0x83, 0xcf, 0x35, 0x6b, 0xc4, 0xde, 0x8e, 0xf6, 0x79, 0xd3, 0x1a, 0x89, 0x4e, 0xa9, 0x24, 0xed, + 0x11, 0xb1, 0xef, 0xa3, 0xad, 0xfc, 0x04, 0x4a, 0xb3, 0x19, 0x1f, 0x54, 0xf3, 0x17, 0xf7, 0x42, + 0xbc, 0x00, 0x02, 0x64, 0xe2, 0x2e, 0x21, 0xce, 0x54, 0xb8, 0x98, 0x89, 0x93, 0x11, 0xd3, 0x27, + 0x50, 0x99, 0xc9, 0x78, 0xe2, 0x2b, 0x5e, 0xc8, 0xb7, 0x16, 0x53, 0xd2, 0x89, 0xc7, 0x3f, 0x48, + 0x41, 0xb1, 0xc5, 0x8b, 0x0f, 0xcf, 0xd8, 0x1d, 0x48, 0x7f, 0x45, 0x2f, 0x20, 0x8e, 0x3d, 0x84, + 0x0d, 0xc3, 0x34, 0x75, 0x63, 0x34, 0xb2, 0x86, 0xa1, 0x65, 0xea, 0xa8, 0x02, 0x09, 0x99, 0xb3, + 0x6e, 0x98, 0x66, 0x4d, 0xc0, 0x49, 0x76, 0xe3, 0x9a, 0x0f, 0xf4, 0xc8, 0xf0, 0x9c, 0x1d, 0x29, + 0x17, 0xb4, 0x8a, 0x1d, 0x08, 0xbb, 0x93, 0xfb, 0x92, 0x13, 0x1d, 0x9b, 0xf9, 0xea, 0x8e, 0x55, + 0x7f, 0x67, 0x15, 0x40, 0xb3, 0x26, 0x8e, 0x31, 0xb4, 0xfe, 0x9f, 0xa9, 0x34, 0x8a, 0xa5, 0x78, + 0x60, 0x5d, 0x33, 0x0a, 0xc1, 0x88, 0x06, 0xd1, 0x35, 0xd9, 0x0f, 0xe1, 0x0d, 0xdf, 0x3a, 0xf5, + 0xed, 0xd0, 0xd2, 0x47, 0xbe, 0x37, 0xd6, 0x13, 0x92, 0x07, 0x17, 0x66, 0x91, 0x2a, 0x71, 0x4d, + 0x10, 0xed, 0xfa, 0xde, 0x38, 0x29, 0x7d, 0xd4, 0x3f, 0x2d, 0x42, 0xa9, 0xe6, 0x1a, 0xce, 0xf9, + 0x97, 0x16, 0xc5, 0x04, 0x90, 0x77, 0x75, 0x32, 0x0d, 0x79, 0x73, 0xf9, 0x81, 0x59, 0x91, 0x20, + 0xd4, 0xd0, 0xdb, 0x50, 0xf2, 0xa6, 0x61, 0x8c, 0xe7, 0x47, 0x68, 0xc0, 0x41, 0x44, 0x10, 0xf3, + 0xc7, 0x9e, 0xfb, 0x88, 0x9f, 0xcc, 0x9f, 0x19, 0x7f, 0xac, 0x12, 0xc7, 0xfc, 0x44, 0x80, 0xd2, + 0xc8, 0x1e, 0x53, 0x83, 0x83, 0xe9, 0xd8, 0xe2, 0x8d, 0x4e, 0xf3, 0xf8, 0xb4, 0xba, 0x80, 0x61, + 0x2e, 0x63, 0x6b, 0xec, 0xf9, 0xe7, 0x3c, 0x97, 0x1c, 0xcf, 0x85, 0x83, 0x28, 0x97, 0x77, 0x80, + 0x9d, 0x1a, 0x76, 0xa8, 0x27, 0xb3, 0xe2, 0x66, 0x88, 0x82, 0x98, 0xbe, 0x9c, 0xdd, 0x15, 0xc8, + 0x99, 0x76, 0x70, 0xd2, 0xea, 0x0a, 0x13, 0x44, 0xa4, 0xb0, 0x2d, 0xc1, 0xd0, 0x40, 0x0d, 0x28, + 0xb4, 0xb8, 0xba, 0x9c, 0xd6, 0x8a, 0x08, 0xd9, 0x41, 0x00, 0xee, 0xa0, 0xae, 0x15, 0x9e, 0x7a, + 0x3e, 0x72, 0x72, 0x0b, 0x63, 0x06, 0x40, 0x4d, 0x03, 0x49, 0xb1, 0x20, 0xf2, 0x06, 0xa5, 0xb5, + 0x38, 0x8d, 0xba, 0x3b, 0x5f, 0xbe, 0x84, 0x2d, 0xf3, 0xea, 0xcf, 0x20, 0xec, 0x1e, 0x54, 0xa8, + 0xfa, 0x64, 0x81, 0x60, 0x1b, 0xe8, 0x94, 0x2b, 0xad, 0x95, 0x11, 0x4a, 0xce, 0x04, 0xa4, 0xfa, + 0x04, 0xae, 0x25, 0xda, 0xa7, 0x1b, 0xbe, 0x6f, 0x9c, 0xeb, 0x63, 0xe3, 0x73, 0xcf, 0x27, 0xc7, + 0x4f, 0x5a, 0xbb, 0x22, 0x77, 0x5b, 0x0d, 0xd1, 0xfb, 0x88, 0xbd, 0x90, 0xd5, 0x76, 0x3d, 0x9f, + 0xbc, 0x42, 0x4b, 0x59, 0x11, 0x4b, 0x2e, 0x0c, 0x1a, 0x60, 0x32, 0x87, 0x02, 0x1e, 0xd7, 0xa8, + 0x95, 0x08, 0xb6, 0x43, 0x20, 0x34, 0x08, 0x82, 0x27, 0x5c, 0xb2, 0x6e, 0x88, 0x20, 0xa3, 0x27, + 0x24, 0x7f, 0x39, 0xe2, 0xd8, 0x32, 0x4c, 0x3a, 0x39, 0x23, 0xc4, 0x9e, 0x65, 0xd0, 0xb9, 0x74, + 0xf0, 0x44, 0x9f, 0x4c, 0x43, 0x1e, 0x90, 0xa8, 0x65, 0x83, 0x27, 0x07, 0xd3, 0x50, 0x80, 0x8f, + 0xac, 0x90, 0xc2, 0x10, 0x09, 0xfc, 0xcc, 0x0a, 0x71, 0x23, 0x0c, 0x9e, 0x44, 0x5e, 0xf0, 0xcb, + 0xa2, 0x6f, 0x9f, 0x08, 0x37, 0xb7, 0x0a, 0x6b, 0x31, 0x52, 0x1f, 0x4f, 0x79, 0x04, 0x62, 0x5a, + 0x2b, 0x45, 0x04, 0xfb, 0x53, 0x07, 0x07, 0x76, 0x68, 0x0c, 0x8f, 0x2d, 0xdd, 0xc7, 0xaa, 0x5c, + 0xe5, 0x43, 0x47, 0x10, 0x0d, 0x6b, 0x73, 0x03, 0x78, 0x42, 0x3f, 0xb6, 0x43, 0xf2, 0x4e, 0xa5, + 0xb5, 0x02, 0x01, 0xf6, 0xec, 0x10, 0xc5, 0x02, 0x47, 0x8a, 0x19, 0x48, 0x59, 0x5c, 0x23, 0xa2, + 0x75, 0x42, 0xec, 0x13, 0x9c, 0x32, 0x7a, 0x00, 0x4a, 0x82, 0x16, 0xf3, 0xbb, 0x4e, 0xa4, 0x15, + 0x89, 0x14, 0x73, 0xbd, 0x0f, 0x9c, 0x59, 0xc7, 0xa9, 0xc7, 0xf3, 0xbc, 0xc1, 0xcd, 0x61, 0x02, + 0x37, 0xec, 0xe0, 0x84, 0x72, 0xbc, 0x07, 0x15, 0x89, 0x0e, 0xf3, 0xbb, 0xc9, 0x67, 0x46, 0x4c, + 0x96, 0xa8, 0xa3, 0x6f, 0x8d, 0xbd, 0x50, 0x34, 0xf3, 0x0d, 0xa9, 0x8e, 0x1a, 0xc1, 0x93, 0x75, + 0x14, 0xb4, 0x98, 0xe7, 0x2d, 0xa9, 0x8e, 0x9c, 0x14, 0x73, 0xbd, 0x03, 0x65, 0x94, 0x22, 0xa1, + 0xe5, 0xf2, 0xc5, 0x7f, 0x9b, 0x77, 0xac, 0x80, 0xd1, 0xea, 0xbf, 0x03, 0x65, 0xde, 0xf3, 0x42, + 0x5c, 0x6e, 0x71, 0x12, 0x01, 0x23, 0x12, 0x34, 0xc9, 0x2c, 0xc3, 0xe4, 0x2b, 0xf7, 0x0e, 0xef, + 0x5c, 0x04, 0xd0, 0xba, 0xdd, 0x82, 0x72, 0xf0, 0x44, 0x9f, 0xe1, 0x55, 0xbe, 0x34, 0x82, 0x27, + 0x5a, 0x44, 0x71, 0x0f, 0x2a, 0x71, 0x17, 0x71, 0x9a, 0xbb, 0xbc, 0x03, 0x4c, 0xd1, 0x45, 0x74, + 0x36, 0xf8, 0xd3, 0x14, 0x5c, 0xef, 0xd2, 0xa9, 0x25, 0x49, 0xd5, 0x7d, 0x2b, 0x08, 0x8c, 0x23, + 0x6b, 0xd7, 0xf3, 0x77, 0xa7, 0x5f, 0x7e, 0x79, 0xce, 0x1e, 0xc0, 0xfa, 0x81, 0xe1, 0x5b, 0x6e, + 0x18, 0x9f, 0x6a, 0x09, 0x0d, 0x66, 0x1e, 0xcc, 0x9e, 0x82, 0xc2, 0x41, 0x87, 0xb1, 0x2e, 0x28, + 0xac, 0xa1, 0xa4, 0x13, 0x7a, 0x81, 0x4a, 0xfd, 0xd7, 0x2a, 0x64, 0x3a, 0x9e, 0x69, 0xb1, 0xf7, + 0xa0, 0x48, 0x31, 0x86, 0x92, 0x76, 0x2e, 0xbc, 0x17, 0x88, 0xa6, 0x3f, 0xa4, 0x96, 0x17, 0x5c, + 0xf1, 0x75, 0x71, 0x54, 0xe2, 0x1d, 0x32, 0x30, 0xe8, 0x48, 0x0f, 0x37, 0x8e, 0x92, 0x70, 0x82, + 0x90, 0xcd, 0xce, 0x31, 0x28, 0x76, 0xc8, 0xfd, 0xeb, 0x5b, 0x2e, 0xa9, 0xb1, 0x59, 0x2d, 0x4e, + 0x93, 0x59, 0xe7, 0x7b, 0xb8, 0xc9, 0xf1, 0xc5, 0x99, 0x5d, 0x62, 0xd6, 0x71, 0x3c, 0xad, 0xd6, + 0xf7, 0xa0, 0xf8, 0xb9, 0x67, 0xbb, 0xbc, 0xe2, 0xb9, 0x85, 0x8a, 0xa3, 0xe6, 0xc6, 0x2b, 0xfe, + 0xb9, 0xf8, 0x62, 0x77, 0x21, 0xef, 0xb9, 0x3c, 0xef, 0xfc, 0x42, 0xde, 0x39, 0xcf, 0x6d, 0xf3, + 0x90, 0x97, 0x35, 0x3b, 0xd0, 0x7d, 0xfb, 0xe8, 0x38, 0xd4, 0x91, 0x53, 0x1c, 0x05, 0x96, 0xec, + 0x40, 0x43, 0x18, 0x66, 0x8b, 0xd6, 0xea, 0xc8, 0x76, 0x70, 0x2f, 0xa5, 0xcc, 0x8a, 0x0b, 0x99, + 0x01, 0x47, 0x53, 0x86, 0x6f, 0x42, 0xe1, 0xc8, 0xf7, 0xa6, 0x13, 0x34, 0x3f, 0x61, 0x81, 0x32, + 0x4f, 0xb8, 0x9d, 0x73, 0xdc, 0x59, 0xe8, 0xd3, 0x76, 0x8f, 0x74, 0xb2, 0xd4, 0x4b, 0x5b, 0xe9, + 0x07, 0x05, 0xad, 0x1c, 0x01, 0xc9, 0x06, 0x7f, 0x13, 0x0a, 0xc6, 0xd1, 0x91, 0x2e, 0x22, 0x77, + 0x16, 0xf2, 0x32, 0x8e, 0x8e, 0xa8, 0xc8, 0x6d, 0x58, 0x3b, 0xb5, 0x5d, 0x3d, 0x98, 0x58, 0x43, + 0x4e, 0xbb, 0xb6, 0xd8, 0x95, 0xa7, 0xb6, 0x8b, 0x06, 0x2a, 0xd1, 0xcb, 0x16, 0x72, 0xe5, 0xb5, + 0x16, 0xf2, 0x16, 0x64, 0x1d, 0x7b, 0x6c, 0x87, 0x22, 0x96, 0x27, 0xa1, 0x42, 0x13, 0x82, 0xa9, + 0x90, 0x13, 0xae, 0x61, 0x65, 0x81, 0x44, 0x60, 0xd8, 0xfb, 0x50, 0xf2, 0x0d, 0xf7, 0x44, 0x17, + 0xe7, 0xaa, 0x9f, 0xc9, 0xd6, 0xa6, 0x66, 0xb8, 0x27, 0xe2, 0x58, 0x15, 0xfc, 0xf8, 0x3b, 0xa9, + 0x9c, 0x6c, 0xbc, 0x46, 0x39, 0x91, 0x34, 0x60, 0xf6, 0xd5, 0x1a, 0xf0, 0x87, 0xa4, 0x6a, 0x5a, + 0x6e, 0xa8, 0x47, 0x0c, 0x97, 0x96, 0x33, 0x94, 0x39, 0x59, 0x97, 0xb3, 0x61, 0x03, 0xc8, 0xdb, + 0xa3, 0x93, 0x6b, 0x68, 0x33, 0xd1, 0x80, 0xd8, 0x0d, 0xa4, 0x81, 0x3f, 0x73, 0x09, 0xd5, 0x60, + 0x7d, 0x16, 0xce, 0xc8, 0xe3, 0x42, 0x2f, 0xcb, 0xee, 0xe6, 0x44, 0xfc, 0x63, 0xa4, 0xdc, 0xda, + 0x89, 0xa0, 0xc8, 0xbb, 0xb0, 0xc6, 0x03, 0x19, 0x78, 0xbf, 0x05, 0xb4, 0x7f, 0x14, 0xb5, 0x32, + 0x01, 0x79, 0x3f, 0x05, 0x6c, 0x1b, 0x20, 0x52, 0xcc, 0xc2, 0x33, 0xda, 0x40, 0xe2, 0xd6, 0xf0, + 0x5d, 0xa6, 0x1e, 0x9e, 0x69, 0x45, 0x33, 0xfa, 0x44, 0xb9, 0x38, 0xb0, 0x5d, 0x13, 0xa7, 0x5e, + 0x68, 0x1c, 0x05, 0xd5, 0x2a, 0xad, 0xcc, 0x92, 0x80, 0xf5, 0x8d, 0xa3, 0x00, 0x0d, 0x20, 0x83, + 0xeb, 0x61, 0xbc, 0xde, 0xd7, 0x64, 0xef, 0x88, 0xa4, 0xa1, 0x69, 0x25, 0x43, 0x52, 0xd7, 0x3e, + 0x06, 0x16, 0x9d, 0x5c, 0x49, 0xf6, 0xcc, 0xf5, 0x85, 0xd9, 0xb8, 0x2e, 0x8e, 0xae, 0xe2, 0x18, + 0xec, 0xdb, 0x50, 0x0a, 0xbc, 0xa9, 0x3f, 0xb4, 0xf4, 0x20, 0xb4, 0x26, 0xd5, 0x1b, 0x54, 0x21, + 0xe0, 0xa0, 0x5e, 0x68, 0x4d, 0xd8, 0xc7, 0xb0, 0x96, 0xd4, 0x67, 0x6f, 0x2e, 0x39, 0x00, 0xa2, + 0x69, 0xa1, 0x95, 0x87, 0xb2, 0x86, 0x7b, 0x97, 0x87, 0xda, 0xd2, 0xe6, 0x41, 0x8c, 0xfc, 0x90, + 0xa3, 0xec, 0x7a, 0x61, 0x3d, 0x82, 0x61, 0x07, 0x46, 0x76, 0x4e, 0x78, 0x46, 0xfb, 0x4d, 0xdc, + 0x81, 0xb1, 0x65, 0x81, 0x7a, 0x63, 0x64, 0x64, 0xe0, 0x5c, 0xe0, 0xda, 0x3b, 0x31, 0xdc, 0x4e, + 0xcc, 0x85, 0x58, 0xad, 0xd7, 0xc0, 0x9f, 0xa9, 0xf8, 0x1f, 0x43, 0x85, 0xbb, 0x70, 0xe3, 0x95, + 0xb7, 0x75, 0xd1, 0xca, 0x2b, 0x13, 0xa1, 0x80, 0xa0, 0xf0, 0xe1, 0x8c, 0x7c, 0x11, 0xde, 0x59, + 0x74, 0x95, 0x11, 0xba, 0x4d, 0x2b, 0xf1, 0x29, 0x54, 0x26, 0x3e, 0x0e, 0x59, 0xdc, 0x18, 0x55, + 0xee, 0xa7, 0x03, 0xdf, 0x9a, 0xb5, 0xa7, 0x3c, 0x91, 0x52, 0xec, 0x07, 0xb0, 0x21, 0x71, 0x4e, + 0x4f, 0x88, 0xf9, 0x2e, 0x31, 0x6f, 0xce, 0x31, 0x1f, 0x9e, 0x20, 0x7b, 0x65, 0x92, 0x48, 0xb3, + 0xda, 0x9c, 0x4f, 0x02, 0xf5, 0xfd, 0x7b, 0xc4, 0x7f, 0xf5, 0x02, 0x47, 0x43, 0xc2, 0x59, 0xf1, + 0x9c, 0x9f, 0x99, 0xb4, 0x82, 0xa6, 0x6b, 0x56, 0xdf, 0xe4, 0x97, 0x2a, 0x28, 0xc1, 0x9e, 0x40, + 0x99, 0x6b, 0x9e, 0x14, 0xd2, 0x18, 0x54, 0xef, 0xcb, 0x4e, 0x59, 0x52, 0x3f, 0x09, 0xa1, 0x95, + 0x9c, 0xf8, 0x3b, 0x60, 0x1f, 0xc1, 0x06, 0xef, 0x35, 0x59, 0x70, 0xbf, 0xb5, 0x38, 0x11, 0x89, + 0x68, 0x77, 0x26, 0xbd, 0x35, 0xb8, 0xe6, 0x4f, 0x5d, 0xd2, 0x46, 0x05, 0xe7, 0xc4, 0xf7, 0x06, + 0x16, 0xe7, 0x7f, 0x40, 0xfc, 0xa2, 0x39, 0x1a, 0x27, 0xe3, 0xbc, 0x34, 0x6e, 0x57, 0x7c, 0x19, + 0x74, 0x80, 0x7c, 0x17, 0xe4, 0x39, 0x98, 0xda, 0x8e, 0xc9, 0xf3, 0xfc, 0xce, 0x37, 0xc9, 0x73, + 0x07, 0xf9, 0x28, 0x4f, 0x06, 0x99, 0xe9, 0xd4, 0x36, 0xab, 0x0f, 0x79, 0xf4, 0x21, 0x7e, 0xb3, + 0x37, 0xa1, 0xe2, 0x5b, 0xc3, 0xa9, 0x1f, 0xd8, 0xaf, 0x2c, 0x3d, 0xb0, 0xdd, 0x93, 0xea, 0xdb, + 0xd4, 0x8f, 0x6b, 0x31, 0xb4, 0x67, 0xbb, 0x27, 0x38, 0x79, 0xad, 0xb3, 0xd0, 0xf2, 0x5d, 0x1e, 0x65, 0xfd, 0x8e, 0x3c, 0x79, 0x9b, 0x84, 0x40, 0xe9, 0xa3, 0x81, 0x15, 0x7f, 0xcf, 0x4d, 0x8e, - 0x80, 0x4f, 0x8e, 0xad, 0xaf, 0x35, 0x39, 0x7a, 0x34, 0x39, 0xee, 0x43, 0xc1, 0x76, 0x43, 0xcb, - 0x7f, 0x65, 0x38, 0xb5, 0x47, 0x0b, 0x33, 0x38, 0xc6, 0xb1, 0x7b, 0x90, 0x0f, 0x1c, 0x1b, 0xa5, - 0x50, 0xed, 0xbd, 0x05, 0xb2, 0x08, 0xc5, 0x1e, 0x40, 0x31, 0xbe, 0x20, 0x54, 0x7b, 0x7f, 0x81, + 0x80, 0x4f, 0x8e, 0xed, 0xaf, 0x35, 0x39, 0x7a, 0x34, 0x39, 0xee, 0x43, 0xc1, 0x76, 0x43, 0xcb, + 0x7f, 0x65, 0x38, 0xd5, 0x47, 0x0b, 0x33, 0x38, 0xc6, 0xb1, 0x7b, 0x90, 0x0f, 0x1c, 0x1b, 0xa5, + 0x50, 0xf5, 0xbd, 0x05, 0xb2, 0x08, 0xc5, 0x1e, 0x40, 0x31, 0xbe, 0x20, 0x54, 0x7d, 0x7f, 0x81, 0x6e, 0x86, 0x64, 0xb7, 0x20, 0x73, 0x8a, 0x13, 0xea, 0xf1, 0xa2, 0x13, 0x1d, 0xe1, 0xa8, 0x54, 0x8c, 0x6c, 0xc7, 0xe1, 0x4a, 0xc5, 0x93, 0x05, 0xa5, 0x62, 0xd7, 0x76, 0x1c, 0xae, 0x54, 0x8c, 0xc4, 0x17, 0x6e, 0xc9, 0xc4, 0x81, 0x2d, 0xf9, 0x60, 0x71, 0x4b, 0x46, 0xdc, 0x0b, 0xba, 0x4a, 0x55, 0x0a, 0xc8, 0x33, 0xcc, 0x1d, 0xdc, 0x1f, 0xca, 0x7d, 0x95, 0x74, 0x19, 0x6b, 0x10, 0xc4, - 0x69, 0x34, 0x05, 0x84, 0x5f, 0xdc, 0x36, 0xcf, 0x6a, 0x1f, 0xf1, 0x18, 0x7d, 0x0e, 0x69, 0x99, - 0x67, 0xec, 0x3d, 0xa8, 0x44, 0x41, 0x30, 0x58, 0x5c, 0x50, 0xfb, 0x78, 0xa1, 0x06, 0x49, 0x02, - 0xb6, 0x03, 0xe5, 0x11, 0x2a, 0x99, 0x63, 0xae, 0x73, 0xd6, 0x9e, 0x52, 0x45, 0x36, 0x23, 0xa1, - 0x73, 0x91, 0x4e, 0xaa, 0x25, 0xb8, 0xd8, 0x16, 0x30, 0x7b, 0xc4, 0xc7, 0x13, 0x8d, 0x76, 0xae, - 0x57, 0xd6, 0x3e, 0xa1, 0xd9, 0xb5, 0x04, 0x43, 0xc7, 0x64, 0x96, 0x6b, 0xea, 0xe3, 0x40, 0x28, + 0x69, 0x34, 0x05, 0x84, 0x5f, 0xdc, 0x36, 0xcf, 0xaa, 0x1f, 0xf1, 0x18, 0x7d, 0x0e, 0x69, 0x99, + 0x67, 0xec, 0x3d, 0x58, 0x8b, 0x82, 0x60, 0xb0, 0xb8, 0xa0, 0xfa, 0xf1, 0x42, 0x0d, 0x92, 0x04, + 0xac, 0x01, 0xe5, 0x11, 0x2a, 0x99, 0x63, 0xae, 0x73, 0x56, 0x9f, 0x52, 0x45, 0xb6, 0x22, 0xa1, + 0x73, 0x91, 0x4e, 0xaa, 0x25, 0xb8, 0xd8, 0x36, 0x30, 0x7b, 0xc4, 0xc7, 0x13, 0x8d, 0x76, 0xae, + 0x57, 0x56, 0x3f, 0xa1, 0xd9, 0xb5, 0x04, 0x43, 0xc7, 0x64, 0x96, 0x6b, 0xea, 0xe3, 0x40, 0x28, 0x2f, 0xdf, 0xa5, 0x7a, 0x0a, 0x91, 0x1a, 0x5f, 0x24, 0x14, 0x5b, 0x5e, 0x09, 0x69, 0xf7, 0x03, 0xae, 0xcb, 0x7c, 0x02, 0x38, 0x5d, 0x5f, 0xcd, 0x58, 0x7f, 0xe5, 0x2b, 0x59, 0x91, 0x36, 0x62, - 0x7d, 0x0a, 0x55, 0xd3, 0x32, 0xa7, 0x13, 0xd2, 0xe3, 0x68, 0x8a, 0x7e, 0x4f, 0x16, 0x7e, 0xb2, - 0x83, 0x4f, 0x2b, 0x9b, 0xb2, 0xbb, 0xef, 0x63, 0x58, 0x8b, 0x3c, 0x71, 0xa1, 0x70, 0xda, 0x7d, - 0x5f, 0x2e, 0x36, 0x76, 0xb4, 0x69, 0x95, 0x69, 0xf4, 0x49, 0x45, 0x3e, 0x81, 0x0a, 0xed, 0xed, - 0x81, 0x6b, 0x4c, 0x82, 0x63, 0x2f, 0xac, 0xfd, 0xaa, 0xac, 0xa6, 0xf4, 0x04, 0x54, 0x2b, 0x23, - 0x51, 0x94, 0xc2, 0x2d, 0x69, 0xb6, 0x4e, 0x87, 0xa1, 0x55, 0xfb, 0x01, 0xdf, 0x92, 0x62, 0x60, - 0x23, 0xb4, 0xd8, 0x13, 0x00, 0x63, 0x32, 0x71, 0xce, 0xf9, 0xd4, 0xfc, 0x21, 0x4d, 0xcd, 0x0d, - 0x69, 0x6a, 0xd6, 0x11, 0x49, 0x73, 0xb3, 0x68, 0x44, 0x9f, 0xec, 0x31, 0x94, 0x27, 0x5e, 0x10, - 0xea, 0xe6, 0xd8, 0xa1, 0xf6, 0xd7, 0xe5, 0xb5, 0x7d, 0xe0, 0x05, 0xe1, 0xce, 0xd8, 0xa1, 0x8d, - 0x69, 0x12, 0x7f, 0xb3, 0x36, 0x5c, 0x4a, 0xc8, 0x6d, 0x83, 0x0e, 0xa5, 0x6b, 0xdb, 0x54, 0xe2, - 0x4d, 0xa9, 0x44, 0x49, 0x7e, 0x8b, 0x88, 0xac, 0x75, 0x6f, 0x1e, 0x44, 0x06, 0x11, 0x8d, 0x41, - 0x1c, 0x96, 0xd8, 0xe0, 0x0a, 0x0b, 0x41, 0xa3, 0xb8, 0xc4, 0xa7, 0xb0, 0x36, 0xa3, 0xc2, 0x06, - 0x06, 0xb5, 0x1d, 0x79, 0x26, 0x4b, 0xc1, 0xc3, 0x95, 0x88, 0x11, 0x61, 0x01, 0xf5, 0x9d, 0xe7, - 0x38, 0xd3, 0x89, 0x10, 0xa5, 0xb5, 0xa6, 0xe8, 0x3b, 0x02, 0x72, 0x29, 0xa9, 0xfe, 0x8b, 0x2c, - 0x14, 0x22, 0x43, 0x86, 0x95, 0x20, 0x7f, 0xd8, 0x79, 0xde, 0xe9, 0xbe, 0xec, 0xf0, 0x7b, 0x4e, - 0xf5, 0x5e, 0xaf, 0xa9, 0xf5, 0x15, 0x93, 0x55, 0x01, 0xe8, 0x26, 0x83, 0xde, 0x6b, 0xd4, 0x3b, - 0xfc, 0xde, 0x13, 0xdd, 0x9f, 0xe0, 0xe9, 0x55, 0xb6, 0x0e, 0x95, 0xdd, 0xc3, 0x0e, 0x45, 0x87, - 0x71, 0x50, 0x1a, 0x41, 0xcd, 0x4f, 0xf9, 0x99, 0x18, 0x07, 0x65, 0x10, 0xb4, 0x5f, 0xef, 0x37, - 0xb5, 0x56, 0x04, 0xca, 0x52, 0xa0, 0x59, 0xf7, 0x50, 0x6b, 0x88, 0x9c, 0x72, 0xec, 0x32, 0xac, - 0xc7, 0x6c, 0x51, 0x96, 0x4a, 0x1e, 0x6b, 0x76, 0xa0, 0x75, 0x7f, 0xd4, 0x6c, 0xf4, 0x15, 0xa0, - 0x03, 0xb6, 0x67, 0xcf, 0x94, 0x12, 0x2b, 0x43, 0x61, 0xa7, 0xd5, 0xeb, 0xb7, 0x3a, 0x8d, 0xbe, - 0x52, 0xc6, 0x0a, 0xef, 0xb6, 0xda, 0xfd, 0xa6, 0xa6, 0x54, 0x58, 0x01, 0x32, 0x3f, 0xea, 0xb6, - 0x3a, 0x4a, 0x95, 0x6e, 0x74, 0xd4, 0xf7, 0x0f, 0xda, 0x4d, 0x65, 0x0d, 0xa1, 0xbd, 0xae, 0xd6, - 0x57, 0x14, 0x84, 0xbe, 0x6c, 0x75, 0x76, 0xba, 0x2f, 0x95, 0x75, 0x56, 0x84, 0xec, 0x61, 0x07, - 0x8b, 0x61, 0xac, 0x02, 0x45, 0xfa, 0xd4, 0xeb, 0xed, 0xb6, 0x72, 0x49, 0x3a, 0x95, 0xdb, 0x40, - 0x14, 0x9d, 0xf1, 0xf5, 0xb0, 0x0e, 0x97, 0xb1, 0x2d, 0x71, 0x92, 0xa8, 0xaf, 0x60, 0x3e, 0xfb, - 0xad, 0xce, 0x61, 0x4f, 0xb9, 0x8a, 0xc4, 0xf4, 0x49, 0x98, 0x1a, 0xe6, 0xd3, 0xea, 0x50, 0x57, - 0xde, 0xc2, 0xef, 0x9d, 0x66, 0xbb, 0xd9, 0x6f, 0x2a, 0xb7, 0xb1, 0x55, 0x5a, 0xf3, 0xa0, 0x5d, - 0x6f, 0x34, 0x95, 0x4d, 0x4c, 0xb4, 0xbb, 0x8d, 0xe7, 0x7a, 0xf7, 0x40, 0xb9, 0xc3, 0x36, 0x40, - 0xe9, 0x76, 0xf4, 0x9d, 0xc3, 0x83, 0x76, 0xab, 0x51, 0xef, 0x37, 0xf5, 0xe7, 0xcd, 0xcf, 0x14, - 0x15, 0xbb, 0xfd, 0x40, 0x6b, 0xea, 0x22, 0xaf, 0xbb, 0x4c, 0x81, 0xf2, 0xee, 0xe1, 0x4f, 0x7e, - 0xf2, 0x99, 0x2e, 0xda, 0xfd, 0x26, 0x56, 0x6b, 0x46, 0xa1, 0x1f, 0x3e, 0x57, 0xee, 0xcf, 0x81, - 0x7a, 0xcf, 0x95, 0xb7, 0xb0, 0xdf, 0xa2, 0x81, 0x50, 0x1e, 0x20, 0x81, 0xd6, 0x6c, 0x1c, 0x6a, - 0xbd, 0xd6, 0x8b, 0xa6, 0xde, 0xe8, 0x37, 0x95, 0xef, 0x50, 0x47, 0xb5, 0x3a, 0xcf, 0x95, 0x87, - 0xd8, 0x12, 0xfc, 0xe2, 0xc3, 0xf3, 0x36, 0x63, 0x50, 0x9d, 0xd1, 0x12, 0xec, 0x1d, 0x24, 0xd9, - 0xd6, 0xba, 0xf5, 0x9d, 0x46, 0xbd, 0xd7, 0x57, 0xde, 0xc5, 0x6e, 0xe8, 0x1d, 0xb4, 0x5b, 0x7d, - 0x65, 0x0b, 0xdb, 0xfa, 0xac, 0xde, 0xdf, 0x6b, 0x6a, 0xca, 0x23, 0x1c, 0xe9, 0x7e, 0x6b, 0xbf, - 0xa9, 0x8b, 0x6e, 0x7f, 0x8c, 0x65, 0xec, 0xb6, 0xda, 0x6d, 0xe5, 0x09, 0x1d, 0x3c, 0xd5, 0xb5, - 0x7e, 0x8b, 0xc6, 0xfa, 0x03, 0xcc, 0xa0, 0x7e, 0x70, 0xd0, 0xfe, 0x4c, 0xf9, 0x10, 0x1b, 0xb8, - 0x7f, 0xd8, 0xee, 0xb7, 0xf4, 0xc3, 0x83, 0x9d, 0x7a, 0xbf, 0xa9, 0x7c, 0x44, 0x13, 0xa1, 0xdb, - 0xeb, 0xef, 0xec, 0xb7, 0x95, 0x8f, 0x29, 0x4f, 0x9a, 0x86, 0x8d, 0x76, 0xb7, 0xd3, 0x54, 0x9e, - 0xaa, 0xbf, 0x01, 0x85, 0xc8, 0xb8, 0xc5, 0x6c, 0x5a, 0x9d, 0x4e, 0x53, 0x53, 0x56, 0xb0, 0xa8, - 0x76, 0x73, 0xb7, 0xaf, 0xa4, 0xe8, 0x14, 0xae, 0xf5, 0x6c, 0xaf, 0xaf, 0xac, 0xe2, 0x67, 0xf7, - 0x10, 0x7b, 0x2d, 0x4d, 0xcd, 0x6d, 0xee, 0xb7, 0x94, 0x0c, 0x7e, 0xd5, 0x3b, 0xfd, 0x96, 0x92, - 0xa5, 0x79, 0xd3, 0xea, 0x3c, 0x6b, 0x37, 0x95, 0x1c, 0x42, 0xf7, 0xeb, 0xda, 0x73, 0x25, 0xcf, - 0x33, 0xdd, 0x69, 0x7e, 0xaa, 0x14, 0x58, 0x0e, 0x56, 0xdb, 0x8f, 0x95, 0x22, 0x82, 0x76, 0x9a, - 0x3b, 0x87, 0x07, 0x0a, 0xa8, 0x0f, 0x20, 0x5f, 0x3f, 0x3a, 0xda, 0xf7, 0x4c, 0x3a, 0xf8, 0xdb, - 0x3d, 0x6c, 0xb7, 0xf9, 0x3a, 0xda, 0xee, 0xf6, 0xfb, 0xdd, 0x7d, 0x25, 0x85, 0x33, 0xb7, 0xdf, - 0x3d, 0x50, 0x56, 0xd5, 0x16, 0x14, 0xa2, 0x0d, 0x53, 0xba, 0xa5, 0x54, 0x80, 0xcc, 0x81, 0xd6, - 0x7c, 0xc1, 0x8f, 0x8e, 0x3b, 0xcd, 0x4f, 0xb1, 0x9a, 0xf8, 0x85, 0x19, 0xa5, 0xb1, 0x20, 0x7e, - 0x9d, 0x88, 0xae, 0x29, 0xb5, 0x5b, 0x9d, 0x66, 0x5d, 0x53, 0xb2, 0xea, 0x87, 0x89, 0x53, 0x39, - 0x21, 0x5b, 0xb0, 0xf8, 0x7a, 0x4b, 0x14, 0xdf, 0x7a, 0xd6, 0xe9, 0x6a, 0x4d, 0x7e, 0xef, 0x49, - 0x74, 0xe4, 0xaa, 0xfa, 0x36, 0x14, 0x63, 0xb9, 0x88, 0x13, 0xab, 0xa1, 0x75, 0x7b, 0x3d, 0xde, - 0xef, 0x2b, 0x98, 0xa6, 0xbe, 0xe1, 0xe9, 0x94, 0xda, 0x83, 0xf5, 0x48, 0x24, 0x53, 0x48, 0x38, - 0x59, 0x30, 0x1b, 0x90, 0x6d, 0x5b, 0xaf, 0x2c, 0x27, 0x8a, 0x6d, 0xa6, 0x04, 0x42, 0xbb, 0x83, - 0xcf, 0x5b, 0xf1, 0xd5, 0x54, 0x4a, 0xa0, 0x0e, 0xd6, 0x91, 0x6e, 0xc7, 0x52, 0x4c, 0xfd, 0xef, - 0xa4, 0xa0, 0x10, 0x0b, 0xfa, 0x7b, 0xb0, 0xda, 0xef, 0x09, 0xaf, 0xfe, 0xc6, 0xd6, 0xec, 0x31, - 0x80, 0x7e, 0xf4, 0xa5, 0xad, 0xf6, 0x7b, 0xec, 0x1d, 0xc8, 0xf1, 0xcb, 0x7c, 0xe2, 0x38, 0x66, - 0x23, 0xb9, 0x79, 0xf4, 0x09, 0xa7, 0x09, 0x1a, 0xf6, 0x21, 0x14, 0xe3, 0xda, 0x0a, 0xc7, 0xcb, - 0xd5, 0x24, 0x43, 0x8c, 0xd6, 0x66, 0x94, 0x6a, 0x1b, 0xaa, 0xc9, 0x0c, 0xd9, 0x2d, 0x00, 0x9e, - 0xa5, 0xe4, 0x70, 0x92, 0x20, 0xec, 0x3a, 0x44, 0x77, 0x0c, 0x77, 0xa8, 0x62, 0x95, 0xf8, 0xce, - 0xe1, 0x8e, 0xfa, 0x37, 0xd3, 0x00, 0x33, 0x55, 0x11, 0x3b, 0x22, 0x76, 0x27, 0x65, 0xc5, 0x81, - 0xee, 0x0d, 0x28, 0x3a, 0x9e, 0x61, 0xca, 0x6f, 0x01, 0x14, 0x10, 0x40, 0x43, 0x23, 0xdf, 0xb7, - 0x29, 0xf2, 0x68, 0x0a, 0x76, 0x05, 0x72, 0x23, 0xcf, 0x1f, 0x1b, 0xa1, 0x08, 0x64, 0x17, 0x29, - 0x94, 0xf8, 0xfc, 0x90, 0x11, 0x15, 0x66, 0x97, 0x62, 0xd9, 0x71, 0x0c, 0xca, 0x02, 0xd8, 0x46, - 0x18, 0xda, 0x8f, 0x96, 0x3b, 0x74, 0xbc, 0xc0, 0x32, 0xd1, 0xb4, 0xca, 0x91, 0x56, 0x0c, 0x11, - 0x68, 0xfb, 0x9c, 0xb7, 0xd6, 0x1f, 0xdb, 0xae, 0x11, 0x0a, 0xd7, 0x3b, 0xb5, 0x36, 0x82, 0x60, - 0x75, 0x3f, 0x0f, 0x3c, 0xe1, 0x5d, 0xe2, 0xe7, 0x95, 0x05, 0x04, 0x50, 0x75, 0xdf, 0x00, 0xb0, - 0x82, 0xa1, 0x31, 0xe1, 0x99, 0x17, 0x29, 0xf3, 0xa2, 0x80, 0x6c, 0x9f, 0xb3, 0x36, 0x54, 0xfb, - 0x03, 0xdc, 0xa1, 0x3c, 0xb4, 0xfa, 0x1b, 0x9e, 0x23, 0xfc, 0x3e, 0xf7, 0xe6, 0x75, 0xea, 0xad, - 0x24, 0x19, 0x3f, 0x58, 0x9d, 0xe3, 0xbd, 0x5e, 0x87, 0x4b, 0x4b, 0xc8, 0xbe, 0x51, 0x84, 0x99, - 0x13, 0x8d, 0x4e, 0x3d, 0x0c, 0xe9, 0xee, 0x48, 0xbc, 0x19, 0xa7, 0xa2, 0x08, 0x78, 0xbe, 0x0f, - 0xdf, 0xa0, 0x18, 0x12, 0x11, 0x9c, 0x28, 0x06, 0x29, 0x0e, 0x3a, 0xbc, 0x0f, 0x6b, 0x88, 0x1c, - 0xd9, 0x96, 0x63, 0x0a, 0x12, 0x7e, 0xf5, 0xa1, 0x32, 0xf4, 0x9c, 0x5d, 0x84, 0x12, 0x9d, 0xfa, - 0xd7, 0xb3, 0x00, 0x33, 0x33, 0x2c, 0x71, 0xb6, 0x9b, 0x4a, 0x9e, 0xed, 0x3e, 0x86, 0x2b, 0xe2, - 0x62, 0x4c, 0x7c, 0x40, 0x6a, 0xbb, 0xfa, 0xc0, 0x88, 0x8e, 0xd1, 0x99, 0xc0, 0xf2, 0x33, 0xd2, - 0x96, 0xbb, 0x6d, 0xa0, 0x52, 0xb7, 0x26, 0xf3, 0x84, 0xe7, 0x93, 0x64, 0x18, 0x80, 0xac, 0x2a, - 0xcc, 0xd8, 0xfb, 0xe7, 0x13, 0xf6, 0x1e, 0x5c, 0xf6, 0xad, 0x91, 0x6f, 0x05, 0xc7, 0x7a, 0x18, - 0xc8, 0x85, 0xf1, 0x68, 0xb5, 0x75, 0x81, 0xec, 0x07, 0x71, 0x59, 0xef, 0xc1, 0x65, 0x61, 0xa0, - 0xcd, 0x55, 0x8f, 0xdf, 0xa0, 0x5e, 0xe7, 0x48, 0xb9, 0x76, 0x6f, 0x00, 0x08, 0xdb, 0x34, 0x7a, - 0x51, 0xa3, 0xa0, 0x15, 0xb9, 0x1d, 0x2a, 0xee, 0x99, 0x92, 0x81, 0x29, 0x0e, 0xbe, 0x78, 0x82, - 0xa9, 0x90, 0x41, 0x71, 0x4a, 0x87, 0x34, 0xd5, 0xc7, 0xd5, 0x2d, 0x7a, 0x31, 0x84, 0xee, 0xfd, - 0x7a, 0xa6, 0xa5, 0x11, 0x8e, 0xbd, 0x0b, 0x97, 0xe4, 0x66, 0x47, 0x97, 0xde, 0x4b, 0x54, 0x11, - 0x65, 0xd6, 0x50, 0x8d, 0x5f, 0x7f, 0x7f, 0x1b, 0x98, 0x54, 0xf3, 0x88, 0xba, 0x4c, 0xd4, 0x6b, - 0x71, 0xb5, 0x05, 0xf1, 0x5b, 0x40, 0x55, 0xe4, 0x3e, 0xf1, 0xca, 0xa2, 0x35, 0x86, 0x48, 0x72, - 0x8e, 0xbf, 0x07, 0x97, 0x67, 0xad, 0xd3, 0x8d, 0x50, 0x0f, 0x8f, 0x2d, 0xdd, 0x72, 0x4d, 0xba, - 0xcd, 0x54, 0xd0, 0xd6, 0xe3, 0x86, 0xd6, 0xc3, 0xfe, 0xb1, 0x85, 0xf6, 0x94, 0xe4, 0x85, 0x5b, - 0xfb, 0x6a, 0x2f, 0xdc, 0x47, 0x50, 0x4b, 0x1c, 0xf8, 0xca, 0xdd, 0xcd, 0x6f, 0x03, 0x6e, 0xc8, - 0xc7, 0xbc, 0x71, 0x8f, 0x3f, 0x84, 0xf5, 0x63, 0x23, 0xd0, 0x13, 0xbc, 0xe4, 0x1c, 0x2c, 0x68, - 0x6b, 0xc7, 0x46, 0x70, 0x20, 0xf1, 0xa8, 0xbf, 0x97, 0x82, 0x6a, 0xd2, 0x30, 0xe5, 0xb7, 0x41, - 0x9c, 0xe9, 0xd8, 0xe5, 0xb1, 0x1d, 0x59, 0x2d, 0x4a, 0xe2, 0x5a, 0x98, 0x9c, 0xe8, 0x3c, 0x15, - 0xad, 0x85, 0xc9, 0x49, 0x83, 0xd2, 0xec, 0x3b, 0x90, 0x9f, 0x9c, 0x70, 0xe1, 0x70, 0xd1, 0xec, - 0xcb, 0x4d, 0x78, 0x50, 0xed, 0x77, 0x20, 0x3f, 0x15, 0xa4, 0x99, 0x8b, 0x48, 0xa7, 0x44, 0xaa, - 0xfe, 0xcb, 0x55, 0x28, 0xcb, 0x2e, 0x99, 0xaf, 0x73, 0x0e, 0xfc, 0x8d, 0xce, 0xef, 0x37, 0x29, - 0xc6, 0x4e, 0xa7, 0x08, 0x5e, 0xec, 0x27, 0x7e, 0x08, 0x0c, 0xc7, 0x46, 0x50, 0x9f, 0x86, 0x5e, - 0xc3, 0xe3, 0x67, 0x4f, 0x9e, 0x13, 0x45, 0xf6, 0xf2, 0x95, 0x81, 0x32, 0x41, 0x04, 0xf5, 0xbe, - 0x27, 0x2e, 0x0e, 0xd0, 0x55, 0x21, 0x8a, 0x1d, 0xc9, 0x2e, 0xcc, 0x97, 0x72, 0x74, 0x53, 0x88, - 0xc2, 0x42, 0x1e, 0xc3, 0xda, 0x2c, 0x4c, 0x3b, 0x0a, 0x37, 0x99, 0x67, 0xa9, 0xc4, 0x31, 0xda, - 0xe2, 0x6e, 0x70, 0xc5, 0x0e, 0x74, 0xcf, 0x31, 0xa3, 0xfb, 0x20, 0xf9, 0xc8, 0x07, 0xdf, 0x75, - 0x4c, 0x71, 0x5b, 0x8c, 0xd3, 0xb8, 0xd6, 0x69, 0x44, 0x13, 0xfb, 0xe9, 0x3b, 0xd6, 0xa9, 0xb8, - 0x17, 0xf2, 0xaf, 0x52, 0xb0, 0xbe, 0xe0, 0x42, 0x41, 0xc9, 0x39, 0x7b, 0xa9, 0x06, 0x3f, 0xd9, - 0x1d, 0x28, 0x8f, 0x8d, 0x70, 0x78, 0xac, 0x4f, 0x7c, 0x6b, 0x64, 0x9f, 0x45, 0xcf, 0xed, 0x10, - 0xec, 0x80, 0x40, 0x14, 0x82, 0x33, 0x99, 0x90, 0xe3, 0x68, 0x6c, 0x87, 0x42, 0xf0, 0x01, 0x81, - 0xb8, 0xa7, 0x2d, 0x0a, 0xcf, 0xcb, 0x5c, 0x10, 0x9e, 0x77, 0x1d, 0x8a, 0xae, 0x17, 0xea, 0x9e, - 0xab, 0x4f, 0x4e, 0xc4, 0x65, 0xf2, 0xbc, 0xeb, 0x85, 0x5d, 0xf7, 0xe0, 0x84, 0x3d, 0x00, 0x65, - 0x1a, 0x58, 0xfa, 0xc0, 0xf1, 0xbc, 0x71, 0x64, 0xc7, 0x70, 0xd9, 0x51, 0x9d, 0x06, 0xd6, 0x36, - 0x82, 0x85, 0x25, 0x73, 0x13, 0x72, 0xad, 0xd8, 0xe1, 0x13, 0x47, 0xa2, 0xa4, 0xc5, 0xcb, 0x14, - 0x1e, 0x14, 0x1b, 0xf4, 0xca, 0xc5, 0xbe, 0x31, 0x61, 0x0f, 0x21, 0x3d, 0x36, 0x26, 0x22, 0x52, - 0xa5, 0x16, 0x1f, 0x07, 0x71, 0xec, 0xd6, 0xbe, 0x31, 0xe1, 0xdb, 0x0d, 0x12, 0x5d, 0xff, 0x08, - 0x0a, 0x11, 0xe0, 0x1b, 0x6d, 0x2c, 0xff, 0x66, 0x15, 0x8a, 0x3b, 0xb2, 0x1b, 0x19, 0x6d, 0xdf, - 0xd0, 0x9f, 0xba, 0xa8, 0xa5, 0x45, 0xf7, 0xf5, 0x87, 0x86, 0xdb, 0x17, 0xa0, 0x68, 0x42, 0xaf, - 0x7e, 0xc5, 0x84, 0xbe, 0x09, 0xe0, 0x93, 0xbf, 0x83, 0x5c, 0x1e, 0xe9, 0x38, 0x2a, 0xb2, 0x65, - 0xb6, 0xcc, 0xb3, 0xe5, 0x61, 0x0f, 0x99, 0xaf, 0x1f, 0xf6, 0x90, 0x5d, 0x1a, 0xf6, 0x70, 0x7f, - 0xb6, 0xa9, 0xe0, 0xc4, 0xc6, 0x82, 0x8b, 0x7c, 0x6b, 0x9b, 0xc4, 0x97, 0x23, 0xb0, 0xf4, 0xef, - 0x42, 0x35, 0x6a, 0x9d, 0xc8, 0x0f, 0x12, 0xf7, 0x31, 0x04, 0x8e, 0xfb, 0x9d, 0x2b, 0xa1, 0x9c, - 0x4c, 0x2e, 0xd4, 0xd2, 0x6b, 0xe2, 0x41, 0x7e, 0x3f, 0x05, 0x4c, 0xd8, 0xe7, 0xbb, 0x53, 0xc7, - 0xe9, 0x5b, 0x67, 0x24, 0x0f, 0x1e, 0xc2, 0xba, 0x70, 0x8b, 0x4b, 0xd1, 0x54, 0xe2, 0x6c, 0x90, - 0x23, 0x66, 0x67, 0x83, 0xcb, 0xae, 0xcc, 0xad, 0x2e, 0xbd, 0x32, 0xb7, 0xfc, 0x2a, 0xde, 0x6d, - 0x28, 0xc9, 0x17, 0xce, 0xb8, 0x12, 0x06, 0xc6, 0xec, 0xae, 0xd9, 0xbf, 0x5b, 0x05, 0x98, 0xf9, - 0x10, 0x7e, 0xd9, 0x31, 0x2b, 0x4b, 0x86, 0x24, 0xbd, 0x6c, 0x48, 0x1e, 0x80, 0x22, 0xd3, 0x49, - 0x37, 0x1f, 0xab, 0x33, 0xc2, 0x48, 0xb9, 0xb1, 0x03, 0xf9, 0x76, 0x1a, 0x05, 0xa8, 0x89, 0x73, - 0x79, 0x11, 0xbd, 0x46, 0x92, 0x57, 0xac, 0xbd, 0x82, 0x1d, 0x70, 0x49, 0xcc, 0x3e, 0x81, 0x6b, - 0x31, 0xa7, 0x7e, 0x6a, 0x87, 0xc7, 0xde, 0x34, 0x14, 0xeb, 0x34, 0x10, 0xb2, 0xe9, 0x4a, 0x94, - 0xd3, 0x4b, 0x8e, 0xe6, 0xeb, 0x35, 0x40, 0xf5, 0x7c, 0x34, 0x75, 0x1c, 0x3d, 0xb4, 0xce, 0x42, - 0xf1, 0x04, 0x40, 0x2d, 0xe1, 0x7e, 0x91, 0x86, 0x57, 0x2b, 0x8c, 0x44, 0x42, 0xfd, 0x47, 0x69, - 0xc8, 0xfe, 0x78, 0x6a, 0xf9, 0xe7, 0xec, 0x23, 0x28, 0x06, 0xe1, 0x38, 0x94, 0xcf, 0x67, 0xaf, - 0xf1, 0x0c, 0x08, 0x4f, 0xc7, 0xab, 0xd6, 0xd8, 0x72, 0x43, 0xee, 0x97, 0x44, 0x5a, 0xda, 0x76, - 0x36, 0x20, 0x1b, 0x84, 0xd6, 0x24, 0x10, 0xd1, 0x66, 0x3c, 0xc1, 0x36, 0x21, 0xeb, 0x7a, 0xa6, - 0x15, 0x24, 0x63, 0xca, 0x3a, 0xa8, 0x67, 0x70, 0x04, 0x53, 0x21, 0x17, 0x8f, 0xf8, 0xc2, 0x19, - 0x29, 0xc7, 0xd0, 0x2d, 0x01, 0xcb, 0x30, 0x6d, 0xf7, 0x28, 0xba, 0x49, 0x1a, 0xa7, 0x71, 0x43, - 0x25, 0xb5, 0xde, 0x38, 0x8a, 0xae, 0x75, 0x8b, 0x24, 0xdb, 0x84, 0x12, 0x7e, 0xbe, 0xf4, 0xed, - 0xd0, 0xea, 0x3d, 0x89, 0x64, 0xba, 0x04, 0x42, 0xa5, 0xdc, 0xb4, 0x42, 0x6b, 0x18, 0xf6, 0xbe, - 0x10, 0x81, 0x62, 0x14, 0x4f, 0x14, 0x41, 0xd8, 0x77, 0x81, 0x0d, 0x8c, 0xe1, 0xc9, 0x91, 0xef, - 0x4d, 0x5d, 0x53, 0xff, 0x62, 0x6a, 0xf9, 0xb6, 0x15, 0x05, 0x86, 0x95, 0xa4, 0x4e, 0xd1, 0xd6, - 0x67, 0x64, 0x3f, 0xe6, 0x54, 0xaa, 0x09, 0x95, 0x44, 0x57, 0x2d, 0xf8, 0x81, 0x7a, 0xcd, 0x76, - 0xb3, 0xd1, 0xe7, 0x06, 0xa4, 0x70, 0x3e, 0xac, 0xca, 0xce, 0x8b, 0xb4, 0xe4, 0xd5, 0xc8, 0x48, - 0x56, 0x66, 0x96, 0x7c, 0x22, 0x4d, 0xed, 0x59, 0x53, 0xc9, 0xa9, 0x7f, 0xb0, 0x0a, 0xeb, 0x7d, - 0xdf, 0x70, 0x03, 0x83, 0xeb, 0x1c, 0x6e, 0xe8, 0x7b, 0x0e, 0xfb, 0x2e, 0x14, 0xc2, 0xa1, 0x23, - 0x0f, 0xe1, 0xed, 0x48, 0x60, 0xcc, 0x91, 0x6e, 0xf5, 0x87, 0xdc, 0xc1, 0x9c, 0x0f, 0xf9, 0x07, - 0x7b, 0x17, 0xb2, 0x03, 0xeb, 0xc8, 0x76, 0x85, 0xcc, 0xbc, 0x3c, 0xcf, 0xb8, 0x8d, 0xc8, 0xbd, - 0x15, 0x8d, 0x53, 0xb1, 0xf7, 0x20, 0x37, 0xf4, 0xc6, 0xd1, 0x16, 0x35, 0xbb, 0x91, 0x24, 0x15, - 0x84, 0xd8, 0xbd, 0x15, 0x4d, 0xd0, 0xb1, 0x8f, 0xa0, 0xe0, 0x7b, 0x8e, 0x83, 0x3d, 0x26, 0x36, - 0xaf, 0xda, 0x3c, 0x8f, 0x26, 0xf0, 0x7b, 0x2b, 0x5a, 0x4c, 0xab, 0x6e, 0x41, 0x5e, 0x54, 0x16, - 0x3b, 0x60, 0xbb, 0xf9, 0xac, 0x25, 0x3a, 0xb2, 0xd1, 0xdd, 0xdf, 0x6f, 0xf5, 0xf9, 0x75, 0x4b, - 0xad, 0xdb, 0x6e, 0x6f, 0xd7, 0x1b, 0xcf, 0x95, 0xd5, 0xed, 0x02, 0xe4, 0xb8, 0x2b, 0x51, 0xfd, - 0xcd, 0x14, 0xac, 0xcd, 0x35, 0x80, 0x3d, 0x85, 0xcc, 0x18, 0x75, 0x60, 0xde, 0x3d, 0xf7, 0x96, - 0xb6, 0x52, 0x4a, 0x73, 0xcd, 0x18, 0x39, 0xd4, 0x4f, 0xa0, 0x9a, 0x84, 0x4b, 0xbe, 0x86, 0x0a, - 0x14, 0xb5, 0x66, 0x7d, 0x47, 0xef, 0x76, 0xd0, 0xc2, 0x47, 0x8b, 0x9f, 0x92, 0x2f, 0xb5, 0x16, - 0xb9, 0x07, 0x7e, 0x0d, 0x94, 0xf9, 0x8e, 0x61, 0xcf, 0xd0, 0xca, 0x19, 0x4f, 0x1c, 0x8b, 0x94, - 0x49, 0x69, 0xc8, 0x6e, 0x2d, 0xe9, 0x49, 0x41, 0x46, 0x23, 0x56, 0x1d, 0x26, 0xd2, 0xea, 0xaf, - 0x03, 0x5b, 0xec, 0xc1, 0x5f, 0x5e, 0xf6, 0xff, 0x2b, 0x05, 0x99, 0x03, 0xc7, 0x70, 0xd9, 0x5d, - 0xc8, 0xd2, 0x33, 0x21, 0x42, 0xf2, 0xca, 0xeb, 0x00, 0xa7, 0x05, 0xe1, 0xd8, 0xdb, 0x90, 0x0e, - 0x87, 0xd1, 0x2d, 0xcf, 0xab, 0x17, 0x4c, 0xbe, 0xbd, 0x15, 0x0d, 0xa9, 0xd8, 0x03, 0x48, 0x9b, - 0x66, 0x14, 0x5d, 0x2d, 0xbc, 0x0f, 0x68, 0x7b, 0xee, 0x58, 0x23, 0xdb, 0xb5, 0xc5, 0xb3, 0x26, - 0x48, 0xc2, 0xde, 0x84, 0xb4, 0x39, 0x74, 0x92, 0xa1, 0xf2, 0xdc, 0x4a, 0x8d, 0x33, 0x34, 0x87, - 0x0e, 0xea, 0x6a, 0xa1, 0x7f, 0xae, 0xfb, 0x53, 0x97, 0xc2, 0xc5, 0x02, 0x61, 0x3f, 0x95, 0x50, - 0xff, 0x98, 0x52, 0xcc, 0x59, 0x20, 0xae, 0x8b, 0x4d, 0x7c, 0x6b, 0x62, 0xf8, 0xb1, 0xe5, 0x64, - 0x07, 0x07, 0x1c, 0xb0, 0x9d, 0x03, 0x7a, 0x7d, 0x51, 0x7d, 0x87, 0xde, 0xb0, 0x40, 0x15, 0x5c, - 0x8d, 0xbe, 0x96, 0x3c, 0xd4, 0x25, 0x30, 0xea, 0x9f, 0xa5, 0xa1, 0x24, 0xd5, 0x87, 0x7d, 0x00, - 0x05, 0x33, 0xb9, 0x10, 0xaf, 0x2d, 0x54, 0x7a, 0x6b, 0x27, 0x5a, 0x82, 0xa6, 0x98, 0xde, 0x74, - 0x7a, 0x11, 0xea, 0xaf, 0x0c, 0xdf, 0xe6, 0x2f, 0x17, 0xad, 0xca, 0xc7, 0x08, 0x3d, 0x2b, 0x7c, - 0x11, 0x61, 0xf6, 0x56, 0xb4, 0x72, 0x20, 0xa5, 0xc9, 0x4e, 0x10, 0x4d, 0x4a, 0x27, 0x5e, 0x80, - 0xe2, 0xc0, 0xbd, 0x15, 0x2d, 0xc2, 0x23, 0xa9, 0x75, 0x66, 0x0d, 0xa7, 0x61, 0x64, 0x27, 0x54, - 0xa2, 0x06, 0x11, 0x90, 0x9e, 0xa1, 0xe3, 0x9f, 0xec, 0x31, 0xca, 0x49, 0xc3, 0x71, 0x3c, 0x52, - 0xb3, 0xb2, 0xb2, 0x53, 0x7f, 0x27, 0x86, 0xf3, 0x67, 0xef, 0xa2, 0x14, 0xbb, 0x0f, 0x59, 0x2f, - 0x3c, 0xb6, 0x22, 0xed, 0x3b, 0x7a, 0x0d, 0x03, 0x41, 0x3b, 0x8d, 0x36, 0xce, 0x14, 0x42, 0xab, - 0x3f, 0x4b, 0x41, 0x5e, 0xf4, 0x00, 0x5b, 0x87, 0x4a, 0xaf, 0xd9, 0xd7, 0x5f, 0xd4, 0xb5, 0x56, - 0x7d, 0xbb, 0xdd, 0x14, 0x11, 0xfe, 0xcf, 0xb4, 0x7a, 0x47, 0xc8, 0x49, 0xad, 0xf9, 0xa2, 0xfb, - 0xbc, 0xc9, 0x1d, 0x78, 0x3b, 0xcd, 0xce, 0x67, 0x4a, 0x9a, 0x3b, 0xb1, 0x9b, 0x07, 0x75, 0x0d, - 0xa5, 0x64, 0x09, 0xf2, 0xcd, 0x4f, 0x9b, 0x8d, 0x43, 0x12, 0x93, 0x55, 0x80, 0x9d, 0x66, 0xbd, - 0xdd, 0xee, 0x36, 0x50, 0x6c, 0xe6, 0x18, 0x83, 0x6a, 0x43, 0x6b, 0xd6, 0xfb, 0x4d, 0xbd, 0xde, - 0x68, 0x74, 0x0f, 0x3b, 0x7d, 0x25, 0x8f, 0x25, 0xd6, 0xdb, 0xfd, 0xa6, 0x16, 0x83, 0xe8, 0x85, - 0xa2, 0x1d, 0xad, 0x7b, 0x10, 0x43, 0x8a, 0xdb, 0x45, 0xb4, 0xd9, 0x68, 0xac, 0xd4, 0x7f, 0xa2, - 0x40, 0x35, 0x39, 0x35, 0xd9, 0xc7, 0x50, 0x30, 0xcd, 0xc4, 0x18, 0xdf, 0x5c, 0x36, 0x85, 0xb7, - 0x76, 0xcc, 0x68, 0x98, 0xf9, 0x07, 0xbb, 0x13, 0x2d, 0xa4, 0xd5, 0x85, 0x85, 0x14, 0x2d, 0xa3, - 0x1f, 0xc0, 0x9a, 0x78, 0x4d, 0xc2, 0x34, 0x42, 0x63, 0x60, 0x04, 0x56, 0x72, 0x95, 0x34, 0x08, - 0xb9, 0x23, 0x70, 0x7b, 0x2b, 0x5a, 0x75, 0x98, 0x80, 0xb0, 0xef, 0x41, 0xd5, 0x20, 0xb3, 0x3c, - 0xe6, 0xcf, 0xc8, 0x0a, 0x64, 0x1d, 0x71, 0x12, 0x7b, 0xc5, 0x90, 0x01, 0x38, 0x11, 0x4d, 0xdf, - 0x9b, 0xcc, 0x98, 0xb3, 0x89, 0xf3, 0x2c, 0xdf, 0x9b, 0x48, 0xbc, 0x65, 0x53, 0x4a, 0xb3, 0x8f, - 0xa0, 0x2c, 0x6a, 0x3e, 0x73, 0x4d, 0xc4, 0x4b, 0x96, 0x57, 0x9b, 0x14, 0xc2, 0xbd, 0x15, 0xad, - 0x34, 0x9c, 0x25, 0xd9, 0x13, 0xd4, 0x02, 0x67, 0xea, 0x73, 0x5e, 0x9e, 0x6b, 0x54, 0xdb, 0x88, - 0x0b, 0x8c, 0x38, 0xc5, 0xde, 0x03, 0xa0, 0x7a, 0x72, 0x9e, 0x42, 0x22, 0xfe, 0xc4, 0xf7, 0x26, - 0x11, 0x4b, 0xd1, 0x8c, 0x12, 0x52, 0xf5, 0xb8, 0x63, 0xa9, 0xb8, 0x58, 0x3d, 0x72, 0x2e, 0xcd, - 0xaa, 0xc7, 0x7d, 0x52, 0x71, 0xf5, 0x38, 0x1b, 0x2c, 0x54, 0x2f, 0xe2, 0xe2, 0xd5, 0xe3, 0x4c, - 0x51, 0xf5, 0x38, 0x4f, 0x69, 0xbe, 0x7a, 0x11, 0x0b, 0x55, 0x8f, 0x73, 0x7c, 0x6f, 0x41, 0xef, - 0x2f, 0x5f, 0xa8, 0xf7, 0xe3, 0xb0, 0x25, 0x35, 0xff, 0xef, 0x41, 0x35, 0x38, 0xf6, 0x4e, 0x25, - 0x01, 0x52, 0x91, 0xb9, 0x7b, 0xc7, 0xde, 0xa9, 0x2c, 0x41, 0x2a, 0x81, 0x0c, 0xc0, 0xda, 0xf2, - 0x26, 0xd2, 0x35, 0xf6, 0xaa, 0x5c, 0x5b, 0x6a, 0xe1, 0x0b, 0xdb, 0x3a, 0xc5, 0xda, 0x1a, 0x51, - 0x02, 0x3b, 0x65, 0xe6, 0xa6, 0x09, 0x84, 0xe3, 0x25, 0x11, 0x1f, 0x21, 0x4a, 0x82, 0xd8, 0x61, - 0x13, 0xe0, 0xdc, 0x9a, 0xba, 0x32, 0x9b, 0x22, 0xcf, 0xad, 0x43, 0x37, 0xc1, 0x58, 0xe6, 0xa4, - 0x82, 0x75, 0xb6, 0x2a, 0x02, 0xeb, 0x8b, 0xa9, 0xe5, 0x0e, 0x2d, 0x11, 0x9d, 0x95, 0x58, 0x15, - 0x3d, 0x81, 0x9b, 0xad, 0x8a, 0x08, 0x12, 0xcf, 0xeb, 0x98, 0x9d, 0xcd, 0xcf, 0x6b, 0x89, 0x99, - 0xe6, 0x75, 0xcc, 0x1a, 0x2f, 0xa8, 0x98, 0xf7, 0xd2, 0xc2, 0x82, 0x92, 0x98, 0xf9, 0x82, 0x8a, - 0xb9, 0x9f, 0x80, 0x98, 0x4d, 0xbc, 0x73, 0x13, 0x31, 0x5c, 0xbc, 0xd6, 0xa2, 0x77, 0x61, 0x18, - 0xa7, 0x70, 0xae, 0xfa, 0x16, 0xda, 0x19, 0x62, 0x2a, 0x5c, 0x96, 0xe7, 0xaa, 0x46, 0x98, 0x78, - 0x29, 0xf9, 0xb3, 0xa4, 0x54, 0xd8, 0xc4, 0x0e, 0xfd, 0x9a, 0xb9, 0x58, 0xd8, 0x81, 0x1d, 0xfa, - 0xb3, 0xc2, 0x30, 0xc5, 0xde, 0x05, 0x9a, 0x86, 0x9c, 0xc5, 0x92, 0x45, 0x37, 0x76, 0x8b, 0x60, - 0x28, 0x98, 0xe2, 0x9b, 0xca, 0x70, 0x3c, 0x37, 0xaa, 0xda, 0x28, 0x51, 0x06, 0x22, 0xe2, 0xe5, - 0x3a, 0x8c, 0x53, 0xea, 0x7f, 0xc9, 0x42, 0x5e, 0x48, 0x43, 0x76, 0x09, 0xd6, 0x84, 0x50, 0xde, - 0xa9, 0xf7, 0xeb, 0xdb, 0xf5, 0x1e, 0xaa, 0x51, 0x0c, 0xaa, 0x5c, 0x2a, 0xc7, 0xb0, 0x14, 0x4a, - 0x6a, 0x12, 0xcb, 0x31, 0x68, 0x15, 0x25, 0xb5, 0xe0, 0xe5, 0xef, 0xce, 0xa5, 0xd9, 0x1a, 0x94, - 0x38, 0x23, 0x07, 0xd0, 0x95, 0x40, 0xe2, 0xe2, 0xe9, 0xac, 0xc4, 0xc2, 0x4f, 0x9c, 0x72, 0x33, - 0x16, 0x0e, 0xc8, 0xc7, 0x2c, 0xd1, 0x91, 0x14, 0x83, 0x6a, 0x5f, 0x3b, 0xec, 0x34, 0x66, 0xe5, - 0x14, 0xe9, 0x1a, 0x17, 0xcf, 0xe6, 0x45, 0xab, 0xf9, 0x52, 0x01, 0x64, 0xe2, 0xb9, 0x50, 0xba, - 0x84, 0x8a, 0x20, 0x65, 0x42, 0xc9, 0x32, 0xbb, 0x0a, 0x97, 0x7a, 0x7b, 0xdd, 0x97, 0x3a, 0x67, - 0x8a, 0x9b, 0x50, 0x61, 0x1b, 0xa0, 0x48, 0x08, 0x9e, 0x7d, 0x15, 0x8b, 0x24, 0x68, 0x44, 0xd8, - 0x53, 0xd6, 0xe8, 0x50, 0x17, 0x61, 0x7d, 0xbe, 0x33, 0x2a, 0xd8, 0x14, 0xce, 0xda, 0x6d, 0x1f, - 0xee, 0x77, 0x7a, 0xca, 0x3a, 0x56, 0x82, 0x20, 0xbc, 0xe6, 0x2c, 0xce, 0x66, 0xb6, 0x9f, 0x5e, - 0xa2, 0x2d, 0x16, 0x61, 0x2f, 0xeb, 0x5a, 0xa7, 0xd5, 0x79, 0xd6, 0x53, 0x36, 0xe2, 0x9c, 0x9b, - 0x9a, 0xd6, 0xd5, 0x7a, 0xca, 0xe5, 0x18, 0xd0, 0xeb, 0xd7, 0xfb, 0x87, 0x3d, 0xe5, 0x4a, 0x5c, - 0xcb, 0x03, 0xad, 0xdb, 0x68, 0xf6, 0x7a, 0xed, 0x56, 0xaf, 0xaf, 0x5c, 0x65, 0x97, 0x61, 0x7d, - 0x56, 0xa3, 0x88, 0xb8, 0x26, 0x55, 0x54, 0x7b, 0xd6, 0xec, 0x2b, 0xd7, 0xe2, 0x6a, 0x34, 0xba, - 0xed, 0x76, 0x9d, 0x8e, 0x23, 0xaf, 0x23, 0x11, 0x9d, 0xcb, 0x8a, 0xd6, 0xdc, 0xc0, 0x7a, 0x1d, - 0x76, 0x64, 0xd0, 0x4d, 0x69, 0x6a, 0xf4, 0x9a, 0x3f, 0x3e, 0x6c, 0x76, 0x1a, 0x4d, 0xe5, 0x8d, - 0xd9, 0xd4, 0x88, 0x61, 0xb7, 0xe2, 0xa9, 0x11, 0x83, 0x6e, 0xc7, 0x65, 0x46, 0xa0, 0x9e, 0xb2, - 0x89, 0xf9, 0x89, 0x7a, 0x74, 0x3a, 0xcd, 0x46, 0x1f, 0xdb, 0x7a, 0x27, 0xee, 0xc5, 0xc3, 0x83, - 0x67, 0x5a, 0x7d, 0xa7, 0xa9, 0xa8, 0x08, 0xd1, 0x9a, 0x9d, 0xfa, 0x7e, 0x34, 0xda, 0x77, 0xa5, - 0xd1, 0x3e, 0x68, 0xf5, 0x35, 0xe5, 0x5e, 0x3c, 0xba, 0x94, 0x7c, 0x93, 0xdd, 0x80, 0xab, 0xf2, - 0x3c, 0xd4, 0x5f, 0xb6, 0xfa, 0x7b, 0xe2, 0xf4, 0xf4, 0xfe, 0x76, 0x99, 0x1e, 0x08, 0x16, 0x4a, - 0x80, 0xfa, 0x23, 0x60, 0xf2, 0x5b, 0x99, 0x22, 0xd0, 0x94, 0x41, 0x66, 0xe4, 0x7b, 0xe3, 0xe8, - 0x02, 0x3e, 0x7e, 0xa3, 0xf5, 0x3a, 0x99, 0x0e, 0xe8, 0xfc, 0x71, 0x76, 0xc1, 0x56, 0x06, 0xa9, - 0x7f, 0x3f, 0x05, 0xd5, 0xa4, 0x02, 0x40, 0x4e, 0xca, 0x91, 0xee, 0x7a, 0x21, 0x7f, 0x8d, 0x28, - 0x88, 0x9f, 0xb0, 0x1c, 0x75, 0xbc, 0x90, 0x9e, 0x23, 0x22, 0x63, 0x3a, 0xde, 0xcf, 0x79, 0xae, - 0x71, 0x9a, 0xb5, 0xe0, 0x52, 0xe2, 0xb9, 0xd1, 0xc4, 0x5b, 0x50, 0xb5, 0xf8, 0x99, 0xc0, 0xb9, - 0xfa, 0x6b, 0x2c, 0x58, 0x6c, 0x93, 0xb8, 0x26, 0x9d, 0x99, 0x5d, 0x93, 0xde, 0x83, 0x4a, 0x42, - 0xdf, 0x20, 0x1f, 0xc8, 0x28, 0x59, 0xd3, 0x82, 0x3d, 0x7a, 0x7d, 0x35, 0xd5, 0xbf, 0x9b, 0x82, - 0xb2, 0xac, 0x7d, 0x7c, 0xeb, 0x9c, 0xe8, 0x4a, 0x91, 0xf8, 0xd6, 0x6d, 0x33, 0x7a, 0x85, 0x28, - 0x02, 0xb5, 0xe8, 0x61, 0x74, 0xee, 0xef, 0xdd, 0x3d, 0xe9, 0xc5, 0xcd, 0x91, 0x41, 0xec, 0x16, - 0x00, 0x5d, 0xb0, 0xdc, 0x7d, 0x8e, 0x04, 0xe2, 0x52, 0xd2, 0x0c, 0xa2, 0xde, 0x86, 0xe2, 0xee, - 0x49, 0x14, 0x78, 0x22, 0xbf, 0xc9, 0x55, 0xe4, 0xb7, 0xb2, 0xd5, 0x3f, 0x4a, 0x41, 0x75, 0xf6, - 0x7e, 0x09, 0x9d, 0x02, 0xf3, 0x67, 0x6a, 0xf9, 0x74, 0x58, 0x35, 0x07, 0xb3, 0x37, 0xd3, 0x57, - 0xe5, 0x37, 0xd3, 0xef, 0x8a, 0xcc, 0xd2, 0xf2, 0x1e, 0x1d, 0x97, 0x25, 0xee, 0x7c, 0x3f, 0x81, - 0x32, 0xfe, 0xd7, 0xac, 0x91, 0xe5, 0xfb, 0x56, 0xf4, 0x62, 0xef, 0x02, 0x71, 0x82, 0x88, 0xec, - 0x2c, 0x6b, 0x24, 0xd4, 0xbd, 0xa5, 0x4f, 0xac, 0xd0, 0xd3, 0x3f, 0xff, 0x3d, 0x0d, 0x25, 0x49, - 0x97, 0xfb, 0x5a, 0xd3, 0xef, 0x26, 0x14, 0x67, 0x0f, 0x7e, 0x88, 0x8b, 0xb6, 0x31, 0x20, 0x31, - 0x56, 0xe9, 0xb9, 0xb1, 0xaa, 0x41, 0x5e, 0xc4, 0xb3, 0x0a, 0x07, 0x6c, 0x94, 0x4c, 0xba, 0x3a, - 0xb3, 0xaf, 0x39, 0x93, 0x78, 0x1f, 0xca, 0x92, 0x9f, 0x32, 0x10, 0x97, 0x51, 0xe7, 0xe9, 0x4b, - 0x33, 0x9f, 0x65, 0xc0, 0x2e, 0x43, 0x6e, 0x74, 0xa2, 0x9b, 0x03, 0x7e, 0x03, 0xb1, 0xa8, 0x65, - 0x47, 0x27, 0x3b, 0x03, 0x3a, 0xb1, 0x19, 0xc5, 0xea, 0x0b, 0xf7, 0x1e, 0x15, 0x46, 0x91, 0x92, - 0xf2, 0x00, 0xf2, 0xa3, 0x13, 0xf9, 0x26, 0xe1, 0x42, 0x97, 0xe7, 0x46, 0x27, 0x74, 0xf5, 0xf0, - 0x11, 0x6c, 0x88, 0x7d, 0xda, 0x08, 0x74, 0xfe, 0xa6, 0x01, 0x3d, 0x04, 0xc3, 0x5f, 0xe8, 0x5a, - 0xe7, 0xb8, 0x7a, 0xd0, 0x23, 0x0c, 0xce, 0x38, 0x15, 0xca, 0xd2, 0x04, 0xe4, 0x2f, 0xe6, 0x14, - 0xb5, 0x04, 0x8c, 0x3d, 0x85, 0xf2, 0xe8, 0x84, 0x0f, 0x68, 0xdf, 0xdb, 0xb7, 0x44, 0x44, 0xfe, - 0xc6, 0xfc, 0x50, 0xd2, 0x31, 0x7d, 0x82, 0x92, 0x5d, 0x81, 0x9c, 0x66, 0x9c, 0xf6, 0x7e, 0xdc, - 0x26, 0x45, 0xae, 0xa8, 0x89, 0xd4, 0x8f, 0x32, 0x85, 0xaa, 0xb2, 0xa6, 0xfe, 0xd3, 0x14, 0x54, - 0x67, 0x7a, 0x38, 0x2e, 0x42, 0xf6, 0x50, 0x7e, 0x5f, 0xba, 0x36, 0xaf, 0xaa, 0x23, 0xc9, 0x56, - 0xff, 0x7c, 0xc2, 0x5f, 0x61, 0x5c, 0xf6, 0xca, 0xd1, 0x32, 0xc7, 0x71, 0x7a, 0xe9, 0xcb, 0xb6, - 0xcf, 0x20, 0xdd, 0x3f, 0x9f, 0x70, 0x9f, 0x0f, 0x6e, 0x7a, 0xdc, 0x3e, 0xe4, 0xdb, 0x1d, 0xc5, - 0x81, 0x3c, 0x6f, 0x7e, 0xc6, 0x1f, 0x06, 0x38, 0xd0, 0x5a, 0xfb, 0x75, 0xed, 0x33, 0x0a, 0xf1, - 0x21, 0xb5, 0x60, 0xb7, 0xab, 0x35, 0x5b, 0xcf, 0x3a, 0x04, 0xc8, 0x90, 0x47, 0x68, 0x56, 0xc5, - 0xba, 0x69, 0xee, 0x9e, 0xc8, 0x0f, 0xc4, 0xa4, 0x12, 0x0f, 0xc4, 0x24, 0xef, 0x12, 0xaf, 0xce, - 0xdf, 0x25, 0x66, 0xf1, 0x2a, 0x8c, 0x97, 0x34, 0x7b, 0x0b, 0x32, 0xa3, 0x13, 0xeb, 0x3c, 0x69, - 0x6c, 0x25, 0x17, 0x10, 0x11, 0xa8, 0x3f, 0x4f, 0x01, 0x4b, 0x54, 0x84, 0xeb, 0xff, 0xdf, 0xb6, - 0x2e, 0x1f, 0x43, 0x4d, 0x3c, 0x59, 0xc8, 0xa9, 0x24, 0x4f, 0xb5, 0xe8, 0xd2, 0xcb, 0xde, 0x2c, - 0xe6, 0x72, 0xf6, 0x10, 0x13, 0x7b, 0x04, 0xfc, 0xcd, 0x38, 0x8a, 0xea, 0xc8, 0x5c, 0x60, 0xab, - 0x69, 0x33, 0x9a, 0xd9, 0x23, 0x71, 0xf2, 0xe3, 0x77, 0xdc, 0xc9, 0xbd, 0x36, 0x1b, 0x35, 0x5a, - 0xf3, 0xea, 0xef, 0xa6, 0xe0, 0x52, 0x72, 0x42, 0xfc, 0x62, 0xad, 0x4c, 0xbe, 0xf4, 0x97, 0x9e, - 0x7f, 0xe9, 0x6f, 0xd9, 0x7c, 0xca, 0x2c, 0x9d, 0x4f, 0xbf, 0x95, 0x82, 0x0d, 0xa9, 0xf7, 0x67, - 0x16, 0xdb, 0x9f, 0x53, 0xcd, 0xa4, 0x07, 0xff, 0x32, 0x89, 0x07, 0xff, 0xd4, 0x3f, 0x48, 0xc1, - 0x95, 0xb9, 0x9a, 0x68, 0xd6, 0x9f, 0x6b, 0x5d, 0x92, 0x0f, 0x03, 0x92, 0xa3, 0x9d, 0x07, 0x9e, - 0xf2, 0x4b, 0xa8, 0x2c, 0xf9, 0xd2, 0x1f, 0x5d, 0xf9, 0xfe, 0x00, 0xd6, 0x67, 0x75, 0x6c, 0x88, - 0x47, 0x0c, 0x6f, 0x43, 0xc9, 0xb5, 0x4e, 0xf5, 0xe8, 0x89, 0x43, 0x11, 0xc7, 0xe3, 0x5a, 0xa7, - 0x82, 0x40, 0xdd, 0x95, 0x05, 0x46, 0xfc, 0xde, 0xb9, 0x63, 0x26, 0x02, 0x42, 0x3c, 0xc7, 0x8c, - 0x50, 0x98, 0x9b, 0xd4, 0xa2, 0xbc, 0x6b, 0x9d, 0xd2, 0x60, 0x9d, 0x8a, 0x7c, 0xea, 0xa6, 0x29, - 0x0e, 0xc5, 0x97, 0xbd, 0x5b, 0x74, 0x0d, 0x0a, 0x13, 0x3f, 0xd1, 0x25, 0xf9, 0x89, 0xcf, 0x8b, - 0xbd, 0x27, 0xa2, 0x84, 0x2e, 0x3a, 0x40, 0xe7, 0x71, 0x43, 0xe2, 0xf7, 0x10, 0x32, 0xb3, 0xdf, - 0x43, 0xf8, 0x50, 0xc8, 0x0a, 0x9c, 0xb8, 0xa2, 0x64, 0x05, 0xd2, 0xb6, 0x79, 0x46, 0x05, 0x57, - 0x34, 0xfc, 0x24, 0x75, 0xc7, 0xfa, 0x42, 0x04, 0x2a, 0xe1, 0xa7, 0xba, 0x0d, 0x25, 0x2d, 0x61, - 0x8d, 0x95, 0x25, 0xc7, 0x46, 0x90, 0x7c, 0xda, 0x65, 0xd6, 0x41, 0x5a, 0x69, 0xe6, 0xd7, 0x08, - 0xd4, 0x40, 0x48, 0x87, 0x17, 0x86, 0x3f, 0x3c, 0x36, 0xfc, 0xb6, 0xe5, 0x1e, 0x85, 0xc7, 0xd8, - 0xe5, 0xdc, 0xdf, 0x28, 0x77, 0x21, 0x70, 0x50, 0x34, 0xf4, 0xd8, 0x8b, 0x0e, 0x91, 0x47, 0x2f, - 0xad, 0xbb, 0xd6, 0xa9, 0xe0, 0x7f, 0x03, 0x00, 0xfb, 0x5f, 0xa0, 0xf9, 0x29, 0x57, 0xd1, 0x73, - 0x4c, 0x8e, 0x56, 0xd7, 0x45, 0x7b, 0xc5, 0x45, 0x92, 0x1d, 0x6b, 0xa4, 0x3a, 0x62, 0xe4, 0x79, - 0x83, 0x44, 0x27, 0x7c, 0xab, 0x61, 0x64, 0x77, 0xa0, 0x1c, 0x99, 0xce, 0xf4, 0x9a, 0x10, 0x2f, - 0xbe, 0x14, 0xc1, 0x3a, 0xd3, 0xb1, 0xfa, 0x7b, 0x69, 0x28, 0xd7, 0x79, 0xc8, 0xc8, 0xe4, 0xbc, - 0x3b, 0x09, 0xd9, 0xaf, 0xc3, 0xe5, 0xe0, 0xc4, 0x9e, 0x88, 0xa7, 0xd1, 0x29, 0x52, 0x83, 0xa2, - 0x72, 0x45, 0x27, 0x3e, 0x94, 0x3a, 0x51, 0xb0, 0x6c, 0xf5, 0x4e, 0xec, 0x09, 0x0f, 0x06, 0x6f, - 0x99, 0x67, 0x14, 0x79, 0xcd, 0x8f, 0x9f, 0x59, 0xb0, 0x80, 0xa0, 0x3b, 0xb2, 0x98, 0xfd, 0xe4, - 0x44, 0x64, 0x2b, 0xce, 0xe3, 0x11, 0x78, 0x70, 0xc2, 0x69, 0x1e, 0xc2, 0x3a, 0xbf, 0xff, 0xb1, - 0xb8, 0x4b, 0xad, 0x71, 0xc4, 0x6c, 0x7e, 0xf7, 0x60, 0x9d, 0xf2, 0x13, 0x4f, 0xd6, 0xe9, 0x43, - 0x6f, 0x72, 0x2e, 0x4e, 0xb7, 0xde, 0xba, 0xa0, 0xaa, 0x2d, 0x4e, 0x8a, 0x20, 0xf1, 0xdc, 0x45, - 0x90, 0x84, 0x5e, 0x6f, 0xc2, 0xd5, 0x0b, 0xda, 0xf4, 0xba, 0x13, 0xf4, 0x82, 0x74, 0x82, 0x7e, - 0x7d, 0x1b, 0x36, 0x96, 0x95, 0xf7, 0x4d, 0xf2, 0x50, 0x7f, 0xbf, 0x0c, 0x30, 0x9b, 0xb1, 0x09, - 0x9d, 0x2d, 0x35, 0xa7, 0xb3, 0x7d, 0xa3, 0x68, 0x91, 0x0f, 0xa0, 0x8a, 0x5d, 0xa5, 0xcf, 0x38, - 0xd2, 0x4b, 0x39, 0xca, 0x48, 0xd5, 0x9f, 0x5d, 0xbc, 0x5b, 0x3c, 0x75, 0xcf, 0x2c, 0x3d, 0x75, - 0x7f, 0x1f, 0xf2, 0xfc, 0x44, 0x28, 0x10, 0x77, 0x3d, 0xaf, 0xce, 0xaf, 0xbe, 0x2d, 0x11, 0x58, - 0x1e, 0xd1, 0xb1, 0x26, 0x54, 0x51, 0x3e, 0xfa, 0x76, 0x78, 0x3c, 0x96, 0x6f, 0x7e, 0xde, 0x5a, - 0xe4, 0x8c, 0xc8, 0xf8, 0x43, 0x77, 0x86, 0x9c, 0x94, 0x54, 0xbc, 0x70, 0x2c, 0xdc, 0x94, 0xa4, - 0xe2, 0xe5, 0x65, 0x15, 0xaf, 0x3f, 0xe6, 0xce, 0x49, 0x54, 0xf1, 0xde, 0x85, 0x4b, 0xe2, 0xb2, - 0x0b, 0x32, 0x60, 0x77, 0x12, 0x3d, 0x0f, 0x0c, 0x14, 0xaf, 0xc0, 0xf4, 0xc7, 0x64, 0x00, 0x21, - 0xf9, 0xa7, 0xb0, 0x31, 0x3c, 0x36, 0xdc, 0x23, 0x4b, 0x0f, 0x07, 0x8e, 0x4e, 0xcf, 0x6c, 0xeb, - 0x63, 0x63, 0x22, 0x34, 0xcf, 0xb7, 0x16, 0x2a, 0xdb, 0x20, 0xe2, 0xfe, 0xc0, 0xa1, 0xc8, 0xa6, - 0x38, 0x36, 0x63, 0x7d, 0x38, 0x0f, 0x9f, 0x3b, 0x22, 0x85, 0x85, 0x23, 0xd2, 0x79, 0x5d, 0xb4, - 0xb4, 0x44, 0x17, 0x9d, 0x69, 0x94, 0x65, 0x59, 0xa3, 0x64, 0xef, 0x40, 0x5e, 0xdc, 0x20, 0x14, - 0x0e, 0x4a, 0xb6, 0xb8, 0x3a, 0xb4, 0x88, 0x04, 0x4b, 0x8a, 0x0e, 0xec, 0xe9, 0xde, 0x71, 0x95, - 0x97, 0x24, 0xc3, 0xae, 0xff, 0x8f, 0x2c, 0xe4, 0x44, 0xb0, 0xee, 0x43, 0xc8, 0x98, 0xbe, 0x37, - 0x89, 0xa3, 0x5f, 0x97, 0xa8, 0xa5, 0xf4, 0xab, 0x48, 0xa8, 0xc1, 0x6e, 0x41, 0xce, 0x30, 0x4d, - 0x7d, 0x74, 0x92, 0x3c, 0xf4, 0x9c, 0xd3, 0x10, 0xf7, 0x56, 0xb4, 0xac, 0x41, 0xaa, 0xe2, 0xc7, - 0x50, 0x44, 0xfa, 0x59, 0x4c, 0x62, 0x69, 0x51, 0xef, 0x8d, 0x74, 0xb9, 0xbd, 0x15, 0xad, 0x60, - 0x44, 0x7a, 0xdd, 0xf7, 0x93, 0xee, 0x63, 0xae, 0x68, 0x5d, 0x5f, 0x60, 0xbd, 0xc8, 0x91, 0xfc, - 0xab, 0xc0, 0xfd, 0x89, 0xf1, 0x6e, 0x9b, 0x95, 0xcf, 0xd7, 0x16, 0xf6, 0xe6, 0xbd, 0x15, 0x8d, - 0xef, 0x39, 0xd1, 0x5e, 0xfd, 0x61, 0xe4, 0xda, 0x8d, 0x7f, 0x3d, 0x62, 0x49, 0xcf, 0xa0, 0x08, - 0x8b, 0xfd, 0xbb, 0x24, 0xcf, 0x90, 0xcd, 0x34, 0xa3, 0xd0, 0xb4, 0xfc, 0x02, 0x5b, 0xbc, 0x23, - 0x13, 0x5b, 0xbc, 0x3d, 0x3f, 0x85, 0x12, 0xb9, 0x12, 0x05, 0x5f, 0x61, 0xa1, 0x6b, 0x67, 0x1b, - 0x2a, 0x9d, 0x1d, 0xcd, 0xb6, 0xd7, 0x46, 0xd4, 0x4e, 0xdf, 0x92, 0xdd, 0xf3, 0x37, 0x97, 0x76, - 0x94, 0x16, 0x7b, 0xea, 0x79, 0x63, 0x35, 0xce, 0xc3, 0xda, 0xb0, 0x21, 0xfc, 0xd8, 0x7c, 0xf3, - 0x8c, 0xf6, 0x3b, 0x58, 0x18, 0xaf, 0xc4, 0xee, 0xba, 0xb7, 0xa2, 0x31, 0x63, 0x71, 0xcf, 0x6d, - 0xc0, 0x7a, 0x54, 0x25, 0x7e, 0xef, 0x72, 0x16, 0x55, 0x23, 0x37, 0x69, 0xb6, 0x67, 0xee, 0xad, - 0x68, 0x6b, 0x46, 0x12, 0xc4, 0x5a, 0x70, 0x29, 0xca, 0x84, 0xfc, 0xb9, 0xa2, 0x67, 0xca, 0x0b, - 0xa3, 0x28, 0xef, 0xb3, 0x7b, 0x2b, 0xda, 0xba, 0x31, 0x0f, 0x9c, 0x9d, 0x6e, 0x5f, 0xd7, 0xe0, - 0xca, 0xf2, 0xe5, 0x2c, 0xcb, 0xf4, 0x0c, 0x97, 0xe9, 0x6a, 0xf2, 0x35, 0xa2, 0xe4, 0xa5, 0x7d, - 0x49, 0xc2, 0xff, 0x10, 0x2a, 0x09, 0x79, 0xc6, 0x4a, 0x90, 0x8f, 0xde, 0x2d, 0xa6, 0x88, 0xfa, - 0x46, 0xf7, 0xe0, 0x33, 0x25, 0x85, 0xe0, 0x56, 0xa7, 0xd7, 0xaf, 0x77, 0x44, 0xec, 0x42, 0xab, - 0x23, 0x62, 0x17, 0xd4, 0xbf, 0x91, 0x86, 0x62, 0x7c, 0xf6, 0xf2, 0xed, 0xfd, 0x33, 0xb1, 0xe3, - 0x23, 0x2d, 0x3b, 0x3e, 0xe6, 0x8c, 0x0f, 0xfe, 0xc4, 0x38, 0x7f, 0xa5, 0x6a, 0x2d, 0xa9, 0xe2, - 0x07, 0x8b, 0x17, 0x77, 0xb3, 0x5f, 0xf3, 0xe2, 0xae, 0x1c, 0x47, 0x9c, 0x4b, 0xc6, 0x11, 0xcf, - 0xbd, 0x5d, 0x9d, 0xa7, 0x57, 0x65, 0xe5, 0xb7, 0xab, 0xe9, 0x07, 0xe6, 0x5e, 0xd8, 0xd6, 0xa9, - 0x08, 0xbc, 0x15, 0xa9, 0xe4, 0x76, 0x08, 0xaf, 0xd9, 0x0e, 0xbf, 0x8e, 0x68, 0x7d, 0x0c, 0x1b, - 0xa3, 0x93, 0xf8, 0x2d, 0xdb, 0x99, 0xb9, 0x5f, 0xa6, 0x2a, 0x2d, 0xc5, 0xa9, 0x7f, 0x2d, 0x05, - 0x30, 0x3b, 0x6c, 0xf8, 0x85, 0x7d, 0x86, 0x92, 0x5b, 0x26, 0xfd, 0x15, 0x6e, 0x99, 0xd7, 0xbd, - 0x48, 0xf4, 0x05, 0x14, 0xe3, 0xe3, 0xa5, 0x6f, 0x3f, 0x5f, 0xbe, 0x51, 0x91, 0xbf, 0x11, 0xf9, - 0x4f, 0xe3, 0xf3, 0x99, 0x5f, 0xb4, 0x2f, 0x12, 0xc5, 0xa7, 0x5f, 0x53, 0xfc, 0x19, 0x77, 0x62, - 0xc6, 0x85, 0xff, 0x92, 0x17, 0x89, 0x3c, 0x7f, 0x33, 0x89, 0xf9, 0xab, 0x4e, 0x85, 0x27, 0xf6, - 0x17, 0x2f, 0xfa, 0x1b, 0x35, 0xf8, 0xbf, 0xa5, 0x22, 0x77, 0x61, 0xfc, 0xaa, 0xf0, 0x85, 0x8a, - 0xe3, 0x72, 0x8f, 0xe7, 0x37, 0x29, 0xee, 0x2b, 0x9d, 0x21, 0x99, 0xaf, 0x72, 0x86, 0xbc, 0x05, - 0x59, 0xbe, 0xed, 0x64, 0x2f, 0x72, 0x84, 0x70, 0xfc, 0x6b, 0xdf, 0xfe, 0x57, 0x55, 0xa1, 0x28, - 0xf3, 0xf6, 0x6e, 0x44, 0xf9, 0x46, 0xbf, 0x5b, 0x40, 0xd7, 0x17, 0xfe, 0x3f, 0x2e, 0x28, 0xbf, - 0x6d, 0x97, 0x7c, 0xb5, 0x99, 0xaf, 0xfe, 0xef, 0x14, 0x54, 0x12, 0xc7, 0xc5, 0xdf, 0xa2, 0x88, - 0xa5, 0xe2, 0x36, 0xfd, 0x7f, 0x91, 0xb8, 0x4d, 0x44, 0x5a, 0x16, 0x92, 0x91, 0x96, 0x28, 0xee, - 0xca, 0x09, 0x33, 0x60, 0x99, 0xc1, 0x90, 0x5a, 0x6a, 0x30, 0xdc, 0x8a, 0x7f, 0xb1, 0xac, 0xb5, - 0xc3, 0x03, 0x1b, 0x2b, 0x9a, 0x04, 0x61, 0x9f, 0xc0, 0x35, 0x61, 0x88, 0xf3, 0xfe, 0xf1, 0x46, - 0x7a, 0xfc, 0x7b, 0x66, 0xc2, 0xb0, 0xbd, 0xc2, 0x09, 0xf8, 0x2f, 0x37, 0x8c, 0xea, 0x11, 0x56, - 0x6d, 0x41, 0x25, 0x71, 0x0e, 0x2f, 0xfd, 0x7e, 0x62, 0x4a, 0xfe, 0xfd, 0x44, 0xb6, 0x09, 0xd9, - 0xd3, 0x63, 0xcb, 0xb7, 0x96, 0xbc, 0x3a, 0xca, 0x11, 0xea, 0xf7, 0xa0, 0x2c, 0xc7, 0x04, 0xb1, - 0x77, 0x20, 0x6b, 0x87, 0xd6, 0x38, 0x72, 0x31, 0x5c, 0x59, 0x0c, 0x1b, 0x6a, 0x85, 0xd6, 0x58, - 0xe3, 0x44, 0xea, 0xcf, 0x52, 0xa0, 0xcc, 0xe3, 0xa4, 0x1f, 0x79, 0x4c, 0x5d, 0xf0, 0x23, 0x8f, - 0xab, 0x89, 0x4a, 0x2e, 0xfb, 0x9d, 0xc6, 0xf8, 0xe5, 0xc3, 0xcc, 0x05, 0x2f, 0x1f, 0xb2, 0xfb, - 0x50, 0xf0, 0x2d, 0xfa, 0x05, 0x3d, 0x73, 0x49, 0x58, 0x7f, 0x8c, 0x53, 0x7f, 0x3b, 0x05, 0x79, - 0x11, 0xc0, 0xb4, 0xd4, 0xe7, 0xf3, 0x1d, 0xc8, 0xf3, 0x5f, 0xd3, 0x8b, 0x1e, 0x23, 0x5a, 0x88, - 0x06, 0x8e, 0xf0, 0xec, 0x16, 0x0f, 0xeb, 0x4a, 0xfa, 0x80, 0x0e, 0x1c, 0xc3, 0xd5, 0x08, 0x2e, - 0x7e, 0x90, 0xc5, 0x18, 0x8b, 0x4b, 0xc1, 0xfc, 0xc9, 0x20, 0x20, 0x10, 0xdd, 0xff, 0x55, 0xbf, - 0x0f, 0x79, 0x11, 0x20, 0xb5, 0xb4, 0x2a, 0xaf, 0xfb, 0x25, 0xb5, 0x4d, 0x80, 0x59, 0xc4, 0xd4, - 0xb2, 0x1c, 0xd4, 0x87, 0x50, 0x88, 0x82, 0xa4, 0x70, 0xfe, 0xcd, 0x8a, 0x16, 0xf7, 0x45, 0xe4, - 0xca, 0x38, 0xe2, 0x25, 0xef, 0xb6, 0x37, 0x3c, 0x21, 0xaf, 0xec, 0x23, 0xa0, 0xcb, 0x33, 0xfd, - 0x85, 0xb7, 0x95, 0x92, 0xcf, 0xb0, 0xc7, 0x44, 0xec, 0x21, 0xc4, 0xf2, 0xf2, 0x75, 0xe6, 0xb9, - 0x5a, 0x8f, 0xae, 0x59, 0xd1, 0x2c, 0x7b, 0x22, 0xbc, 0x8f, 0x6d, 0x7a, 0xf6, 0x2c, 0x25, 0x3f, - 0xc6, 0x9f, 0xa8, 0x93, 0x26, 0x91, 0xa9, 0x55, 0x28, 0xcb, 0x91, 0x1d, 0x6a, 0x1d, 0xd6, 0xf7, - 0xad, 0xd0, 0x40, 0xf9, 0x13, 0xbd, 0x38, 0xc3, 0xe7, 0x2f, 0x7e, 0x24, 0xe7, 0xef, 0x3c, 0x9d, - 0xc6, 0x89, 0xd4, 0x9f, 0x65, 0x40, 0x99, 0xc7, 0x7d, 0xd5, 0x95, 0xb3, 0xdb, 0x50, 0xf2, 0x68, - 0x5e, 0x24, 0x7e, 0x72, 0x87, 0x83, 0xa4, 0xb0, 0xed, 0xc4, 0xef, 0x2e, 0x14, 0xec, 0x60, 0x8f, - 0xff, 0xf2, 0xc2, 0x55, 0x7e, 0xbf, 0xc8, 0xf1, 0x86, 0x34, 0xad, 0xcb, 0x74, 0x9d, 0xa8, 0xed, - 0x0d, 0xe9, 0x26, 0x9b, 0xb0, 0xf0, 0x79, 0xb8, 0x61, 0x59, 0x2b, 0x08, 0xb3, 0x9e, 0x0e, 0x8a, - 0x44, 0x30, 0x77, 0x18, 0x88, 0xbb, 0x81, 0x05, 0x0e, 0xe8, 0x07, 0xd1, 0x7b, 0xd1, 0x43, 0xf1, - 0xfb, 0x30, 0x69, 0x7a, 0x2f, 0xba, 0xe1, 0xd2, 0x45, 0x36, 0xfa, 0x39, 0xa3, 0xa1, 0xf8, 0xb9, - 0x29, 0xf1, 0x62, 0x37, 0xa2, 0xee, 0xf2, 0x5f, 0xd0, 0xf1, 0xad, 0x20, 0xe0, 0xaf, 0x7e, 0x15, - 0xc5, 0xb3, 0x67, 0x02, 0x18, 0x3f, 0x2e, 0x28, 0x7e, 0xbf, 0x08, 0x49, 0x40, 0x3c, 0x2e, 0xc8, - 0x7f, 0xbd, 0x08, 0x09, 0xae, 0x41, 0xe1, 0x4b, 0xcf, 0xb5, 0xc8, 0x53, 0x50, 0xa2, 0x5a, 0xe5, - 0x31, 0xbd, 0x6f, 0x4c, 0xd4, 0x7f, 0x9e, 0x82, 0x8d, 0xf9, 0x5e, 0xa5, 0x09, 0x53, 0x86, 0x42, - 0xa3, 0xdb, 0xd6, 0x3b, 0xf5, 0xfd, 0xa6, 0xb2, 0xc2, 0xd6, 0xa0, 0xd4, 0xdd, 0xfe, 0x51, 0xb3, - 0xd1, 0xe7, 0x80, 0x14, 0x5d, 0xe8, 0xee, 0xe9, 0x7b, 0xad, 0x9d, 0x9d, 0x66, 0x87, 0x9b, 0x04, - 0xdd, 0xed, 0x1f, 0xe9, 0xed, 0x6e, 0x83, 0xff, 0xdc, 0x49, 0x74, 0x4c, 0xde, 0x53, 0x32, 0x74, - 0x88, 0x4e, 0xd1, 0xcd, 0x98, 0xcc, 0xf2, 0xe0, 0xdd, 0x97, 0x3d, 0xbd, 0xd1, 0xe9, 0x2b, 0x39, - 0x4c, 0x75, 0x0e, 0xdb, 0x6d, 0x4a, 0x51, 0x94, 0x5e, 0xa3, 0xbb, 0x7f, 0xa0, 0x35, 0x7b, 0x3d, - 0xbd, 0xd7, 0xfa, 0x49, 0x53, 0x29, 0x50, 0xc9, 0x5a, 0xeb, 0x59, 0xab, 0xc3, 0x01, 0x45, 0x96, - 0x87, 0xf4, 0x7e, 0xab, 0xc3, 0x2f, 0xb2, 0xef, 0xd7, 0x3f, 0x55, 0x4a, 0xf8, 0xd1, 0x3b, 0xdc, - 0x57, 0xca, 0xea, 0x7f, 0x4c, 0x47, 0x0a, 0x2f, 0xc5, 0xac, 0x7c, 0x1d, 0x25, 0x6f, 0xd9, 0x39, - 0xd5, 0x06, 0x64, 0x1d, 0xba, 0x9a, 0x2b, 0x7e, 0xc9, 0x95, 0x12, 0x5f, 0xe7, 0xd7, 0x29, 0xef, - 0x42, 0x25, 0x3e, 0x64, 0x96, 0x9e, 0x70, 0x2e, 0x47, 0xc0, 0x25, 0xde, 0xfc, 0xdc, 0x12, 0x6f, - 0xfe, 0xc4, 0x0e, 0xd1, 0x98, 0x45, 0x91, 0xca, 0x27, 0x4a, 0x11, 0x21, 0xfc, 0x77, 0x61, 0x6f, - 0x00, 0x25, 0xf4, 0xa9, 0x6b, 0x47, 0xbf, 0x4d, 0x56, 0x40, 0xc0, 0xa1, 0x6b, 0x87, 0xf3, 0x87, - 0xdc, 0xc5, 0x85, 0x43, 0x6e, 0x79, 0xef, 0x85, 0xe4, 0xde, 0x9b, 0xfc, 0xd1, 0x4e, 0xfe, 0xa3, - 0x64, 0xd2, 0x8f, 0x76, 0xbe, 0x03, 0x6c, 0x38, 0xf5, 0xe9, 0x31, 0x2b, 0x89, 0xac, 0x4c, 0x64, - 0x8a, 0xc0, 0xc4, 0x9b, 0x1e, 0x7b, 0x0b, 0xd6, 0xe6, 0xa8, 0xc9, 0xf1, 0x53, 0xd4, 0xaa, 0x49, - 0x52, 0xb6, 0x05, 0x97, 0xc4, 0xd4, 0x4d, 0xf4, 0xad, 0xb8, 0xf6, 0xc7, 0x51, 0xf5, 0x59, 0x0f, - 0xab, 0xbf, 0x02, 0x85, 0x28, 0x3c, 0xe9, 0xab, 0x75, 0xd9, 0x25, 0xe3, 0xaa, 0xfe, 0xed, 0x55, - 0x80, 0x59, 0xac, 0x12, 0x7b, 0x77, 0x2e, 0x72, 0x31, 0xb5, 0xb0, 0x55, 0xcc, 0x05, 0x2c, 0xce, - 0xbd, 0xc0, 0xb1, 0xfa, 0x35, 0x5e, 0xe0, 0x78, 0x0c, 0x95, 0xc0, 0x1f, 0xbe, 0xd6, 0xd1, 0x59, - 0x0a, 0xfc, 0x61, 0xec, 0xe7, 0x7c, 0x04, 0x98, 0xa4, 0x37, 0xc3, 0x66, 0xc6, 0xcd, 0xc2, 0x4e, - 0x57, 0x0c, 0xfc, 0x61, 0x77, 0xf0, 0xf9, 0x0e, 0xbf, 0xfd, 0x62, 0x06, 0xa1, 0xbe, 0x6c, 0xea, - 0xad, 0x99, 0x41, 0xb8, 0x23, 0xcf, 0xbe, 0x7b, 0x50, 0x45, 0xda, 0x85, 0x19, 0x58, 0x36, 0x83, - 0x99, 0x63, 0x5b, 0xfd, 0x4b, 0xd1, 0x79, 0x59, 0x7c, 0xcb, 0x51, 0x04, 0x7b, 0x7c, 0x24, 0x8c, - 0x37, 0x69, 0xe3, 0x91, 0x1d, 0x2c, 0x31, 0x39, 0x7f, 0x2f, 0x24, 0x26, 0x5d, 0xfc, 0x8d, 0xa2, - 0xd5, 0xaf, 0xfb, 0x1b, 0x45, 0x9b, 0x00, 0xb3, 0x57, 0xdb, 0x70, 0x58, 0xe3, 0x68, 0xfe, 0x22, - 0x8f, 0xd3, 0x7f, 0x78, 0x07, 0xca, 0xf2, 0x2f, 0x05, 0x52, 0x94, 0xbe, 0xe7, 0x5a, 0xfc, 0x2d, - 0xf9, 0xf6, 0x97, 0x1f, 0x28, 0xa9, 0x87, 0x2a, 0x94, 0xa4, 0x5f, 0x72, 0x40, 0x8a, 0x3d, 0x23, - 0x38, 0x16, 0xef, 0x8a, 0x1b, 0xee, 0x91, 0xa5, 0xa4, 0x1e, 0xde, 0x47, 0x45, 0x4d, 0xfe, 0x1d, - 0x05, 0x80, 0x5c, 0xc7, 0xf3, 0xc7, 0x86, 0x23, 0xe8, 0xac, 0x69, 0x80, 0x74, 0x8f, 0xe0, 0xf2, - 0xd2, 0x5f, 0x85, 0xa0, 0xab, 0x1e, 0xf6, 0x78, 0xe2, 0x58, 0xfc, 0xb6, 0xc2, 0xde, 0xf9, 0xc0, - 0xb7, 0x4d, 0x25, 0xf5, 0xf0, 0x69, 0x74, 0x49, 0x3a, 0x2a, 0xbb, 0xdd, 0xad, 0xef, 0x70, 0x99, - 0x1a, 0x3f, 0xd6, 0xd1, 0xdf, 0xe6, 0x6f, 0x86, 0x6b, 0xcd, 0xde, 0x61, 0xbb, 0x2f, 0x1e, 0x06, - 0x79, 0xf8, 0x43, 0xa8, 0x5d, 0x14, 0xb6, 0x8f, 0x35, 0x6a, 0xec, 0xd5, 0xe9, 0x6a, 0x04, 0xca, - 0xd0, 0xae, 0xce, 0x53, 0x29, 0x7e, 0xb3, 0xa4, 0xdd, 0xa4, 0xc8, 0xb9, 0x87, 0x3f, 0x4d, 0x49, - 0x9a, 0x43, 0x14, 0x7a, 0x1d, 0x03, 0x44, 0x37, 0xc9, 0x20, 0xcd, 0x32, 0x4c, 0x25, 0xc5, 0xae, - 0x00, 0x4b, 0x80, 0xda, 0xde, 0xd0, 0x70, 0x94, 0x55, 0x8a, 0x91, 0x8b, 0xe0, 0x74, 0xb9, 0x46, - 0x49, 0xb3, 0x37, 0xe0, 0x5a, 0x0c, 0x6b, 0x7b, 0xa7, 0x07, 0xbe, 0xed, 0xf9, 0x76, 0x78, 0xce, - 0xd1, 0x99, 0x87, 0xff, 0xbf, 0x38, 0xda, 0x4a, 0xcc, 0x0d, 0x2c, 0xa0, 0x6e, 0x9a, 0x33, 0x18, - 0xa9, 0x09, 0xca, 0x0a, 0xbb, 0x0a, 0x97, 0x68, 0x81, 0xcf, 0x21, 0x52, 0xec, 0x06, 0x5c, 0x8d, - 0xcc, 0x9b, 0x79, 0xe4, 0x2a, 0x22, 0x35, 0x8b, 0xa2, 0xaf, 0x16, 0x90, 0xe9, 0xed, 0x1f, 0xfc, - 0xf1, 0xcf, 0x6f, 0xa5, 0xfe, 0xf5, 0xcf, 0x6f, 0xa5, 0xfe, 0xd3, 0xcf, 0x6f, 0xad, 0xfc, 0xec, - 0x3f, 0xdf, 0x4a, 0xfd, 0xe4, 0xdd, 0x23, 0x3b, 0x3c, 0x9e, 0x0e, 0xb6, 0x86, 0xde, 0xf8, 0xd1, - 0xd8, 0x08, 0x7d, 0xfb, 0x8c, 0x4b, 0x9a, 0x28, 0xe1, 0x5a, 0x8f, 0x26, 0x27, 0x47, 0x8f, 0x26, - 0x83, 0x47, 0x38, 0x3d, 0x07, 0xb9, 0x89, 0xef, 0x85, 0xde, 0x93, 0xff, 0x13, 0x00, 0x00, 0xff, - 0xff, 0x76, 0x81, 0xa4, 0xb9, 0xb3, 0x81, 0x00, 0x00, + 0x7d, 0x0a, 0x15, 0xd3, 0x32, 0xa7, 0x13, 0xd2, 0xe3, 0x68, 0x8a, 0x7e, 0x4f, 0x16, 0x7e, 0xb2, + 0x83, 0x4f, 0x2b, 0x9b, 0xb2, 0xbb, 0xef, 0x63, 0x58, 0x8f, 0x3c, 0x71, 0xa1, 0x70, 0xda, 0x7d, + 0x5f, 0x2e, 0x36, 0x76, 0xb4, 0x69, 0x6b, 0xd3, 0xe8, 0x93, 0x8a, 0x7c, 0x02, 0x6b, 0xb4, 0xb7, + 0x07, 0xae, 0x31, 0x09, 0x8e, 0xbd, 0xb0, 0xfa, 0xab, 0xb2, 0x9a, 0xd2, 0x13, 0x50, 0xad, 0x8c, + 0x44, 0x51, 0x0a, 0xb7, 0xa4, 0xd9, 0x3a, 0x1d, 0x86, 0x56, 0xf5, 0x07, 0x7c, 0x4b, 0x8a, 0x81, + 0xf5, 0xd0, 0x62, 0x4f, 0x00, 0x8c, 0xc9, 0xc4, 0x39, 0xe7, 0x53, 0xf3, 0x87, 0x34, 0x35, 0x37, + 0xa5, 0xa9, 0x59, 0x43, 0x24, 0xcd, 0xcd, 0xa2, 0x11, 0x7d, 0xb2, 0xc7, 0x50, 0x9e, 0x78, 0x41, + 0xa8, 0x9b, 0x63, 0x87, 0xda, 0x5f, 0x93, 0xd7, 0xf6, 0x81, 0x17, 0x84, 0x8d, 0xb1, 0x43, 0x1b, + 0xd3, 0x24, 0xfe, 0x66, 0x6d, 0xb8, 0x94, 0x90, 0xdb, 0x06, 0x1d, 0x4a, 0x57, 0x77, 0xa8, 0xc4, + 0x9b, 0x52, 0x89, 0x92, 0xfc, 0x16, 0x11, 0x59, 0x1b, 0xde, 0x3c, 0x88, 0x0c, 0x22, 0x1a, 0x83, + 0x38, 0x2c, 0xb1, 0xce, 0x15, 0x16, 0x82, 0x46, 0x71, 0x89, 0x4f, 0x61, 0x7d, 0x46, 0x85, 0x0d, + 0x0c, 0xaa, 0x0d, 0x79, 0x26, 0x4b, 0xc1, 0xc3, 0x6b, 0x11, 0x23, 0xc2, 0x02, 0xea, 0x3b, 0xcf, + 0x71, 0xa6, 0x13, 0x21, 0x4a, 0xab, 0x4d, 0xd1, 0x77, 0x04, 0xe4, 0x52, 0x12, 0xf5, 0x1b, 0x11, + 0x39, 0xfa, 0xca, 0xb6, 0x4e, 0x83, 0xea, 0x33, 0x72, 0xa0, 0x8b, 0x68, 0xd8, 0x17, 0x08, 0x22, + 0x5f, 0x96, 0xed, 0xa3, 0xed, 0x41, 0xd1, 0x42, 0x7b, 0xc2, 0x97, 0x45, 0x20, 0xa4, 0x50, 0xff, + 0x79, 0x16, 0x0a, 0x91, 0x31, 0xc4, 0x4a, 0x90, 0x3f, 0xec, 0x3c, 0xef, 0x74, 0x5f, 0x76, 0xf8, + 0x5d, 0xa9, 0x5a, 0xaf, 0xd7, 0xd4, 0xfa, 0x8a, 0xc9, 0x2a, 0x00, 0x74, 0x1b, 0x42, 0xef, 0xd5, + 0x6b, 0x1d, 0x7e, 0x77, 0x8a, 0xee, 0x60, 0xf0, 0xf4, 0x2a, 0xdb, 0x80, 0xb5, 0xdd, 0xc3, 0x0e, + 0x45, 0x98, 0x71, 0x50, 0x1a, 0x41, 0xcd, 0x4f, 0xf9, 0xb9, 0x1a, 0x07, 0x65, 0x10, 0xb4, 0x5f, + 0xeb, 0x37, 0xb5, 0x56, 0x04, 0xca, 0x52, 0xb0, 0x5a, 0xf7, 0x50, 0xab, 0x8b, 0x9c, 0x72, 0xec, + 0x32, 0x6c, 0xc4, 0x6c, 0x51, 0x96, 0x4a, 0x1e, 0x6b, 0x76, 0xa0, 0x75, 0x7f, 0xd4, 0xac, 0xf7, + 0x15, 0xa0, 0x43, 0xba, 0x67, 0xcf, 0x94, 0x12, 0x2b, 0x43, 0xa1, 0xd1, 0xea, 0xf5, 0x5b, 0x9d, + 0x7a, 0x5f, 0x29, 0x63, 0x85, 0x77, 0x5b, 0xed, 0x7e, 0x53, 0x53, 0xd6, 0x58, 0x01, 0x32, 0x3f, + 0xea, 0xb6, 0x3a, 0x4a, 0x85, 0x6e, 0x85, 0xd4, 0xf6, 0x0f, 0xda, 0x4d, 0x65, 0x1d, 0xa1, 0xbd, + 0xae, 0xd6, 0x57, 0x14, 0x84, 0xbe, 0x6c, 0x75, 0x1a, 0xdd, 0x97, 0xca, 0x06, 0x2b, 0x42, 0xf6, + 0xb0, 0x83, 0xc5, 0x30, 0xb6, 0x06, 0x45, 0xfa, 0xd4, 0x6b, 0xed, 0xb6, 0x72, 0x49, 0x3a, 0xd9, + 0xdb, 0x44, 0x14, 0x9d, 0x13, 0xf6, 0xb0, 0x0e, 0x97, 0xb1, 0x2d, 0x71, 0x92, 0xa8, 0xaf, 0x60, + 0x3e, 0xfb, 0xad, 0xce, 0x61, 0x4f, 0xb9, 0x8a, 0xc4, 0xf4, 0x49, 0x98, 0x2a, 0xe6, 0xd3, 0xea, + 0x50, 0x57, 0xde, 0xc2, 0xef, 0x46, 0xb3, 0xdd, 0xec, 0x37, 0x95, 0xdb, 0xd8, 0x2a, 0xad, 0x79, + 0xd0, 0xae, 0xd5, 0x9b, 0xca, 0x16, 0x26, 0xda, 0xdd, 0xfa, 0x73, 0xbd, 0x7b, 0xa0, 0xdc, 0x61, + 0x9b, 0xa0, 0x74, 0x3b, 0x7a, 0xe3, 0xf0, 0xa0, 0xdd, 0xaa, 0xd7, 0xfa, 0x4d, 0xfd, 0x79, 0xf3, + 0x33, 0x45, 0xc5, 0x6e, 0x3f, 0xd0, 0x9a, 0xba, 0xc8, 0xeb, 0x2e, 0x53, 0xa0, 0xbc, 0x7b, 0xf8, + 0x93, 0x9f, 0x7c, 0xa6, 0x8b, 0x76, 0xbf, 0x89, 0xd5, 0x9a, 0x51, 0xe8, 0x87, 0xcf, 0x95, 0xfb, + 0x73, 0xa0, 0xde, 0x73, 0xe5, 0x2d, 0xec, 0xb7, 0x68, 0x20, 0x94, 0x07, 0x48, 0xa0, 0x35, 0xeb, + 0x87, 0x5a, 0xaf, 0xf5, 0xa2, 0xa9, 0xd7, 0xfb, 0x4d, 0xe5, 0x3b, 0xd4, 0x51, 0xad, 0xce, 0x73, + 0xe5, 0x21, 0xb6, 0x04, 0xbf, 0xf8, 0xf0, 0xbc, 0xcd, 0x18, 0x54, 0x66, 0xb4, 0x04, 0x7b, 0x07, + 0x49, 0x76, 0xb4, 0x6e, 0xad, 0x51, 0xaf, 0xf5, 0xfa, 0xca, 0xbb, 0xd8, 0x0d, 0xbd, 0x83, 0x76, + 0xab, 0xaf, 0x6c, 0x63, 0x5b, 0x9f, 0xd5, 0xfa, 0x7b, 0x4d, 0x4d, 0x79, 0x84, 0x23, 0xdd, 0x6f, + 0xed, 0x37, 0x75, 0xd1, 0xed, 0x8f, 0xb1, 0x8c, 0xdd, 0x56, 0xbb, 0xad, 0x3c, 0xa1, 0xc3, 0xab, + 0x9a, 0xd6, 0x6f, 0xd1, 0x58, 0x7f, 0x80, 0x19, 0xd4, 0x0e, 0x0e, 0xda, 0x9f, 0x29, 0x1f, 0x62, + 0x03, 0xf7, 0x0f, 0xdb, 0xfd, 0x96, 0x7e, 0x78, 0xd0, 0xa8, 0xf5, 0x9b, 0xca, 0x47, 0x34, 0x11, + 0xba, 0xbd, 0x7e, 0x63, 0xbf, 0xad, 0x7c, 0x4c, 0x79, 0xd2, 0x34, 0xac, 0xb7, 0xbb, 0x9d, 0xa6, + 0xf2, 0x54, 0xfd, 0x0d, 0x28, 0x44, 0x06, 0x32, 0x66, 0xd3, 0xea, 0x74, 0x9a, 0x9a, 0xb2, 0x82, + 0x45, 0xb5, 0x9b, 0xbb, 0x7d, 0x25, 0x45, 0x27, 0x79, 0xad, 0x67, 0x7b, 0x7d, 0x65, 0x15, 0x3f, + 0xbb, 0x87, 0xd8, 0x6b, 0x69, 0x6a, 0x6e, 0x73, 0xbf, 0xa5, 0x64, 0xf0, 0xab, 0xd6, 0xe9, 0xb7, + 0x94, 0x2c, 0xcd, 0x9b, 0x56, 0xe7, 0x59, 0xbb, 0xa9, 0xe4, 0x10, 0xba, 0x5f, 0xd3, 0x9e, 0x2b, + 0x79, 0x9e, 0x69, 0xa3, 0xf9, 0xa9, 0x52, 0x60, 0x39, 0x58, 0x6d, 0x3f, 0x56, 0x8a, 0x08, 0x6a, + 0x34, 0x1b, 0x87, 0x07, 0x0a, 0xa8, 0x0f, 0x20, 0x5f, 0x3b, 0x3a, 0xda, 0xf7, 0x4c, 0x3a, 0x3c, + 0xdc, 0x3d, 0x6c, 0xb7, 0xf9, 0x3a, 0xda, 0xe9, 0xf6, 0xfb, 0xdd, 0x7d, 0x25, 0x85, 0x33, 0xb7, + 0xdf, 0x3d, 0x50, 0x56, 0xd5, 0x16, 0x14, 0xa2, 0x4d, 0x57, 0xba, 0xe9, 0x54, 0x80, 0xcc, 0x81, + 0xd6, 0x7c, 0xc1, 0x8f, 0x9f, 0x3b, 0xcd, 0x4f, 0xb1, 0x9a, 0xf8, 0x85, 0x19, 0xa5, 0xb1, 0x20, + 0x7e, 0x25, 0x89, 0xae, 0x3a, 0xb5, 0x5b, 0x9d, 0x66, 0x4d, 0x53, 0xb2, 0xea, 0x87, 0x89, 0x93, + 0x3d, 0x21, 0x9f, 0xb0, 0xf8, 0x5a, 0x4b, 0x14, 0xdf, 0x7a, 0xd6, 0xe9, 0x6a, 0x4d, 0x7e, 0x77, + 0x4a, 0x74, 0xe4, 0xaa, 0xfa, 0x36, 0x14, 0x63, 0xd9, 0x8a, 0x13, 0xab, 0xae, 0x75, 0x7b, 0x3d, + 0xde, 0xef, 0x2b, 0x98, 0xa6, 0xbe, 0xe1, 0xe9, 0x94, 0xda, 0x83, 0x8d, 0x48, 0xac, 0x53, 0x58, + 0x39, 0x59, 0x41, 0x9b, 0x90, 0x6d, 0x5b, 0xaf, 0x2c, 0x27, 0x8a, 0x8f, 0xa6, 0x04, 0x42, 0xbb, + 0x83, 0xcf, 0x5b, 0xf1, 0xf5, 0x56, 0x4a, 0xa0, 0x1e, 0xd7, 0x91, 0x6e, 0xd8, 0x52, 0x5c, 0xfe, + 0xef, 0xa4, 0xa0, 0x10, 0x6f, 0x16, 0xf7, 0x60, 0xb5, 0xdf, 0x13, 0x27, 0x03, 0x9b, 0xdb, 0xb3, + 0x07, 0x05, 0xfa, 0xd1, 0x97, 0xb6, 0xda, 0xef, 0xb1, 0x77, 0x20, 0xc7, 0x2f, 0x04, 0x8a, 0x23, + 0x9d, 0xcd, 0xe4, 0x06, 0xd4, 0x27, 0x9c, 0x26, 0x68, 0xd8, 0x87, 0x50, 0x8c, 0x6b, 0x2b, 0x9c, + 0x37, 0x57, 0x93, 0x0c, 0x31, 0x5a, 0x9b, 0x51, 0xaa, 0x6d, 0xa8, 0x24, 0x33, 0x64, 0xb7, 0x00, + 0x78, 0x96, 0x92, 0xd3, 0x4a, 0x82, 0xb0, 0xeb, 0x10, 0xdd, 0x53, 0x6c, 0x50, 0xc5, 0xd6, 0xe2, + 0x7b, 0x8b, 0x0d, 0xf5, 0x6f, 0xa4, 0x01, 0x66, 0xea, 0x26, 0x76, 0x44, 0xec, 0x92, 0xca, 0x8a, + 0x43, 0xe1, 0x1b, 0x50, 0x74, 0x3c, 0xc3, 0x94, 0xdf, 0x13, 0x28, 0x20, 0x80, 0x86, 0x46, 0xbe, + 0xb3, 0x53, 0xe4, 0x11, 0x19, 0xec, 0x0a, 0xe4, 0x46, 0x9e, 0x3f, 0x36, 0x42, 0x11, 0x0c, 0x2f, + 0x52, 0xb8, 0x6b, 0xf0, 0x83, 0x4a, 0x54, 0xba, 0x5d, 0x8a, 0x87, 0xc7, 0x31, 0x28, 0x0b, 0x60, + 0x1b, 0x61, 0xb8, 0x25, 0x58, 0xee, 0xd0, 0xf1, 0x02, 0xcb, 0x44, 0xf3, 0x2c, 0x47, 0x9a, 0x35, + 0x44, 0xa0, 0x9d, 0x73, 0xde, 0x5a, 0x7f, 0x6c, 0xbb, 0x46, 0x28, 0xdc, 0xf7, 0xd4, 0xda, 0x08, + 0x82, 0xd5, 0xfd, 0x3c, 0xf0, 0x84, 0x87, 0x8a, 0x9f, 0x79, 0x16, 0x10, 0x40, 0xd5, 0x7d, 0x03, + 0xc0, 0x0a, 0x86, 0xc6, 0x84, 0x67, 0x5e, 0xa4, 0xcc, 0x8b, 0x02, 0xb2, 0x73, 0xce, 0xda, 0x50, + 0xe9, 0x0f, 0x70, 0x97, 0xf3, 0x1a, 0x46, 0x68, 0xd4, 0x3d, 0x47, 0xf8, 0x8e, 0xee, 0xcd, 0xeb, + 0xe5, 0xdb, 0x49, 0x32, 0x7e, 0x38, 0x3b, 0xc7, 0x7b, 0xbd, 0x06, 0x97, 0x96, 0x90, 0x7d, 0xa3, + 0x28, 0x35, 0x27, 0x1a, 0x9d, 0x5a, 0x18, 0xd2, 0xfd, 0x93, 0x78, 0x43, 0x4f, 0x45, 0x51, 0xf4, + 0x7c, 0x2f, 0xbf, 0x41, 0x71, 0x28, 0x22, 0xc0, 0x51, 0x0c, 0x52, 0x1c, 0xb8, 0x78, 0x1f, 0xd6, + 0x11, 0x39, 0xb2, 0x2d, 0xc7, 0x14, 0x24, 0xfc, 0xfa, 0xc4, 0xda, 0xd0, 0x73, 0x76, 0x11, 0x4a, + 0x74, 0xea, 0x5f, 0xcb, 0x02, 0xcc, 0x4c, 0xb9, 0xc4, 0xf9, 0x70, 0x2a, 0x79, 0x3e, 0xfc, 0x18, + 0xae, 0x88, 0xcb, 0x35, 0xf1, 0x21, 0xab, 0xed, 0xea, 0x03, 0x23, 0x3a, 0x8a, 0x67, 0x02, 0xcb, + 0xcf, 0x59, 0x5b, 0xee, 0x8e, 0x81, 0x8a, 0xe1, 0xba, 0xcc, 0x13, 0x9e, 0x4f, 0x92, 0xa1, 0x04, + 0xb2, 0xba, 0x31, 0x63, 0xef, 0x9f, 0x4f, 0xd8, 0x7b, 0x70, 0xd9, 0xb7, 0x46, 0xbe, 0x15, 0x1c, + 0xeb, 0x61, 0x20, 0x17, 0xc6, 0x23, 0xde, 0x36, 0x04, 0xb2, 0x1f, 0xc4, 0x65, 0xbd, 0x07, 0x97, + 0x85, 0x91, 0x37, 0x57, 0x3d, 0x7e, 0x0b, 0x7b, 0x83, 0x23, 0xe5, 0xda, 0xbd, 0x01, 0x20, 0xec, + 0xdb, 0xe8, 0x55, 0x8e, 0x82, 0x56, 0xe4, 0xb6, 0xac, 0xb8, 0xab, 0x4a, 0x46, 0xaa, 0x38, 0x3c, + 0xe3, 0x09, 0xa6, 0x42, 0x06, 0xc5, 0x29, 0x1d, 0xf4, 0x54, 0x1e, 0x57, 0xb6, 0xe9, 0xd5, 0x11, + 0xba, 0x3b, 0xec, 0x99, 0x96, 0x46, 0x38, 0xf6, 0x2e, 0x5c, 0x92, 0x9b, 0x1d, 0x5d, 0x9c, 0x2f, + 0x51, 0x45, 0x94, 0x59, 0x43, 0x35, 0x7e, 0x85, 0xfe, 0x6d, 0x60, 0x52, 0xcd, 0x23, 0xea, 0x32, + 0x51, 0xaf, 0xc7, 0xd5, 0x16, 0xc4, 0x6f, 0x01, 0x55, 0x91, 0xfb, 0xd5, 0xd7, 0x16, 0x2d, 0x3a, + 0x44, 0x92, 0x83, 0xfd, 0x3d, 0xb8, 0x3c, 0x6b, 0x9d, 0x6e, 0x84, 0x7a, 0x78, 0x6c, 0xe9, 0x96, + 0x6b, 0xd2, 0x8d, 0xa8, 0x82, 0xb6, 0x11, 0x37, 0xb4, 0x16, 0xf6, 0x8f, 0x2d, 0xb4, 0xc9, 0x24, + 0x4f, 0xde, 0xfa, 0x57, 0x7b, 0xf2, 0x3e, 0x82, 0x6a, 0xe2, 0xd0, 0x58, 0xee, 0x6e, 0x7e, 0xa3, + 0x70, 0x53, 0x3e, 0x2a, 0x8e, 0x7b, 0xfc, 0x21, 0x6c, 0x1c, 0x1b, 0x81, 0x9e, 0xe0, 0x25, 0x07, + 0x63, 0x41, 0x5b, 0x3f, 0x36, 0x82, 0x03, 0x89, 0x47, 0xfd, 0xbd, 0x14, 0x54, 0x92, 0xc6, 0x2d, + 0xbf, 0x51, 0xe2, 0x4c, 0xc7, 0x2e, 0x8f, 0x0f, 0xc9, 0x6a, 0x51, 0x12, 0xd7, 0xc2, 0xe4, 0x44, + 0xe7, 0xa9, 0x68, 0x2d, 0x4c, 0x4e, 0xea, 0x94, 0x66, 0xdf, 0x81, 0xfc, 0xe4, 0x84, 0x0b, 0x87, + 0x8b, 0x66, 0x5f, 0x6e, 0xc2, 0x03, 0x73, 0xbf, 0x03, 0xf9, 0xa9, 0x20, 0xcd, 0x5c, 0x44, 0x3a, + 0x25, 0x52, 0xf5, 0x5f, 0xac, 0x42, 0x59, 0x76, 0xeb, 0x7c, 0x9d, 0xb3, 0xe4, 0x6f, 0x14, 0x03, + 0xb0, 0x45, 0x71, 0x7a, 0x3a, 0x45, 0x01, 0x63, 0x3f, 0xf1, 0x83, 0x64, 0x38, 0x36, 0x82, 0xda, + 0x34, 0xf4, 0xea, 0x1e, 0x3f, 0xbf, 0xf2, 0x9c, 0x28, 0x3a, 0x98, 0xaf, 0x0c, 0x94, 0x09, 0x22, + 0x30, 0xf8, 0x3d, 0x71, 0xf9, 0x80, 0xae, 0x1b, 0x51, 0xfc, 0x49, 0x76, 0x61, 0xbe, 0x94, 0xa3, + 0xdb, 0x46, 0x14, 0x5a, 0xf2, 0x18, 0xd6, 0x67, 0xa1, 0xde, 0x51, 0xc8, 0xca, 0x3c, 0xcb, 0x5a, + 0x1c, 0xe7, 0x2d, 0xee, 0x17, 0xaf, 0xd9, 0x81, 0xee, 0x39, 0x66, 0x74, 0xa7, 0x24, 0x1f, 0xf9, + 0xf1, 0xbb, 0x8e, 0x29, 0x6e, 0x9c, 0x71, 0x1a, 0xd7, 0x3a, 0x8d, 0x68, 0x62, 0x5f, 0x7f, 0xc7, + 0x3a, 0x15, 0x77, 0x4b, 0xfe, 0x65, 0x0a, 0x36, 0x16, 0xdc, 0x30, 0x28, 0x39, 0x67, 0xaf, 0xdd, + 0xe0, 0x27, 0xda, 0x18, 0x63, 0x23, 0x1c, 0x1e, 0xeb, 0x13, 0xdf, 0x1a, 0xd9, 0x67, 0xd1, 0x93, + 0x3d, 0x04, 0x3b, 0x20, 0x10, 0x85, 0xf1, 0x4c, 0x26, 0xe4, 0x7c, 0x1a, 0xdb, 0xa1, 0x10, 0x7c, + 0x40, 0x20, 0xee, 0xad, 0x8b, 0x42, 0xfc, 0x32, 0x17, 0x84, 0xf8, 0x5d, 0x87, 0xa2, 0xeb, 0x85, + 0xba, 0xe7, 0xea, 0x93, 0x13, 0x71, 0x21, 0x3d, 0xef, 0x7a, 0x61, 0xd7, 0x3d, 0x38, 0x61, 0x0f, + 0x40, 0x99, 0x06, 0x96, 0x3e, 0x70, 0x3c, 0x6f, 0x1c, 0xd9, 0x42, 0x5c, 0x76, 0x54, 0xa6, 0x81, + 0xb5, 0x83, 0x60, 0x5e, 0x7f, 0xf5, 0x26, 0xe4, 0x5a, 0xb1, 0xd3, 0x28, 0x8e, 0x66, 0x49, 0x8b, + 0xd7, 0x2d, 0x3c, 0x28, 0xd6, 0xe9, 0xa5, 0x8c, 0x7d, 0x63, 0xc2, 0x1e, 0x42, 0x7a, 0x6c, 0x4c, + 0x44, 0xb4, 0x4b, 0x35, 0x3e, 0x52, 0xe2, 0xd8, 0xed, 0x7d, 0x63, 0xc2, 0xb7, 0x1b, 0x24, 0xba, + 0xfe, 0x11, 0x14, 0x22, 0xc0, 0x37, 0xda, 0x58, 0xfe, 0xcd, 0x2a, 0x14, 0x1b, 0xb2, 0x2b, 0x1a, + 0xed, 0xe7, 0xd0, 0x9f, 0xba, 0xa8, 0xa5, 0x45, 0x77, 0xfe, 0x87, 0x86, 0xdb, 0x17, 0xa0, 0x68, + 0x42, 0xaf, 0x7e, 0xc5, 0x84, 0xbe, 0x09, 0xe0, 0x93, 0xcf, 0x84, 0xdc, 0x26, 0xe9, 0x38, 0xb2, + 0xb2, 0x65, 0xb6, 0xcc, 0xb3, 0xe5, 0xa1, 0x13, 0x99, 0xaf, 0x1f, 0x3a, 0x91, 0x5d, 0x1a, 0x3a, + 0x71, 0x7f, 0xb6, 0xa9, 0xe0, 0xc4, 0xc6, 0x82, 0x8b, 0x7c, 0x6b, 0x9b, 0xc4, 0x17, 0x2c, 0xb0, + 0xf4, 0xef, 0x42, 0x25, 0x6a, 0x9d, 0xc8, 0x0f, 0x12, 0x77, 0x3a, 0x04, 0x8e, 0xfb, 0xae, 0xd7, + 0x42, 0x39, 0x99, 0x5c, 0xa8, 0xa5, 0xd7, 0xc4, 0x94, 0xfc, 0x7e, 0x0a, 0x98, 0xb0, 0xf1, 0x77, + 0xa7, 0x8e, 0xd3, 0xb7, 0xce, 0x48, 0x1e, 0x3c, 0x84, 0x0d, 0xe1, 0x5a, 0x97, 0x22, 0xb2, 0xc4, + 0xf9, 0x22, 0x47, 0xcc, 0xce, 0x17, 0x97, 0x5d, 0xbb, 0x5b, 0x5d, 0x7a, 0xed, 0x6e, 0xf9, 0x75, + 0xbe, 0xdb, 0x50, 0x92, 0x2f, 0xad, 0x71, 0x25, 0x0c, 0x8c, 0xd9, 0x7d, 0xb5, 0x7f, 0xb7, 0x0a, + 0x30, 0xf3, 0x43, 0xfc, 0xb2, 0xe3, 0x5e, 0x96, 0x0c, 0x49, 0x7a, 0xd9, 0x90, 0x3c, 0x00, 0x45, + 0xa6, 0x93, 0x6e, 0x4f, 0x56, 0x66, 0x84, 0x91, 0x72, 0x63, 0x07, 0xf2, 0x0d, 0x37, 0x0a, 0x72, + 0x13, 0x67, 0xfb, 0x22, 0x02, 0x8e, 0x24, 0xaf, 0x58, 0x7b, 0x05, 0x3b, 0xe0, 0x92, 0x98, 0x7d, + 0x02, 0xd7, 0x62, 0x4e, 0xfd, 0xd4, 0x0e, 0x8f, 0xbd, 0x69, 0x28, 0xd6, 0x69, 0x20, 0x64, 0xd3, + 0x95, 0x28, 0xa7, 0x97, 0x1c, 0xcd, 0xd7, 0x6b, 0x80, 0xea, 0xf9, 0x68, 0xea, 0x38, 0x7a, 0x68, + 0x9d, 0x85, 0xe2, 0x19, 0x81, 0x6a, 0xc2, 0x85, 0x23, 0x0d, 0xaf, 0x56, 0x18, 0x89, 0x84, 0xfa, + 0x0f, 0xd3, 0x90, 0xfd, 0xf1, 0xd4, 0xf2, 0xcf, 0xd9, 0x47, 0x50, 0x0c, 0xc2, 0x71, 0x28, 0x9f, + 0xf1, 0x5e, 0xe3, 0x19, 0x10, 0x9e, 0x8e, 0x68, 0xad, 0xb1, 0xe5, 0x86, 0xdc, 0xb7, 0x89, 0xb4, + 0xb4, 0xed, 0x6c, 0x42, 0x36, 0x08, 0xad, 0x49, 0x20, 0x22, 0xd6, 0x78, 0x82, 0x6d, 0x41, 0xd6, + 0xf5, 0x4c, 0x2b, 0x48, 0xc6, 0xa5, 0x75, 0x50, 0xcf, 0xe0, 0x08, 0xa6, 0x42, 0x2e, 0x1e, 0xf1, + 0x85, 0x73, 0x56, 0x8e, 0xa1, 0x9b, 0x06, 0x96, 0x61, 0xda, 0xee, 0x51, 0x74, 0x1b, 0x35, 0x4e, + 0xe3, 0x86, 0x4a, 0x6a, 0xbd, 0x71, 0x14, 0x5d, 0x0d, 0x17, 0x49, 0xb6, 0x05, 0x25, 0xfc, 0x7c, + 0xe9, 0xdb, 0xa1, 0xd5, 0x7b, 0x12, 0xc9, 0x74, 0x09, 0x84, 0x4a, 0xb9, 0x69, 0x85, 0xd6, 0x30, + 0xec, 0x7d, 0x21, 0x82, 0xcd, 0x28, 0x26, 0x29, 0x82, 0xb0, 0xef, 0x02, 0x1b, 0x18, 0xc3, 0x93, + 0x23, 0xdf, 0x9b, 0xba, 0xa6, 0xfe, 0xc5, 0xd4, 0xf2, 0x6d, 0x2b, 0x0a, 0x2e, 0x2b, 0x49, 0x9d, + 0xa2, 0x6d, 0xcc, 0xc8, 0x7e, 0xcc, 0xa9, 0x54, 0x13, 0xd6, 0x12, 0x5d, 0xb5, 0xe0, 0x07, 0xea, + 0x35, 0xdb, 0xcd, 0x7a, 0x9f, 0x1b, 0x90, 0xc2, 0xf9, 0xb0, 0x2a, 0x3b, 0x2f, 0xd2, 0x92, 0x57, + 0x23, 0x23, 0x59, 0x99, 0x59, 0xf2, 0x89, 0x34, 0xb5, 0x67, 0x4d, 0x25, 0xa7, 0xfe, 0xc1, 0x2a, + 0x6c, 0xf4, 0x7d, 0xc3, 0x0d, 0x0c, 0xae, 0x73, 0xb8, 0xa1, 0xef, 0x39, 0xec, 0xbb, 0x50, 0x08, + 0x87, 0x8e, 0x3c, 0x84, 0xb7, 0x23, 0x81, 0x31, 0x47, 0xba, 0xdd, 0x1f, 0x72, 0x27, 0x75, 0x3e, + 0xe4, 0x1f, 0xec, 0x5d, 0xc8, 0x0e, 0xac, 0x23, 0xdb, 0x15, 0x32, 0xf3, 0xf2, 0x3c, 0xe3, 0x0e, + 0x22, 0xf7, 0x56, 0x34, 0x4e, 0xc5, 0xde, 0x83, 0xdc, 0xd0, 0x1b, 0x47, 0x5b, 0xd4, 0xec, 0x56, + 0x93, 0x54, 0x10, 0x62, 0xf7, 0x56, 0x34, 0x41, 0xc7, 0x3e, 0x82, 0x82, 0xef, 0x39, 0x0e, 0xf6, + 0x98, 0xd8, 0xbc, 0xaa, 0xf3, 0x3c, 0x9a, 0xc0, 0xef, 0xad, 0x68, 0x31, 0xad, 0xba, 0x0d, 0x79, + 0x51, 0x59, 0xec, 0x80, 0x9d, 0xe6, 0xb3, 0x96, 0xe8, 0xc8, 0x7a, 0x77, 0x7f, 0xbf, 0xd5, 0xe7, + 0x57, 0x36, 0xb5, 0x6e, 0xbb, 0xbd, 0x53, 0xab, 0x3f, 0x57, 0x56, 0x77, 0x0a, 0x90, 0xe3, 0xee, + 0x48, 0xf5, 0x37, 0x53, 0xb0, 0x3e, 0xd7, 0x00, 0xf6, 0x14, 0x32, 0x63, 0xd4, 0x81, 0x79, 0xf7, + 0xdc, 0x5b, 0xda, 0x4a, 0x29, 0xcd, 0x35, 0x63, 0xe4, 0x50, 0x3f, 0x81, 0x4a, 0x12, 0x2e, 0xf9, + 0x1a, 0xd6, 0xa0, 0xa8, 0x35, 0x6b, 0x0d, 0xbd, 0xdb, 0x41, 0x0b, 0x1f, 0x2d, 0x7e, 0x4a, 0xbe, + 0xd4, 0x5a, 0xe4, 0x1e, 0xf8, 0x35, 0x50, 0xe6, 0x3b, 0x86, 0x3d, 0x43, 0x2b, 0x67, 0x3c, 0x71, + 0x2c, 0x52, 0x26, 0xa5, 0x21, 0xbb, 0xb5, 0xa4, 0x27, 0x05, 0x19, 0x8d, 0x58, 0x65, 0x98, 0x48, + 0xab, 0xbf, 0x0e, 0x6c, 0xb1, 0x07, 0x7f, 0x79, 0xd9, 0xff, 0xaf, 0x14, 0x64, 0x0e, 0x1c, 0xc3, + 0x65, 0x77, 0x21, 0x4b, 0x4f, 0x8d, 0x08, 0xc9, 0x2b, 0xaf, 0x03, 0x9c, 0x16, 0x84, 0x63, 0x6f, + 0x43, 0x3a, 0x1c, 0x46, 0x37, 0x45, 0xaf, 0x5e, 0x30, 0xf9, 0xf6, 0x56, 0x34, 0xa4, 0x62, 0x0f, + 0x20, 0x6d, 0x9a, 0x51, 0x84, 0xb6, 0xf0, 0x3e, 0xa0, 0xed, 0xd9, 0xb0, 0x46, 0xb6, 0x6b, 0x8b, + 0xa7, 0x51, 0x90, 0x84, 0xbd, 0x09, 0x69, 0x73, 0xe8, 0x24, 0xc3, 0xed, 0xb9, 0x95, 0x1a, 0x67, + 0x68, 0x0e, 0x1d, 0xd4, 0xd5, 0x42, 0xff, 0x5c, 0xf7, 0xa7, 0x2e, 0x85, 0x9c, 0x05, 0xc2, 0x7e, + 0x2a, 0xa1, 0xfe, 0x31, 0xa5, 0xb8, 0xb5, 0x40, 0x5c, 0x39, 0x9b, 0xf8, 0xd6, 0xc4, 0xf0, 0x63, + 0xcb, 0xc9, 0x0e, 0x0e, 0x38, 0x60, 0x27, 0x07, 0xf4, 0x82, 0xa3, 0xfa, 0x0e, 0xbd, 0x83, 0x81, + 0x2a, 0xb8, 0x1a, 0x7d, 0x2d, 0x79, 0xec, 0x4b, 0x60, 0xd4, 0x3f, 0x4b, 0x43, 0x49, 0xaa, 0x0f, + 0xfb, 0x00, 0x0a, 0x66, 0x72, 0x21, 0x5e, 0x5b, 0xa8, 0xf4, 0x76, 0x23, 0x5a, 0x82, 0xa6, 0x98, + 0xde, 0x74, 0x02, 0x12, 0xea, 0xaf, 0x0c, 0xdf, 0xe6, 0xaf, 0x1f, 0xad, 0xca, 0x47, 0x11, 0x3d, + 0x2b, 0x7c, 0x11, 0x61, 0xf6, 0x56, 0xb4, 0x72, 0x20, 0xa5, 0xc9, 0x4e, 0x10, 0x4d, 0x4a, 0x27, + 0x5e, 0x91, 0xe2, 0xc0, 0xbd, 0x15, 0x2d, 0xc2, 0x23, 0xa9, 0x75, 0x66, 0x0d, 0xa7, 0x61, 0x64, + 0x27, 0xac, 0x45, 0x0d, 0x22, 0x20, 0x3d, 0x65, 0xc7, 0x3f, 0xd9, 0x63, 0x94, 0x93, 0x86, 0xe3, + 0x78, 0xa4, 0x66, 0x65, 0xe5, 0x83, 0x81, 0x46, 0x0c, 0xe7, 0x4f, 0xe7, 0x45, 0x29, 0x76, 0x1f, + 0xb2, 0x5e, 0x78, 0x6c, 0x45, 0xda, 0x77, 0xf4, 0xa2, 0x06, 0x82, 0x1a, 0xf5, 0x36, 0xce, 0x14, + 0x42, 0xab, 0x3f, 0x4b, 0x41, 0x5e, 0xf4, 0x00, 0xdb, 0x80, 0xb5, 0x5e, 0xb3, 0xaf, 0xbf, 0xa8, + 0x69, 0xad, 0xda, 0x4e, 0xbb, 0x29, 0x6e, 0x09, 0x3c, 0xd3, 0x6a, 0x1d, 0x21, 0x27, 0xb5, 0xe6, + 0x8b, 0xee, 0xf3, 0x26, 0x77, 0xe0, 0x35, 0x9a, 0x9d, 0xcf, 0x94, 0x34, 0x77, 0x62, 0x37, 0x0f, + 0x6a, 0x1a, 0x4a, 0xc9, 0x12, 0xe4, 0x9b, 0x9f, 0x36, 0xeb, 0x87, 0x24, 0x26, 0x2b, 0x00, 0x8d, + 0x66, 0xad, 0xdd, 0xee, 0xd6, 0x51, 0x6c, 0xe6, 0x18, 0x83, 0x4a, 0x5d, 0x6b, 0xd6, 0xfa, 0x4d, + 0xbd, 0x56, 0xaf, 0x77, 0x0f, 0x3b, 0x7d, 0x25, 0x8f, 0x25, 0xd6, 0xda, 0xfd, 0xa6, 0x16, 0x83, + 0xe8, 0x95, 0xa3, 0x86, 0xd6, 0x3d, 0x88, 0x21, 0xc5, 0x9d, 0x22, 0xda, 0x6c, 0x34, 0x56, 0xea, + 0x3f, 0x56, 0xa0, 0x92, 0x9c, 0x9a, 0xec, 0x63, 0x28, 0x98, 0x66, 0x62, 0x8c, 0x6f, 0x2e, 0x9b, + 0xc2, 0xdb, 0x0d, 0x33, 0x1a, 0x66, 0xfe, 0xc1, 0xee, 0x44, 0x0b, 0x69, 0x75, 0x61, 0x21, 0x45, + 0xcb, 0xe8, 0x07, 0xb0, 0x2e, 0x5e, 0xa4, 0x30, 0x8d, 0xd0, 0x18, 0x18, 0x81, 0x95, 0x5c, 0x25, + 0x75, 0x42, 0x36, 0x04, 0x6e, 0x6f, 0x45, 0xab, 0x0c, 0x13, 0x10, 0xf6, 0x3d, 0xa8, 0x18, 0x64, + 0x96, 0xc7, 0xfc, 0x19, 0x59, 0x81, 0xac, 0x21, 0x4e, 0x62, 0x5f, 0x33, 0x64, 0x00, 0x4e, 0x44, + 0xd3, 0xf7, 0x26, 0x33, 0xe6, 0x6c, 0xe2, 0x4c, 0xcc, 0xf7, 0x26, 0x12, 0x6f, 0xd9, 0x94, 0xd2, + 0xec, 0x23, 0x28, 0x8b, 0x9a, 0xcf, 0x5c, 0x13, 0xf1, 0x92, 0xe5, 0xd5, 0x26, 0x85, 0x70, 0x6f, + 0x45, 0x2b, 0x0d, 0x67, 0x49, 0xf6, 0x04, 0xb5, 0xc0, 0x99, 0xfa, 0x9c, 0x97, 0xe7, 0x1a, 0xd5, + 0x36, 0xe2, 0x02, 0x23, 0x4e, 0xb1, 0xf7, 0x00, 0xa8, 0x9e, 0x9c, 0xa7, 0x90, 0x88, 0x61, 0xf1, + 0xbd, 0x49, 0xc4, 0x52, 0x34, 0xa3, 0x84, 0x54, 0x3d, 0xee, 0x58, 0x2a, 0x2e, 0x56, 0x8f, 0x9c, + 0x4b, 0xb3, 0xea, 0x71, 0x9f, 0x54, 0x5c, 0x3d, 0xce, 0x06, 0x0b, 0xd5, 0x8b, 0xb8, 0x78, 0xf5, + 0x38, 0x53, 0x54, 0x3d, 0xce, 0x53, 0x9a, 0xaf, 0x5e, 0xc4, 0x42, 0xd5, 0xe3, 0x1c, 0xdf, 0x5b, + 0xd0, 0xfb, 0xcb, 0x17, 0xea, 0xfd, 0x38, 0x6c, 0x49, 0xcd, 0xff, 0x7b, 0x50, 0x09, 0x8e, 0xbd, + 0x53, 0x49, 0x80, 0xac, 0xc9, 0xdc, 0xbd, 0x63, 0xef, 0x54, 0x96, 0x20, 0x6b, 0x81, 0x0c, 0xc0, + 0xda, 0xf2, 0x26, 0xd2, 0xe1, 0x56, 0x45, 0xae, 0x2d, 0xb5, 0xf0, 0x85, 0x6d, 0x9d, 0x62, 0x6d, + 0x8d, 0x28, 0x81, 0x9d, 0x32, 0x73, 0xd3, 0x04, 0xc2, 0xf1, 0x92, 0x88, 0xb1, 0x10, 0x25, 0x41, + 0xec, 0xb0, 0x09, 0x70, 0x6e, 0x4d, 0x5d, 0x99, 0x4d, 0x91, 0xe7, 0xd6, 0xa1, 0x9b, 0x60, 0x2c, + 0x73, 0x52, 0xc1, 0x3a, 0x5b, 0x15, 0x81, 0xf5, 0xc5, 0xd4, 0x72, 0x87, 0x96, 0x88, 0xf0, 0x4a, + 0xac, 0x8a, 0x9e, 0xc0, 0xcd, 0x56, 0x45, 0x04, 0x89, 0xe7, 0x75, 0xcc, 0xce, 0xe6, 0xe7, 0xb5, + 0xc4, 0x4c, 0xf3, 0x3a, 0x66, 0x8d, 0x17, 0x54, 0xcc, 0x7b, 0x69, 0x61, 0x41, 0x49, 0xcc, 0x7c, + 0x41, 0xc5, 0xdc, 0x4f, 0x40, 0xcc, 0x26, 0xde, 0xb9, 0x89, 0x38, 0x30, 0x5e, 0x6b, 0xd1, 0xbb, + 0x30, 0x8c, 0x53, 0x38, 0x57, 0x7d, 0x0b, 0xed, 0x0c, 0x31, 0x15, 0x2e, 0xcb, 0x73, 0x55, 0x23, + 0x4c, 0xbc, 0x94, 0xfc, 0x59, 0x52, 0x2a, 0x6c, 0x62, 0x87, 0x7e, 0xd5, 0x5c, 0x2c, 0xec, 0xc0, + 0x0e, 0xfd, 0x59, 0x61, 0x98, 0x62, 0xef, 0x02, 0x4d, 0x43, 0xce, 0x62, 0xc9, 0xa2, 0x1b, 0xbb, + 0x45, 0x30, 0x14, 0x4c, 0xf1, 0x4d, 0x65, 0x38, 0x9e, 0x1b, 0x55, 0x6d, 0x94, 0x28, 0x03, 0x11, + 0xf1, 0x72, 0x1d, 0xc6, 0x29, 0xf5, 0xbf, 0x64, 0x21, 0x2f, 0xa4, 0x21, 0xbb, 0x04, 0xeb, 0x42, + 0x28, 0x37, 0x6a, 0xfd, 0xda, 0x4e, 0xad, 0x87, 0x6a, 0x14, 0x83, 0x0a, 0x97, 0xca, 0x31, 0x2c, + 0x85, 0x92, 0x9a, 0xc4, 0x72, 0x0c, 0x5a, 0x45, 0x49, 0x2d, 0x78, 0xf9, 0xdb, 0x75, 0x69, 0xb6, + 0x0e, 0x25, 0xce, 0xc8, 0x01, 0x74, 0xad, 0x90, 0xb8, 0x78, 0x3a, 0x2b, 0xb1, 0xf0, 0x13, 0xa7, + 0xdc, 0x8c, 0x85, 0x03, 0xf2, 0x31, 0x4b, 0x74, 0x24, 0xc5, 0xa0, 0xd2, 0xd7, 0x0e, 0x3b, 0xf5, + 0x59, 0x39, 0x45, 0xba, 0x0a, 0xc6, 0xb3, 0x79, 0xd1, 0x6a, 0xbe, 0x54, 0x00, 0x99, 0x78, 0x2e, + 0x94, 0x2e, 0xa1, 0x22, 0x48, 0x99, 0x50, 0xb2, 0xcc, 0xae, 0xc2, 0xa5, 0xde, 0x5e, 0xf7, 0xa5, + 0xce, 0x99, 0xe2, 0x26, 0xac, 0xb1, 0x4d, 0x50, 0x24, 0x04, 0xcf, 0xbe, 0x82, 0x45, 0x12, 0x34, + 0x22, 0xec, 0x29, 0xeb, 0x74, 0xa8, 0x8b, 0xb0, 0x3e, 0xdf, 0x19, 0x15, 0x6c, 0x0a, 0x67, 0xed, + 0xb6, 0x0f, 0xf7, 0x3b, 0x3d, 0x65, 0x03, 0x2b, 0x41, 0x10, 0x5e, 0x73, 0x16, 0x67, 0x33, 0xdb, + 0x4f, 0x2f, 0xd1, 0x16, 0x8b, 0xb0, 0x97, 0x35, 0xad, 0xd3, 0xea, 0x3c, 0xeb, 0x29, 0x9b, 0x71, + 0xce, 0x4d, 0x4d, 0xeb, 0x6a, 0x3d, 0xe5, 0x72, 0x0c, 0xe8, 0xf5, 0x6b, 0xfd, 0xc3, 0x9e, 0x72, + 0x25, 0xae, 0xe5, 0x81, 0xd6, 0xad, 0x37, 0x7b, 0xbd, 0x76, 0xab, 0xd7, 0x57, 0xae, 0xb2, 0xcb, + 0xb0, 0x31, 0xab, 0x51, 0x44, 0x5c, 0x95, 0x2a, 0xaa, 0x3d, 0x6b, 0xf6, 0x95, 0x6b, 0x71, 0x35, + 0xea, 0xdd, 0x76, 0xbb, 0x46, 0xc7, 0x91, 0xd7, 0x91, 0x88, 0xce, 0x65, 0x45, 0x6b, 0x6e, 0x60, + 0xbd, 0x0e, 0x3b, 0x32, 0xe8, 0xa6, 0x34, 0x35, 0x7a, 0xcd, 0x1f, 0x1f, 0x36, 0x3b, 0xf5, 0xa6, + 0xf2, 0xc6, 0x6c, 0x6a, 0xc4, 0xb0, 0x5b, 0xf1, 0xd4, 0x88, 0x41, 0xb7, 0xe3, 0x32, 0x23, 0x50, + 0x4f, 0xd9, 0xc2, 0xfc, 0x44, 0x3d, 0x3a, 0x9d, 0x66, 0xbd, 0x8f, 0x6d, 0xbd, 0x13, 0xf7, 0xe2, + 0xe1, 0xc1, 0x33, 0xad, 0xd6, 0x68, 0x2a, 0x2a, 0x42, 0xb4, 0x66, 0xa7, 0xb6, 0x1f, 0x8d, 0xf6, + 0x5d, 0x69, 0xb4, 0x0f, 0x5a, 0x7d, 0x4d, 0xb9, 0x17, 0x8f, 0x2e, 0x25, 0xdf, 0x64, 0x37, 0xe0, + 0xaa, 0x3c, 0x0f, 0xf5, 0x97, 0xad, 0xfe, 0x9e, 0x38, 0x3d, 0xbd, 0xbf, 0x53, 0xa6, 0x47, 0x86, + 0x85, 0x12, 0xa0, 0xfe, 0x08, 0x98, 0xfc, 0xde, 0xa6, 0x08, 0x56, 0x65, 0x90, 0x19, 0xf9, 0xde, + 0x38, 0xba, 0xc4, 0x8f, 0xdf, 0x68, 0xbd, 0x4e, 0xa6, 0x03, 0x3a, 0x7f, 0x9c, 0x5d, 0xd2, 0x95, + 0x41, 0xea, 0xdf, 0x4b, 0x41, 0x25, 0xa9, 0x00, 0x90, 0x93, 0x72, 0xa4, 0xbb, 0x5e, 0xc8, 0x5f, + 0x34, 0x0a, 0xe2, 0x67, 0x30, 0x47, 0x1d, 0x2f, 0xa4, 0x27, 0x8d, 0xc8, 0x98, 0x8e, 0xf7, 0x73, + 0x9e, 0x6b, 0x9c, 0x66, 0x2d, 0xb8, 0x94, 0x78, 0xb2, 0x34, 0xf1, 0x9e, 0x54, 0x35, 0x7e, 0x6a, + 0x70, 0xae, 0xfe, 0x1a, 0x0b, 0x16, 0xdb, 0x24, 0xae, 0x5a, 0x67, 0x66, 0x57, 0xad, 0xf7, 0x60, + 0x2d, 0xa1, 0x6f, 0x90, 0x0f, 0x64, 0x94, 0xac, 0x69, 0xc1, 0x1e, 0xbd, 0xbe, 0x9a, 0xea, 0xdf, + 0x49, 0x41, 0x59, 0xd6, 0x3e, 0xbe, 0x75, 0x4e, 0x14, 0xca, 0x21, 0xbe, 0x75, 0xdb, 0x8c, 0x5e, + 0x32, 0x8a, 0x40, 0x2d, 0x7a, 0x5c, 0x9d, 0xfb, 0x7b, 0x77, 0x4f, 0x7a, 0x71, 0x73, 0x64, 0x10, + 0xbb, 0x05, 0x40, 0x97, 0x34, 0x77, 0x9f, 0x23, 0x81, 0xb8, 0xd8, 0x34, 0x83, 0xa8, 0xb7, 0xa1, + 0xb8, 0x7b, 0x12, 0x05, 0xaf, 0xc8, 0xef, 0x7a, 0x15, 0xf9, 0xcd, 0x6e, 0xf5, 0x8f, 0x52, 0x50, + 0x99, 0xbd, 0x81, 0x42, 0xa7, 0xc0, 0xfc, 0xa9, 0x5b, 0x3e, 0x1d, 0x56, 0xcd, 0xc1, 0xec, 0xdd, + 0xf5, 0x55, 0xf9, 0xdd, 0xf5, 0xbb, 0x22, 0xb3, 0xb4, 0xbc, 0x47, 0xc7, 0x65, 0x89, 0x7b, 0xe3, + 0x4f, 0xa0, 0x8c, 0xff, 0x35, 0x6b, 0x64, 0xf9, 0xbe, 0x15, 0xbd, 0xfa, 0xbb, 0x40, 0x9c, 0x20, + 0x22, 0x3b, 0xcb, 0x1a, 0x09, 0x75, 0x6f, 0xe9, 0x33, 0x2d, 0xf4, 0x7c, 0xd0, 0x7f, 0x4f, 0x43, + 0x49, 0xd2, 0xe5, 0xbe, 0xd6, 0xf4, 0xbb, 0x09, 0xc5, 0xd9, 0xa3, 0x21, 0xe2, 0xb2, 0x6e, 0x0c, + 0x48, 0x8c, 0x55, 0x7a, 0x6e, 0xac, 0xaa, 0x90, 0x17, 0x31, 0xb1, 0xc2, 0x01, 0x1b, 0x25, 0x93, + 0xae, 0xce, 0xec, 0x6b, 0xce, 0x24, 0xde, 0x87, 0xb2, 0xe4, 0xa7, 0x0c, 0xc4, 0x85, 0xd6, 0x79, + 0xfa, 0xd2, 0xcc, 0x67, 0x19, 0xb0, 0xcb, 0x90, 0x1b, 0x9d, 0xe8, 0xe6, 0x80, 0xdf, 0x62, 0x2c, + 0x6a, 0xd9, 0xd1, 0x49, 0x63, 0x40, 0x27, 0x36, 0xa3, 0x58, 0x7d, 0xe1, 0xde, 0xa3, 0xc2, 0x28, + 0x52, 0x52, 0x1e, 0x40, 0x7e, 0x74, 0x22, 0xdf, 0x46, 0x5c, 0xe8, 0xf2, 0xdc, 0xe8, 0x84, 0xae, + 0x2f, 0x3e, 0x82, 0x4d, 0xb1, 0x4f, 0x1b, 0x81, 0xce, 0xdf, 0x45, 0xa0, 0xc7, 0x64, 0xf8, 0x2b, + 0x5f, 0x1b, 0x1c, 0x57, 0x0b, 0x7a, 0x84, 0xc1, 0x19, 0xa7, 0x42, 0x59, 0x9a, 0x80, 0xfc, 0xd5, + 0x9d, 0xa2, 0x96, 0x80, 0xb1, 0xa7, 0x50, 0x1e, 0x9d, 0xf0, 0x01, 0xed, 0x7b, 0xfb, 0x96, 0x88, + 0xea, 0xdf, 0x9c, 0x1f, 0x4a, 0x3a, 0xa6, 0x4f, 0x50, 0xb2, 0x2b, 0x90, 0xd3, 0x8c, 0xd3, 0xde, + 0x8f, 0xdb, 0xa4, 0xc8, 0x15, 0x35, 0x91, 0xfa, 0x51, 0xa6, 0x50, 0x51, 0xd6, 0xd5, 0x7f, 0x92, + 0x82, 0xca, 0x4c, 0x0f, 0xc7, 0x45, 0xc8, 0x1e, 0xca, 0x6f, 0x54, 0x57, 0xe7, 0x55, 0x75, 0x24, + 0xd9, 0xee, 0x9f, 0x4f, 0xf8, 0x4b, 0x8e, 0xcb, 0x5e, 0x4a, 0x5a, 0xe6, 0x38, 0x4e, 0x2f, 0x7d, + 0x1d, 0xf7, 0x19, 0xa4, 0xfb, 0xe7, 0x13, 0xee, 0xf3, 0xc1, 0x4d, 0x8f, 0xdb, 0x87, 0x7c, 0xbb, + 0xa3, 0x38, 0x90, 0xe7, 0xcd, 0xcf, 0xf8, 0xe3, 0x02, 0x07, 0x5a, 0x6b, 0xbf, 0xa6, 0x7d, 0x46, + 0x21, 0x3e, 0xa4, 0x16, 0xec, 0x76, 0xb5, 0x66, 0xeb, 0x59, 0x87, 0x00, 0x19, 0xf2, 0x08, 0xcd, + 0xaa, 0x58, 0x33, 0xcd, 0xdd, 0x13, 0xf9, 0x91, 0x99, 0x54, 0xe2, 0x91, 0x99, 0xe4, 0x7d, 0xe4, + 0xd5, 0xf9, 0xfb, 0xc8, 0x2c, 0x5e, 0x85, 0xf1, 0x92, 0x66, 0x6f, 0x41, 0x66, 0x74, 0x62, 0x9d, + 0x27, 0x8d, 0xad, 0xe4, 0x02, 0x22, 0x02, 0xf5, 0xe7, 0x29, 0x60, 0x89, 0x8a, 0x70, 0xfd, 0xff, + 0xdb, 0xd6, 0xe5, 0x63, 0xa8, 0x8a, 0xe0, 0x35, 0x4e, 0x25, 0x79, 0xaa, 0x45, 0x97, 0x5e, 0xf6, + 0x66, 0x71, 0x9b, 0xb3, 0xc7, 0x9c, 0xd8, 0x23, 0xe0, 0xef, 0xce, 0x51, 0x54, 0x47, 0xe6, 0x02, + 0x5b, 0x4d, 0x9b, 0xd1, 0xcc, 0x1e, 0x9a, 0x93, 0x1f, 0xd0, 0xe3, 0x4e, 0xee, 0xf5, 0xd9, 0xa8, + 0xd1, 0x9a, 0x57, 0x7f, 0x37, 0x05, 0x97, 0x92, 0x13, 0xe2, 0x17, 0x6b, 0x65, 0xf2, 0xb5, 0xc0, + 0xf4, 0xfc, 0x6b, 0x81, 0xcb, 0xe6, 0x53, 0x66, 0xe9, 0x7c, 0xfa, 0xad, 0x14, 0x6c, 0x4a, 0xbd, + 0x3f, 0xb3, 0xd8, 0xfe, 0x9c, 0x6a, 0x26, 0x3d, 0x1a, 0x98, 0x49, 0x3c, 0x1a, 0xa8, 0xfe, 0x41, + 0x0a, 0xae, 0xcc, 0xd5, 0x44, 0xb3, 0xfe, 0x5c, 0xeb, 0x92, 0x7c, 0x5c, 0x90, 0x1c, 0xed, 0x3c, + 0x78, 0x95, 0x5f, 0x64, 0x65, 0xc9, 0xd7, 0x02, 0xe9, 0xda, 0xf8, 0x07, 0xb0, 0x31, 0xab, 0x63, + 0x5d, 0x3c, 0x84, 0x78, 0x1b, 0x4a, 0xae, 0x75, 0xaa, 0x47, 0xcf, 0x24, 0x8a, 0x38, 0x1e, 0xd7, + 0x3a, 0x15, 0x04, 0xea, 0xae, 0x2c, 0x30, 0xe2, 0x37, 0xd3, 0x1d, 0x33, 0x11, 0x10, 0xe2, 0x39, + 0x66, 0x84, 0xc2, 0xdc, 0xa4, 0x16, 0xe5, 0x5d, 0xeb, 0x94, 0x06, 0xeb, 0x54, 0xe4, 0x53, 0x33, + 0x4d, 0x71, 0x28, 0xbe, 0xec, 0xed, 0xa3, 0x6b, 0x50, 0x98, 0xf8, 0x89, 0x2e, 0xc9, 0x4f, 0x7c, + 0x5e, 0xec, 0x3d, 0x11, 0x25, 0x74, 0xd1, 0x01, 0x3a, 0x8f, 0x1b, 0x12, 0xbf, 0xa9, 0x90, 0x99, + 0xfd, 0xa6, 0xc2, 0x87, 0x42, 0x56, 0xe0, 0xc4, 0x15, 0x25, 0x2b, 0x90, 0xb6, 0xcd, 0x33, 0x2a, + 0x78, 0x4d, 0xc3, 0x4f, 0x52, 0x77, 0xac, 0x2f, 0x44, 0xa0, 0x12, 0x7e, 0xaa, 0x3b, 0x50, 0xd2, + 0x12, 0xd6, 0x58, 0x59, 0x72, 0x6c, 0x04, 0xc9, 0xe7, 0x61, 0x66, 0x1d, 0xa4, 0x95, 0x66, 0x7e, + 0x8d, 0x40, 0x0d, 0x84, 0x74, 0x78, 0x61, 0xf8, 0xc3, 0x63, 0xc3, 0x6f, 0x5b, 0xee, 0x51, 0x78, + 0x8c, 0x5d, 0xce, 0xfd, 0x8d, 0x72, 0x17, 0x02, 0x07, 0x45, 0x43, 0x8f, 0xbd, 0xe8, 0x10, 0x79, + 0xf4, 0x5a, 0xbb, 0x6b, 0x9d, 0x0a, 0xfe, 0x37, 0x00, 0xb0, 0xff, 0x05, 0x9a, 0x9f, 0x72, 0x15, + 0x3d, 0xc7, 0xe4, 0x68, 0x75, 0x43, 0xb4, 0x57, 0x5c, 0x46, 0x69, 0x58, 0x23, 0xd5, 0x11, 0x23, + 0xcf, 0x1b, 0x24, 0x3a, 0xe1, 0x5b, 0x0d, 0x23, 0xbb, 0x03, 0xe5, 0xc8, 0x74, 0xa6, 0x17, 0x89, + 0x78, 0xf1, 0xa5, 0x08, 0xd6, 0x99, 0x8e, 0xd5, 0xdf, 0x4b, 0x43, 0xb9, 0xc6, 0x43, 0x46, 0x26, + 0xe7, 0xdd, 0x49, 0xc8, 0x7e, 0x1d, 0x2e, 0x07, 0x27, 0xf6, 0x44, 0x3c, 0xaf, 0x4e, 0x91, 0x1a, + 0x14, 0xd9, 0x2b, 0x3a, 0xf1, 0xa1, 0xd4, 0x89, 0x82, 0x65, 0xbb, 0x77, 0x62, 0x4f, 0x78, 0x40, + 0x79, 0xcb, 0x3c, 0xa3, 0xe8, 0x6d, 0x7e, 0xfc, 0xcc, 0x82, 0x05, 0x04, 0xdd, 0xb3, 0xc5, 0xec, + 0x27, 0x27, 0x22, 0x5b, 0x71, 0x1e, 0x8f, 0xc0, 0x83, 0x13, 0x4e, 0xf3, 0x10, 0x36, 0xf8, 0x1d, + 0x92, 0xc5, 0x5d, 0x6a, 0x9d, 0x23, 0x66, 0xf3, 0xbb, 0x07, 0x1b, 0x94, 0x9f, 0x78, 0xf6, 0x4e, + 0x1f, 0x7a, 0x93, 0x73, 0x71, 0xba, 0xf5, 0xd6, 0x05, 0x55, 0x6d, 0x71, 0x52, 0x04, 0x89, 0x27, + 0x33, 0x82, 0x24, 0xf4, 0x7a, 0x13, 0xae, 0x5e, 0xd0, 0xa6, 0xd7, 0x9d, 0xa0, 0x17, 0xa4, 0x13, + 0xf4, 0xeb, 0x3b, 0xb0, 0xb9, 0xac, 0xbc, 0x6f, 0x92, 0x87, 0xfa, 0xfb, 0x65, 0x80, 0xd9, 0x8c, + 0x4d, 0xe8, 0x6c, 0xa9, 0x39, 0x9d, 0xed, 0x1b, 0x45, 0x8b, 0x7c, 0x00, 0x15, 0xec, 0x2a, 0x7d, + 0xc6, 0x91, 0x5e, 0xca, 0x51, 0x46, 0xaa, 0xfe, 0xec, 0xf2, 0xde, 0xe2, 0xa9, 0x7b, 0x66, 0xe9, + 0xa9, 0xfb, 0xfb, 0x90, 0xe7, 0x27, 0x42, 0x81, 0xb8, 0x2f, 0x7a, 0x75, 0x7e, 0xf5, 0x6d, 0x8b, + 0xe0, 0xf4, 0x88, 0x8e, 0x35, 0xa1, 0x82, 0xf2, 0xd1, 0xb7, 0xc3, 0xe3, 0xb1, 0x7c, 0x7b, 0xf4, + 0xd6, 0x22, 0x67, 0x44, 0xc6, 0x1f, 0xcb, 0x33, 0xe4, 0xa4, 0xa4, 0xe2, 0x85, 0x63, 0xe1, 0xa6, + 0x24, 0x15, 0x2f, 0x2f, 0xab, 0x78, 0xfd, 0x31, 0x77, 0x4e, 0xa2, 0x8a, 0xf7, 0x2e, 0x5c, 0x12, + 0x17, 0x66, 0x90, 0x01, 0xbb, 0x93, 0xe8, 0x79, 0x60, 0xa0, 0x78, 0x49, 0xa6, 0x3f, 0x26, 0x03, + 0x08, 0xc9, 0x3f, 0x85, 0xcd, 0xe1, 0xb1, 0xe1, 0x1e, 0x59, 0x7a, 0x38, 0x70, 0x74, 0x7a, 0xaa, + 0x5b, 0x1f, 0x1b, 0x13, 0xa1, 0x79, 0xbe, 0xb5, 0x50, 0xd9, 0x3a, 0x11, 0xf7, 0x07, 0x0e, 0x45, + 0x36, 0xc5, 0xb1, 0x19, 0x1b, 0xc3, 0x79, 0xf8, 0xdc, 0x11, 0x29, 0x2c, 0x1c, 0x91, 0xce, 0xeb, + 0xa2, 0xa5, 0x25, 0xba, 0xe8, 0x4c, 0xa3, 0x2c, 0xcb, 0x1a, 0x25, 0x7b, 0x07, 0xf2, 0xe2, 0x16, + 0xa2, 0x70, 0x50, 0xb2, 0xc5, 0xd5, 0xa1, 0x45, 0x24, 0x58, 0x52, 0x74, 0x60, 0x4f, 0x77, 0x97, + 0x2b, 0xbc, 0x24, 0x19, 0x76, 0xfd, 0x7f, 0x64, 0x21, 0x27, 0x82, 0x75, 0x1f, 0x42, 0xc6, 0xf4, + 0xbd, 0x49, 0x1c, 0xfd, 0xba, 0x44, 0x2d, 0xa5, 0x5f, 0x56, 0x42, 0x0d, 0x76, 0x1b, 0x72, 0x86, + 0x69, 0xea, 0xa3, 0x93, 0xe4, 0xa1, 0xe7, 0x9c, 0x86, 0xb8, 0xb7, 0xa2, 0x65, 0x0d, 0x52, 0x15, + 0x3f, 0x86, 0x22, 0xd2, 0xcf, 0x62, 0x12, 0x4b, 0x8b, 0x7a, 0x6f, 0xa4, 0xcb, 0xed, 0xad, 0x68, + 0x05, 0x23, 0xd2, 0xeb, 0xbe, 0x9f, 0x74, 0x1f, 0x73, 0x45, 0xeb, 0xfa, 0x02, 0xeb, 0x45, 0x8e, + 0xe4, 0x5f, 0x05, 0xee, 0x4f, 0x8c, 0x77, 0xdb, 0xac, 0x7c, 0xbe, 0xb6, 0xb0, 0x37, 0xef, 0xad, + 0x68, 0x7c, 0xcf, 0x89, 0xf6, 0xea, 0x0f, 0x23, 0xd7, 0x6e, 0xfc, 0x0b, 0x14, 0x4b, 0x7a, 0x06, + 0x45, 0x58, 0xec, 0xdf, 0x25, 0x79, 0x86, 0x6c, 0xa6, 0x19, 0x85, 0xa6, 0xe5, 0x17, 0xd8, 0xe2, + 0x1d, 0x99, 0xd8, 0xe2, 0xed, 0xf9, 0x29, 0x94, 0xc8, 0x95, 0x28, 0xf8, 0x0a, 0x0b, 0x5d, 0x3b, + 0xdb, 0x50, 0xe9, 0xec, 0x68, 0xb6, 0xbd, 0xd6, 0xa3, 0x76, 0xfa, 0x96, 0xec, 0x9e, 0xbf, 0xb9, + 0xb4, 0xa3, 0xb4, 0xd8, 0x53, 0xcf, 0x1b, 0xab, 0x71, 0x1e, 0xd6, 0x86, 0x4d, 0xe1, 0xc7, 0xe6, + 0x9b, 0x67, 0xb4, 0xdf, 0xc1, 0xc2, 0x78, 0x25, 0x76, 0xd7, 0xbd, 0x15, 0x8d, 0x19, 0x8b, 0x7b, + 0x6e, 0x1d, 0x36, 0xa2, 0x2a, 0xf1, 0xbb, 0x9b, 0xb3, 0xa8, 0x1a, 0xb9, 0x49, 0xb3, 0x3d, 0x73, + 0x6f, 0x45, 0x5b, 0x37, 0x92, 0x20, 0xd6, 0x82, 0x4b, 0x51, 0x26, 0xe4, 0xcf, 0x15, 0x3d, 0x53, + 0x5e, 0x18, 0x45, 0x79, 0x9f, 0xdd, 0x5b, 0xd1, 0x36, 0x8c, 0x79, 0xe0, 0xec, 0x74, 0xfb, 0xba, + 0x06, 0x57, 0x96, 0x2f, 0x67, 0x59, 0xa6, 0x67, 0xb8, 0x4c, 0x57, 0x93, 0x2f, 0x1a, 0x25, 0x2f, + 0xfe, 0x4b, 0x12, 0xfe, 0x87, 0xb0, 0x96, 0x90, 0x67, 0xac, 0x04, 0xf9, 0xe8, 0xed, 0x63, 0x8a, + 0xa8, 0xaf, 0x77, 0x0f, 0x3e, 0x53, 0x52, 0x08, 0x6e, 0x75, 0x7a, 0xfd, 0x5a, 0x47, 0xc4, 0x2e, + 0xb4, 0x3a, 0x22, 0x76, 0x41, 0xfd, 0xeb, 0x69, 0x28, 0xc6, 0x67, 0x2f, 0xdf, 0xde, 0x3f, 0x13, + 0x3b, 0x3e, 0xd2, 0xb2, 0xe3, 0x63, 0xce, 0xf8, 0xe0, 0xcf, 0x94, 0xf3, 0x97, 0xae, 0xd6, 0x93, + 0x2a, 0x7e, 0xb0, 0x78, 0xf9, 0x37, 0xfb, 0x35, 0x2f, 0xff, 0xca, 0x71, 0xc4, 0xb9, 0x64, 0x1c, + 0xf1, 0xdc, 0xfb, 0xd7, 0x79, 0x7a, 0x99, 0x56, 0x7e, 0xff, 0x9a, 0x7e, 0xa4, 0xee, 0x85, 0x6d, + 0x9d, 0x8a, 0xc0, 0x5b, 0x91, 0x4a, 0x6e, 0x87, 0xf0, 0x9a, 0xed, 0xf0, 0xeb, 0x88, 0xd6, 0xc7, + 0xb0, 0x39, 0x3a, 0x89, 0xdf, 0xc3, 0x9d, 0x99, 0xfb, 0x65, 0xaa, 0xd2, 0x52, 0x9c, 0xfa, 0x57, + 0x53, 0x00, 0xb3, 0xc3, 0x86, 0x5f, 0xd8, 0x67, 0x28, 0xb9, 0x65, 0xd2, 0x5f, 0xe1, 0x96, 0x79, + 0xdd, 0xab, 0x46, 0x5f, 0x40, 0x31, 0x3e, 0x5e, 0xfa, 0xf6, 0xf3, 0xe5, 0x1b, 0x15, 0xf9, 0x1b, + 0x91, 0xff, 0x34, 0x3e, 0x9f, 0xf9, 0x45, 0xfb, 0x22, 0x51, 0x7c, 0xfa, 0x35, 0xc5, 0x9f, 0x71, + 0x27, 0x66, 0x5c, 0xf8, 0x2f, 0x79, 0x91, 0xc8, 0xf3, 0x37, 0x93, 0x98, 0xbf, 0xea, 0x54, 0x78, + 0x62, 0x7f, 0xf1, 0xa2, 0xbf, 0x51, 0x83, 0xff, 0x5b, 0x2a, 0x72, 0x17, 0xc6, 0x2f, 0x13, 0x5f, + 0xa8, 0x38, 0x2e, 0xf7, 0x78, 0x7e, 0x93, 0xe2, 0xbe, 0xd2, 0x19, 0x92, 0xf9, 0x2a, 0x67, 0xc8, + 0x5b, 0x90, 0xe5, 0xdb, 0x4e, 0xf6, 0x22, 0x47, 0x08, 0xc7, 0xbf, 0xf6, 0xf7, 0x03, 0x54, 0x55, + 0x28, 0xca, 0xbc, 0xbd, 0x9b, 0x51, 0xbe, 0xd1, 0x6f, 0x1f, 0xd0, 0xf5, 0x85, 0xff, 0x8f, 0x0b, + 0xca, 0x6f, 0xdb, 0x25, 0x5f, 0x6d, 0xe6, 0xab, 0xff, 0x3b, 0x05, 0x6b, 0x89, 0xe3, 0xe2, 0x6f, + 0x51, 0xc4, 0x52, 0x71, 0x9b, 0xfe, 0xbf, 0x48, 0xdc, 0x26, 0x22, 0x2d, 0x0b, 0xc9, 0x48, 0x4b, + 0x14, 0x77, 0xe5, 0x84, 0x19, 0xb0, 0xcc, 0x60, 0x48, 0x2d, 0x35, 0x18, 0x6e, 0xc5, 0xbf, 0x7a, + 0xd6, 0x6a, 0xf0, 0xc0, 0xc6, 0x35, 0x4d, 0x82, 0xb0, 0x4f, 0xe0, 0x9a, 0x30, 0xc4, 0x79, 0xff, + 0x78, 0x23, 0x3d, 0xfe, 0x4d, 0x34, 0x61, 0xd8, 0x5e, 0xe1, 0x04, 0xfc, 0xd7, 0x1f, 0x46, 0xb5, + 0x08, 0xab, 0xb6, 0x60, 0x2d, 0x71, 0x0e, 0x2f, 0xfd, 0x06, 0x63, 0x4a, 0xfe, 0x0d, 0x46, 0xb6, + 0x05, 0xd9, 0xd3, 0x63, 0xcb, 0xb7, 0x96, 0xbc, 0x5c, 0xca, 0x11, 0xea, 0xf7, 0xa0, 0x2c, 0xc7, + 0x04, 0xb1, 0x77, 0x20, 0x6b, 0x87, 0xd6, 0x38, 0x72, 0x31, 0x5c, 0x59, 0x0c, 0x1b, 0x6a, 0x85, + 0xd6, 0x58, 0xe3, 0x44, 0xea, 0xcf, 0x52, 0xa0, 0xcc, 0xe3, 0xa4, 0x1f, 0x8a, 0x4c, 0x5d, 0xf0, + 0x43, 0x91, 0xab, 0x89, 0x4a, 0x2e, 0xfb, 0xad, 0xc7, 0xf8, 0xf5, 0xc4, 0xcc, 0x05, 0xaf, 0x27, + 0xb2, 0xfb, 0x50, 0xf0, 0x2d, 0xfa, 0x15, 0x3e, 0x73, 0x49, 0x58, 0x7f, 0x8c, 0x53, 0x7f, 0x3b, + 0x05, 0x79, 0x11, 0xc0, 0xb4, 0xd4, 0xe7, 0xf3, 0x1d, 0xc8, 0xf3, 0x5f, 0xe4, 0x8b, 0x1e, 0x34, + 0x5a, 0x88, 0x06, 0x8e, 0xf0, 0xec, 0x16, 0x0f, 0xeb, 0x4a, 0xfa, 0x80, 0x0e, 0x1c, 0xc3, 0xd5, + 0x08, 0x2e, 0x7e, 0xd4, 0xc5, 0x18, 0x8b, 0x8b, 0xc5, 0xfc, 0xd9, 0x21, 0x20, 0x10, 0xdd, 0x21, + 0x56, 0xbf, 0x0f, 0x79, 0x11, 0x20, 0xb5, 0xb4, 0x2a, 0xaf, 0xfb, 0x35, 0xb6, 0x2d, 0x80, 0x59, + 0xc4, 0xd4, 0xb2, 0x1c, 0xd4, 0x87, 0x50, 0x88, 0x82, 0xa4, 0x70, 0xfe, 0xcd, 0x8a, 0x16, 0xf7, + 0x45, 0xe4, 0xca, 0x38, 0xe2, 0x35, 0xf0, 0xb6, 0x37, 0x3c, 0x21, 0xaf, 0xec, 0x23, 0xa0, 0xcb, + 0x33, 0xfd, 0x85, 0xf7, 0x99, 0x92, 0x4f, 0xb9, 0xc7, 0x44, 0xec, 0x21, 0xc4, 0xf2, 0xf2, 0x75, + 0xe6, 0xb9, 0x5a, 0x8b, 0xae, 0x59, 0xd1, 0x2c, 0x7b, 0x22, 0xbc, 0x8f, 0x6d, 0x7a, 0x3a, 0x2d, + 0x25, 0x3f, 0xe8, 0x9f, 0xa8, 0x93, 0x26, 0x91, 0xa9, 0x15, 0x28, 0xcb, 0x91, 0x1d, 0x6a, 0x0d, + 0x36, 0xf6, 0xad, 0xd0, 0x40, 0xf9, 0x13, 0xbd, 0x5a, 0xc3, 0xe7, 0x2f, 0x7e, 0x24, 0xe7, 0xef, + 0x3c, 0x9d, 0xc6, 0x89, 0xd4, 0x9f, 0x65, 0x40, 0x99, 0xc7, 0x7d, 0xd5, 0x95, 0xb3, 0xdb, 0x50, + 0xf2, 0x68, 0x5e, 0x24, 0x7e, 0xb6, 0x87, 0x83, 0xa4, 0xb0, 0xed, 0xc4, 0x6f, 0x37, 0x14, 0xec, + 0x60, 0x8f, 0xff, 0x7a, 0xc3, 0x55, 0x7e, 0xbf, 0xc8, 0xf1, 0x86, 0x34, 0xad, 0xcb, 0x74, 0x9d, + 0xa8, 0xed, 0x0d, 0xe9, 0x26, 0x9b, 0xb0, 0xf0, 0x79, 0xb8, 0x61, 0x59, 0x2b, 0x08, 0xb3, 0x9e, + 0x0e, 0x8a, 0x44, 0x30, 0x77, 0x18, 0x88, 0xbb, 0x81, 0x05, 0x0e, 0xe8, 0x07, 0xd1, 0x9b, 0xd3, + 0x43, 0xf1, 0x1b, 0x33, 0x69, 0x7a, 0x73, 0xba, 0xee, 0xd2, 0x45, 0x36, 0xfa, 0x49, 0xa4, 0xa1, + 0xf8, 0xc9, 0x2a, 0xf1, 0xea, 0x37, 0xa2, 0xee, 0xf2, 0x5f, 0xe1, 0xf1, 0xad, 0x20, 0xe0, 0x2f, + 0x87, 0x15, 0xc5, 0xd3, 0x69, 0x02, 0x18, 0x3f, 0x50, 0x28, 0x7e, 0x03, 0x09, 0x49, 0x40, 0x3c, + 0x50, 0xc8, 0x7f, 0x01, 0x09, 0x09, 0xae, 0x41, 0xe1, 0x4b, 0xcf, 0xb5, 0xc8, 0x53, 0x50, 0xa2, + 0x5a, 0xe5, 0x31, 0xbd, 0x6f, 0x4c, 0xd4, 0x7f, 0x96, 0x82, 0xcd, 0xf9, 0x5e, 0xa5, 0x09, 0x53, + 0x86, 0x42, 0xbd, 0xdb, 0xd6, 0x3b, 0xb5, 0xfd, 0xa6, 0xb2, 0xc2, 0xd6, 0xa1, 0xd4, 0xdd, 0xf9, + 0x51, 0xb3, 0xde, 0xe7, 0x80, 0x14, 0x5d, 0xe8, 0xee, 0xe9, 0x7b, 0xad, 0x46, 0xa3, 0xd9, 0xe1, + 0x26, 0x41, 0x77, 0xe7, 0x47, 0x7a, 0xbb, 0x5b, 0xe7, 0x3f, 0x99, 0x12, 0x1d, 0x93, 0xf7, 0x94, + 0x0c, 0x1d, 0xa2, 0x53, 0x74, 0x33, 0x26, 0xb3, 0x3c, 0x78, 0xf7, 0x65, 0x4f, 0xaf, 0x77, 0xfa, + 0x4a, 0x0e, 0x53, 0x9d, 0xc3, 0x76, 0x9b, 0x52, 0x14, 0xa5, 0x57, 0xef, 0xee, 0x1f, 0x68, 0xcd, + 0x5e, 0x4f, 0xef, 0xb5, 0x7e, 0xd2, 0x54, 0x0a, 0x54, 0xb2, 0xd6, 0x7a, 0xd6, 0xea, 0x70, 0x40, + 0x91, 0xe5, 0x21, 0xbd, 0xdf, 0xea, 0xf0, 0x8b, 0xec, 0xfb, 0xb5, 0x4f, 0x95, 0x12, 0x7e, 0xf4, + 0x0e, 0xf7, 0x95, 0xb2, 0xfa, 0x1f, 0xd3, 0x91, 0xc2, 0x4b, 0x31, 0x2b, 0x5f, 0x47, 0xc9, 0x5b, + 0x76, 0x4e, 0xb5, 0x09, 0x59, 0x87, 0xae, 0xe6, 0x8a, 0x5f, 0x83, 0xa5, 0xc4, 0xd7, 0xf9, 0x85, + 0xcb, 0xbb, 0xb0, 0x16, 0x1f, 0x32, 0x4b, 0xcf, 0x40, 0x97, 0x23, 0xe0, 0x12, 0x6f, 0x7e, 0x6e, + 0x89, 0x37, 0x7f, 0x62, 0x87, 0x68, 0xcc, 0xa2, 0x48, 0xe5, 0x13, 0xa5, 0x88, 0x10, 0xfe, 0xdb, + 0xb2, 0x37, 0x80, 0x12, 0xfa, 0xd4, 0xb5, 0xa3, 0xdf, 0x37, 0x2b, 0x20, 0xe0, 0xd0, 0xb5, 0xc3, + 0xf9, 0x43, 0xee, 0xe2, 0xc2, 0x21, 0xb7, 0xbc, 0xf7, 0x42, 0x72, 0xef, 0x4d, 0xfe, 0xf0, 0x27, + 0xff, 0x61, 0x33, 0xe9, 0x87, 0x3f, 0xdf, 0x01, 0x36, 0x9c, 0xfa, 0xf4, 0x20, 0x96, 0x44, 0x56, + 0x26, 0x32, 0x45, 0x60, 0xe2, 0x4d, 0x8f, 0xbd, 0x05, 0xeb, 0x73, 0xd4, 0xe4, 0xf8, 0x29, 0x6a, + 0x95, 0x24, 0x29, 0xdb, 0x86, 0x4b, 0x62, 0xea, 0x26, 0xfa, 0x56, 0x5c, 0xfb, 0xe3, 0xa8, 0xda, + 0xac, 0x87, 0xd5, 0x5f, 0x81, 0x42, 0x14, 0x9e, 0xf4, 0xd5, 0xba, 0xec, 0x92, 0x71, 0x55, 0xff, + 0xd6, 0x2a, 0xc0, 0x2c, 0x56, 0x89, 0xbd, 0x3b, 0x17, 0xb9, 0x98, 0x5a, 0xd8, 0x2a, 0xe6, 0x02, + 0x16, 0xe7, 0x5e, 0xf1, 0x58, 0xfd, 0x1a, 0xaf, 0x78, 0x3c, 0x86, 0xb5, 0xc0, 0x1f, 0xbe, 0xd6, + 0xd1, 0x59, 0x0a, 0xfc, 0x61, 0xec, 0xe7, 0x7c, 0x04, 0x98, 0xa4, 0x77, 0xc7, 0x66, 0xc6, 0xcd, + 0xc2, 0x4e, 0x57, 0x0c, 0xfc, 0x61, 0x77, 0xf0, 0x79, 0x83, 0xdf, 0x7e, 0x31, 0x83, 0x50, 0x5f, + 0x36, 0xf5, 0xd6, 0xcd, 0x20, 0x6c, 0xc8, 0xb3, 0xef, 0x1e, 0x54, 0x90, 0x76, 0x61, 0x06, 0x96, + 0xcd, 0x60, 0xe6, 0xd8, 0x56, 0xff, 0x52, 0x74, 0x5e, 0x16, 0xdf, 0x72, 0x14, 0xc1, 0x1e, 0x1f, + 0x09, 0xe3, 0x4d, 0xda, 0x78, 0x64, 0x07, 0x4b, 0x4c, 0xce, 0xdf, 0x1c, 0x89, 0x49, 0x17, 0x7f, + 0xe7, 0x68, 0xf5, 0xeb, 0xfe, 0xce, 0xd1, 0x16, 0xc0, 0xec, 0xe5, 0x37, 0x1c, 0xd6, 0x38, 0x9a, + 0xbf, 0xc8, 0xe3, 0xf4, 0x1f, 0xde, 0x81, 0xb2, 0xfc, 0x6b, 0x83, 0x14, 0xa5, 0xef, 0xb9, 0x16, + 0x7f, 0x8f, 0xbe, 0xfd, 0xe5, 0x07, 0x4a, 0xea, 0xa1, 0x0a, 0x25, 0xe9, 0xd7, 0x20, 0x90, 0x62, + 0xcf, 0x08, 0x8e, 0xc5, 0xdb, 0xe4, 0x86, 0x7b, 0x64, 0x29, 0xa9, 0x87, 0xf7, 0x51, 0x51, 0x93, + 0x7f, 0x8b, 0x01, 0x20, 0xd7, 0xf1, 0xfc, 0xb1, 0xe1, 0x08, 0x3a, 0x6b, 0x1a, 0x20, 0xdd, 0x23, + 0xb8, 0xbc, 0xf4, 0x97, 0x25, 0xe8, 0xaa, 0x87, 0x3d, 0x9e, 0x38, 0x16, 0xbf, 0xad, 0xb0, 0x77, + 0x3e, 0xf0, 0x6d, 0x53, 0x49, 0x3d, 0x7c, 0x1a, 0x5d, 0x92, 0x8e, 0xca, 0x6e, 0x77, 0x6b, 0x0d, + 0x2e, 0x53, 0xe3, 0xc7, 0x3a, 0xfa, 0x3b, 0xfc, 0xdd, 0x71, 0xad, 0xd9, 0x3b, 0x6c, 0xf7, 0xc5, + 0xc3, 0x20, 0x0f, 0x7f, 0x08, 0xd5, 0x8b, 0xc2, 0xf6, 0xb1, 0x46, 0xf5, 0xbd, 0x1a, 0x5d, 0x8d, + 0x40, 0x19, 0xda, 0xd5, 0x79, 0x2a, 0xc5, 0x6f, 0x96, 0xb4, 0x9b, 0x14, 0x39, 0xf7, 0xf0, 0xa7, + 0x29, 0x49, 0x73, 0x88, 0x42, 0xaf, 0x63, 0x80, 0xe8, 0x26, 0x19, 0xa4, 0x59, 0x86, 0xa9, 0xa4, + 0xd8, 0x15, 0x60, 0x09, 0x50, 0xdb, 0x1b, 0x1a, 0x8e, 0xb2, 0x4a, 0x31, 0x72, 0x11, 0x9c, 0x2e, + 0xd7, 0x28, 0x69, 0xf6, 0x06, 0x5c, 0x8b, 0x61, 0x6d, 0xef, 0xf4, 0xc0, 0xb7, 0x3d, 0xdf, 0x0e, + 0xcf, 0x39, 0x3a, 0xf3, 0xf0, 0xff, 0x17, 0x47, 0x5b, 0x89, 0xb9, 0x81, 0x05, 0xd4, 0x4c, 0x73, + 0x06, 0x23, 0x35, 0x41, 0x59, 0x61, 0x57, 0xe1, 0x12, 0x2d, 0xf0, 0x39, 0x44, 0x8a, 0xdd, 0x80, + 0xab, 0x91, 0x79, 0x33, 0x8f, 0x5c, 0x45, 0xa4, 0x66, 0x51, 0xf4, 0xd5, 0x02, 0x32, 0xbd, 0xf3, + 0x83, 0x3f, 0xfe, 0xf9, 0xad, 0xd4, 0xbf, 0xfa, 0xf9, 0xad, 0xd4, 0x7f, 0xfa, 0xf9, 0xad, 0x95, + 0x9f, 0xfd, 0xe7, 0x5b, 0xa9, 0x9f, 0xbc, 0x7b, 0x64, 0x87, 0xc7, 0xd3, 0xc1, 0xf6, 0xd0, 0x1b, + 0x3f, 0x1a, 0x1b, 0xa1, 0x6f, 0x9f, 0x71, 0x49, 0x13, 0x25, 0x5c, 0xeb, 0xd1, 0xe4, 0xe4, 0xe8, + 0xd1, 0x64, 0xf0, 0x08, 0xa7, 0xe7, 0x20, 0x37, 0xf1, 0xbd, 0xd0, 0x7b, 0xf2, 0x7f, 0x02, 0x00, + 0x00, 0xff, 0xff, 0x6b, 0x87, 0x87, 0x19, 0xf7, 0x81, 0x00, 0x00, } func (m *Type) Marshal() (dAtA []byte, err error) { @@ -18499,6 +18517,26 @@ func (m *Node) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0xca } + if len(m.DirectView) > 0 { + i -= len(m.DirectView) + copy(dAtA[i:], m.DirectView) + i = encodeVarintPlan(dAtA, i, uint64(len(m.DirectView))) + i-- + dAtA[i] = 0x4 + i-- + dAtA[i] = 0xc2 + } + if len(m.OriginViews) > 0 { + for iNdEx := len(m.OriginViews) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.OriginViews[iNdEx]) + copy(dAtA[i:], m.OriginViews[iNdEx]) + i = encodeVarintPlan(dAtA, i, uint64(len(m.OriginViews[iNdEx]))) + i-- + dAtA[i] = 0x4 + i-- + dAtA[i] = 0xba + } + } if m.RollupFilter { i-- if m.RollupFilter { @@ -27513,6 +27551,16 @@ func (m *Node) ProtoSize() (n int) { if m.RollupFilter { n += 3 } + if len(m.OriginViews) > 0 { + for _, s := range m.OriginViews { + l = len(s) + n += 2 + l + sovPlan(uint64(l)) + } + } + l = len(m.DirectView) + if l > 0 { + n += 2 + l + sovPlan(uint64(l)) + } if m.RankOption != nil { l = m.RankOption.ProtoSize() n += 2 + l + sovPlan(uint64(l)) @@ -44112,6 +44160,70 @@ func (m *Node) Unmarshal(dAtA []byte) error { } } m.RollupFilter = bool(v != 0) + case 71: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OriginViews", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OriginViews = append(m.OriginViews, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 72: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DirectView", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DirectView = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 89: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field RankOption", wireType) diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.go b/pkg/sql/parsers/dialect/mysql/mysql_sql.go index d80961d86bbc1..ca739ade68f31 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.go @@ -1421,7 +1421,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line mysql_sql.y:13658 +//line mysql_sql.y:13663 //line yacctab:1 var yyExca = [...]int{ @@ -1433,9 +1433,9 @@ var yyExca = [...]int{ 22, 839, -2, 832, -1, 175, - 246, 1327, - 248, 1190, - -2, 1245, + 246, 1326, + 248, 1189, + -2, 1244, -1, 203, 44, 660, 248, 660, @@ -1444,307 +1444,315 @@ var yyExca = [...]int{ 492, 660, -2, 695, -1, 243, - 690, 2125, + 690, 2124, -2, 549, -1, 568, - 690, 2248, + 690, 2247, -2, 415, -1, 626, - 690, 2307, + 690, 2306, -2, 413, -1, 627, - 690, 2308, + 690, 2307, -2, 414, -1, 628, - 690, 2309, + 690, 2308, -2, 416, -1, 782, 327, 182, 464, 182, 465, 182, - -2, 2016, + -2, 2015, -1, 849, - 86, 1795, - -2, 2184, + 86, 1794, + -2, 2183, -1, 850, - 86, 1814, - -2, 2155, + 86, 1813, + -2, 2154, -1, 854, - 86, 1815, - -2, 2183, + 86, 1814, + -2, 2182, -1, 893, - 86, 1722, - -2, 2394, - -1, 894, - 86, 1723, + 86, 1721, -2, 2393, + -1, 894, + 86, 1722, + -2, 2392, -1, 895, - 86, 1724, - -2, 2383, + 86, 1723, + -2, 2382, -1, 896, + 86, 2354, + -2, 2375, + -1, 897, 86, 2355, -2, 2376, - -1, 897, - 86, 2356, - -2, 2377, -1, 898, - 86, 2357, - -2, 2385, + 86, 2356, + -2, 2384, -1, 899, - 86, 2358, - -2, 2365, + 86, 2357, + -2, 2364, -1, 900, - 86, 2359, - -2, 2374, + 86, 2358, + -2, 2373, -1, 901, + 86, 2359, + -2, 2385, + -1, 902, 86, 2360, -2, 2386, - -1, 902, - 86, 2361, - -2, 2387, -1, 903, - 86, 2362, - -2, 2392, + 86, 2361, + -2, 2391, -1, 904, + 86, 2362, + -2, 2396, + -1, 905, 86, 2363, -2, 2397, - -1, 905, - 86, 2364, - -2, 2398, -1, 906, - 86, 1791, - -2, 2222, + 86, 1790, + -2, 2221, -1, 907, - 86, 1792, - -2, 1996, + 86, 1791, + -2, 1995, -1, 908, - 86, 1793, - -2, 2231, + 86, 1792, + -2, 2230, -1, 909, - 86, 1794, - -2, 2009, + 86, 1793, + -2, 2008, -1, 911, - 86, 1797, - -2, 2018, + 86, 1796, + -2, 2017, -1, 913, - 86, 1799, - -2, 2255, + 86, 1798, + -2, 2254, -1, 915, - 86, 1802, - -2, 2039, + 86, 1801, + -2, 2038, -1, 917, - 86, 1804, - -2, 2267, - -1, 918, - 86, 1805, + 86, 1803, -2, 2266, + -1, 918, + 86, 1804, + -2, 2265, -1, 919, - 86, 1806, - -2, 2086, + 86, 1805, + -2, 2085, -1, 920, - 86, 1807, - -2, 2179, + 86, 1806, + -2, 2178, -1, 923, - 86, 1810, - -2, 2278, + 86, 1809, + -2, 2277, -1, 925, - 86, 1812, - -2, 2281, + 86, 1811, + -2, 2280, -1, 926, - 86, 1813, - -2, 2283, + 86, 1812, + -2, 2282, -1, 927, - 86, 1816, - -2, 2291, + 86, 1815, + -2, 2290, -1, 928, - 86, 1817, - -2, 2164, + 86, 1816, + -2, 2163, -1, 929, - 86, 1818, - -2, 2209, + 86, 1817, + -2, 2208, -1, 930, - 86, 1819, - -2, 2174, + 86, 1818, + -2, 2173, -1, 931, - 86, 1820, - -2, 2199, + 86, 1819, + -2, 2198, -1, 942, + 86, 1699, + -2, 2387, + -1, 943, 86, 1700, -2, 2388, - -1, 943, + -1, 944, 86, 1701, -2, 2389, - -1, 944, - 86, 1702, - -2, 2390, - -1, 1053, + -1, 1048, 487, 695, 488, 695, -2, 661, - -1, 1106, - 128, 1996, - 139, 1996, - 159, 1996, - -2, 1968, - -1, 1228, + -1, 1101, + 128, 1995, + 139, 1995, + 159, 1995, + -2, 1967, + -1, 1223, 22, 868, -2, 815, - -1, 1339, + -1, 1334, 11, 839, 22, 839, - -2, 1568, - -1, 1428, + -2, 1567, + -1, 1423, 22, 868, -2, 815, - -1, 1800, + -1, 1794, + 86, 1866, + -2, 2180, + -1, 1795, 86, 1867, -2, 2181, - -1, 1801, - 86, 1868, - -2, 2182, - -1, 2449, + -1, 2437, 87, 1055, -2, 1061, - -1, 2465, - 111, 1237, - 155, 1237, - 195, 1237, - 198, 1237, - 288, 1237, - -2, 1230, - -1, 2642, + -1, 2452, + 111, 1236, + 155, 1236, + 195, 1236, + 198, 1236, + 288, 1236, + -2, 1229, + -1, 2637, 11, 839, 22, 839, -2, 982, - -1, 2676, - 87, 1954, - 160, 1954, - -2, 2166, - -1, 2677, - 87, 1954, - 160, 1954, + -1, 2671, + 87, 1953, + 160, 1953, -2, 2165, - -1, 2678, + -1, 2672, + 87, 1953, + 160, 1953, + -2, 2164, + -1, 2673, + 87, 1929, + 160, 1929, + -2, 2151, + -1, 2674, 87, 1930, 160, 1930, - -2, 2152, - -1, 2679, + -2, 2156, + -1, 2675, 87, 1931, 160, 1931, - -2, 2157, - -1, 2680, + -2, 2073, + -1, 2676, 87, 1932, 160, 1932, - -2, 2074, - -1, 2681, + -2, 2066, + -1, 2677, 87, 1933, 160, 1933, - -2, 2067, - -1, 2682, + -2, 1983, + -1, 2678, 87, 1934, 160, 1934, - -2, 1984, - -1, 2683, + -2, 2153, + -1, 2679, 87, 1935, 160, 1935, - -2, 2154, - -1, 2684, + -2, 2071, + -1, 2680, 87, 1936, 160, 1936, - -2, 2072, - -1, 2685, + -2, 2065, + -1, 2681, 87, 1937, 160, 1937, - -2, 2066, - -1, 2686, - 87, 1938, - 160, 1938, + -2, 2053, + -1, 2682, + 87, 1953, + 160, 1953, -2, 2054, - -1, 2687, - 87, 1954, - 160, 1954, + -1, 2683, + 87, 1953, + 160, 1953, -2, 2055, + -1, 2685, + 87, 1942, + 160, 1942, + -2, 2198, + -1, 2686, + 87, 1919, + 160, 1919, + -2, 2183, + -1, 2687, + 87, 1951, + 160, 1951, + -2, 2154, -1, 2688, - 87, 1954, - 160, 1954, - -2, 2056, + 87, 1951, + 160, 1951, + -2, 2182, + -1, 2689, + 87, 1951, + 160, 1951, + -2, 2018, -1, 2690, - 87, 1943, - 160, 1943, - -2, 2199, + 87, 1949, + 160, 1949, + -2, 2173, -1, 2691, - 87, 1920, - 160, 1920, - -2, 2184, + 87, 1946, + 160, 1946, + -2, 2043, -1, 2692, - 87, 1952, - 160, 1952, - -2, 2155, + 86, 1900, + 87, 1900, + 160, 1900, + 422, 1900, + 423, 1900, + 424, 1900, + -2, 1982, -1, 2693, - 87, 1952, - 160, 1952, - -2, 2183, - -1, 2694, - 87, 1952, - 160, 1952, - -2, 2019, - -1, 2695, - 87, 1950, - 160, 1950, - -2, 2174, - -1, 2696, - 87, 1947, - 160, 1947, - -2, 2044, - -1, 2697, 86, 1901, 87, 1901, 160, 1901, 422, 1901, 423, 1901, 424, 1901, - -2, 1983, - -1, 2698, + -2, 1984, + -1, 2694, 86, 1902, 87, 1902, 160, 1902, 422, 1902, 423, 1902, 424, 1902, - -2, 1985, + -2, 2226, + -1, 2695, + 86, 1904, + 87, 1904, + 160, 1904, + 422, 1904, + 423, 1904, + 424, 1904, + -2, 2155, + -1, 2696, + 86, 1906, + 87, 1906, + 160, 1906, + 422, 1906, + 423, 1906, + 424, 1906, + -2, 2134, + -1, 2697, + 86, 1908, + 87, 1908, + 160, 1908, + 422, 1908, + 423, 1908, + 424, 1908, + -2, 2072, + -1, 2698, + 86, 1910, + 87, 1910, + 160, 1910, + 422, 1910, + 423, 1910, + 424, 1910, + -2, 2049, -1, 2699, - 86, 1903, - 87, 1903, - 160, 1903, - 422, 1903, - 423, 1903, - 424, 1903, - -2, 2227, - -1, 2700, - 86, 1905, - 87, 1905, - 160, 1905, - 422, 1905, - 423, 1905, - 424, 1905, - -2, 2156, - -1, 2701, - 86, 1907, - 87, 1907, - 160, 1907, - 422, 1907, - 423, 1907, - 424, 1907, - -2, 2135, - -1, 2702, - 86, 1909, - 87, 1909, - 160, 1909, - 422, 1909, - 423, 1909, - 424, 1909, - -2, 2073, - -1, 2703, 86, 1911, 87, 1911, 160, 1911, @@ -1752,1027 +1760,813 @@ var yyExca = [...]int{ 423, 1911, 424, 1911, -2, 2050, + -1, 2700, + 86, 1913, + 87, 1913, + 160, 1913, + 422, 1913, + 423, 1913, + 424, 1913, + -2, 1981, + -1, 2701, + 87, 1956, + 160, 1956, + 422, 1956, + 423, 1956, + 424, 1956, + -2, 2023, + -1, 2702, + 87, 1956, + 160, 1956, + 422, 1956, + 423, 1956, + 424, 1956, + -2, 2039, + -1, 2703, + 87, 1959, + 160, 1959, + 422, 1959, + 423, 1959, + 424, 1959, + -2, 2019, -1, 2704, - 86, 1912, - 87, 1912, - 160, 1912, - 422, 1912, - 423, 1912, - 424, 1912, - -2, 2051, + 87, 1959, + 160, 1959, + 422, 1959, + 423, 1959, + 424, 1959, + -2, 2088, -1, 2705, - 86, 1914, - 87, 1914, - 160, 1914, - 422, 1914, - 423, 1914, - 424, 1914, - -2, 1982, - -1, 2706, - 87, 1957, - 160, 1957, - 422, 1957, - 423, 1957, - 424, 1957, - -2, 2024, - -1, 2707, - 87, 1957, - 160, 1957, - 422, 1957, - 423, 1957, - 424, 1957, - -2, 2040, - -1, 2708, - 87, 1960, - 160, 1960, - 422, 1960, - 423, 1960, - 424, 1960, - -2, 2020, - -1, 2709, - 87, 1960, - 160, 1960, - 422, 1960, - 423, 1960, - 424, 1960, - -2, 2089, - -1, 2710, - 87, 1957, - 160, 1957, - 422, 1957, - 423, 1957, - 424, 1957, - -2, 2117, - -1, 2956, - 111, 1237, - 155, 1237, - 195, 1237, - 198, 1237, - 288, 1237, - -2, 1231, - -1, 2976, + 87, 1956, + 160, 1956, + 422, 1956, + 423, 1956, + 424, 1956, + -2, 2116, + -1, 2950, + 111, 1236, + 155, 1236, + 195, 1236, + 198, 1236, + 288, 1236, + -2, 1230, + -1, 2970, 84, 759, 160, 759, - -2, 1442, - -1, 3436, - 198, 1237, - 312, 1531, - -2, 1503, - -1, 3478, + -2, 1441, + -1, 3429, + 198, 1236, + 312, 1530, + -2, 1502, + -1, 3471, 11, 839, 22, 839, 87, 832, - -2, 1568, - -1, 3661, - 111, 1237, - 155, 1237, - 195, 1237, - 198, 1237, - -2, 1383, - -1, 3664, - 111, 1237, - 155, 1237, - 195, 1237, - 198, 1237, - -2, 1383, - -1, 3676, + -2, 1567, + -1, 3653, + 111, 1236, + 155, 1236, + 195, 1236, + 198, 1236, + -2, 1382, + -1, 3656, + 111, 1236, + 155, 1236, + 195, 1236, + 198, 1236, + -2, 1382, + -1, 3668, 84, 759, 160, 759, - -2, 1442, - -1, 3697, - 198, 1237, - 312, 1531, - -2, 1504, - -1, 3835, + -2, 1441, + -1, 3690, + 198, 1236, + 312, 1530, + -2, 1503, + -1, 3828, 11, 839, 22, 839, - -2, 1568, - -1, 3880, - 111, 1237, - 155, 1237, - 195, 1237, - 198, 1237, - -2, 1384, - -1, 3906, - 87, 1345, - 160, 1345, - -2, 1237, - -1, 4068, - 87, 1345, - 160, 1345, - -2, 1237, - -1, 4249, + -2, 1567, + -1, 3871, + 111, 1236, + 155, 1236, + 195, 1236, + 198, 1236, + -2, 1383, + -1, 3897, + 87, 1344, + 160, 1344, + -2, 1236, + -1, 4058, + 87, 1344, + 160, 1344, + -2, 1236, + -1, 4241, + 87, 1348, + 160, 1348, + -2, 1236, + -1, 4300, 87, 1349, 160, 1349, - -2, 1237, - -1, 4307, - 87, 1350, - 160, 1350, - -2, 1237, + -2, 1236, } const yyPrivate = 57344 -const yyLast = 59505 +const yyLast = 59489 var yyAct = [...]int{ - 816, 792, 4361, 818, 4329, 3008, 232, 4353, 1701, 3682, - 4253, 1780, 3786, 4259, 2080, 4260, 4068, 4252, 4141, 2713, - 3422, 4164, 3456, 801, 4117, 3325, 4200, 4046, 3541, 3002, - 3934, 4012, 3711, 794, 4108, 3327, 3542, 1375, 4067, 4142, - 3970, 1541, 846, 1840, 3868, 3005, 2910, 675, 3791, 3642, - 1229, 3781, 1105, 4037, 219, 3, 37, 4118, 4120, 3647, - 2022, 1547, 1827, 3431, 3698, 694, 3887, 700, 700, 1842, - 1223, 2841, 2979, 700, 718, 727, 3392, 2520, 727, 1612, - 1783, 3877, 3850, 3665, 3377, 3882, 1776, 3353, 3539, 2185, - 3127, 3128, 3129, 148, 3600, 3634, 2182, 3380, 3031, 70, - 2199, 3097, 3451, 3440, 3667, 3475, 745, 217, 3433, 3124, - 2147, 2918, 2222, 3591, 2804, 3196, 2636, 2297, 1845, 2672, - 3524, 2254, 3503, 2944, 2040, 3115, 3343, 3360, 3354, 3358, - 724, 2523, 2477, 1605, 736, 740, 2769, 3157, 3439, 1219, - 3402, 3356, 3355, 3351, 36, 2957, 784, 2418, 2281, 3310, - 2293, 2417, 789, 2745, 2262, 2674, 3245, 2727, 2178, 2637, - 1679, 980, 1943, 1686, 2263, 2255, 1694, 2227, 1690, 1723, - 1691, 2292, 2151, 2620, 2933, 2928, 3033, 1504, 1021, 2521, - 2148, 2615, 3013, 2070, 2971, 228, 8, 227, 7, 2465, - 6, 1998, 2670, 1774, 1841, 2476, 2294, 2327, 1167, 1653, - 1590, 1584, 693, 1099, 1470, 783, 1814, 793, 675, 1512, - 2456, 2039, 2516, 1834, 1765, 2459, 1621, 2278, 790, 1245, - 802, 2261, 1705, 2258, 2243, 1773, 1660, 733, 1994, 1098, - 1589, 1779, 232, 2616, 232, 2644, 1158, 1159, 1997, 791, - 709, 1526, 23, 700, 1020, 1586, 1644, 1542, 946, 1530, - 674, 1846, 742, 24, 25, 17, 1062, 1550, 743, 218, - 10, 15, 1138, 997, 1450, 214, 1048, 1003, 1018, 210, - 696, 2301, 1426, 739, 726, 27, 1376, 948, 949, 4129, - 4034, 1551, 215, 66, 206, 176, 33, 1307, 1308, 1309, - 1306, 2885, 2885, 712, 2885, 1155, 2646, 2553, 3679, 3550, - 3213, 207, 3409, 3212, 3836, 1111, 2311, 3650, 198, 1224, - 1225, 1114, 208, 1011, 3534, 1012, 2792, 1516, 1307, 1308, - 1309, 1306, 2733, 2731, 1702, 1307, 1308, 1309, 1306, 2730, - 1956, 147, 1667, 2728, 1663, 722, 16, 1150, 701, 1154, - 705, 1156, 1151, 216, 695, 2416, 133, 1588, 1414, 723, - 14, 1445, 731, 4095, 992, 211, 1113, 968, 966, 1151, - 720, 2714, 1151, 1508, 1509, 1510, 1716, 3320, 1006, 1224, - 1002, 2422, 1957, 2426, 1448, 3303, 3305, 3300, 3302, 4341, - 1564, 5, 1950, 1441, 1665, 1307, 1308, 1309, 1306, 3779, - 215, 66, 206, 176, 3192, 3190, 2232, 4103, 2877, 2875, - 3977, 1084, 8, 3971, 7, 3782, 3540, 1149, 2277, 207, - 719, 1307, 1308, 1309, 1306, 1370, 198, 4122, 2257, 947, - 208, 2767, 3274, 3341, 721, 2249, 983, 3824, 2561, 2595, - 2840, 4367, 156, 157, 4116, 158, 159, 4338, 3985, 147, - 160, 3822, 2879, 161, 1133, 958, 4053, 1461, 1305, 3797, - 1269, 215, 215, 4288, 133, 215, 2467, 3851, 3855, 2778, - 3666, 3221, 2786, 211, 2298, 215, 967, 965, 2468, 1700, - 4114, 785, 215, 4021, 1709, 2964, 3983, 4175, 3625, 2822, - 2433, 3620, 3344, 215, 2447, 1629, 1880, 1455, 1109, 1110, - 4054, 1721, 1454, 1451, 1453, 968, 966, 1115, 738, 2173, - 1714, 1008, 3272, 1001, 1706, 2130, 175, 204, 213, 205, - 131, 1462, 1005, 1004, 147, 774, 1134, 215, 776, 2309, - 1496, 1718, 1713, 775, 211, 2962, 1959, 1970, 1708, 203, - 197, 196, 3216, 993, 774, 2033, 72, 776, 211, 1968, - 156, 157, 775, 158, 159, 1720, 3122, 215, 160, 1077, - 1075, 161, 1076, 1000, 155, 774, 211, 2460, 776, 2664, - 1304, 959, 4023, 775, 3165, 3166, 3204, 2162, 2163, 3304, - 785, 3301, 1010, 2651, 2195, 2965, 2650, 999, 2665, 2652, - 1080, 998, 937, 1479, 936, 938, 939, 986, 940, 941, - 211, 1128, 1123, 1118, 1122, 1126, 147, 199, 200, 201, - 1975, 1976, 1591, 3164, 1593, 2161, 991, 1477, 1507, 963, - 215, 66, 206, 176, 175, 204, 213, 205, 131, 1131, - 211, 1560, 2601, 1121, 1561, 2600, 3324, 1548, 1549, 1284, - 1071, 3426, 1285, 989, 2746, 2054, 2930, 203, 197, 196, - 3424, 1666, 1664, 1782, 72, 1302, 2931, 1108, 209, 1107, - 1538, 2398, 2880, 1085, 215, 66, 206, 176, 1766, 2909, - 1287, 1770, 155, 2905, 4263, 4264, 2031, 4106, 4125, 143, - 4124, 1009, 4123, 202, 1129, 144, 1297, 3807, 1574, 3543, - 1081, 4125, 4214, 211, 4224, 1769, 4124, 4213, 215, 66, - 206, 176, 4287, 1248, 1251, 2929, 1132, 990, 700, 700, - 3197, 215, 66, 206, 176, 199, 200, 201, 1546, 700, - 1233, 4205, 1545, 1548, 1549, 215, 66, 206, 176, 4123, - 4212, 4333, 4334, 1119, 3543, 1563, 2179, 211, 4202, 727, - 727, 1258, 145, 700, 2907, 1478, 4202, 2773, 2902, 4109, - 4110, 4111, 4112, 3974, 1083, 65, 3198, 1130, 3199, 1248, - 1251, 3826, 1234, 1240, 2313, 3635, 209, 4138, 3052, 3559, - 1282, 211, 2169, 1761, 2305, 3640, 1732, 3373, 1009, 2603, - 724, 724, 724, 2967, 211, 2610, 3235, 143, 1007, 1232, - 1237, 202, 3860, 144, 2455, 2878, 2240, 1120, 211, 1771, - 2906, 4226, 1786, 3116, 2903, 1673, 1672, 2310, 67, 2915, - 3723, 1347, 1577, 1971, 4025, 4026, 1444, 2783, 4128, 4033, - 1111, 2032, 202, 1768, 3554, 1969, 1114, 996, 3233, 3823, - 3562, 3239, 985, 2884, 1283, 1082, 2936, 1225, 1299, 1161, - 1272, 1225, 2559, 153, 212, 3806, 154, 3367, 1225, 4262, - 145, 1226, 4030, 3808, 177, 3993, 3780, 3994, 1233, 63, - 3191, 2193, 2194, 65, 1536, 3110, 1300, 1301, 2606, 2607, - 2605, 1113, 3214, 3964, 3857, 2299, 3378, 2667, 1127, 1079, - 2423, 1958, 2300, 1264, 2299, 2594, 1151, 2597, 3428, 2299, - 4231, 1379, 1243, 3820, 1151, 1151, 3798, 3595, 2596, 1111, - 3371, 3738, 1480, 3211, 1151, 1114, 1151, 1562, 1225, 1151, - 2332, 3996, 2312, 2128, 1124, 1286, 67, 1125, 1295, 1296, - 1250, 1249, 1117, 961, 2613, 1294, 2172, 1380, 692, 4052, - 146, 46, 2729, 4298, 3454, 984, 3455, 64, 982, 1785, - 1784, 5, 3390, 3995, 1767, 2908, 3965, 4058, 3735, 2904, - 1113, 153, 212, 4050, 154, 3403, 3368, 3369, 1668, 4157, - 150, 151, 177, 3365, 152, 1289, 4152, 63, 1290, 2972, - 1252, 3604, 3370, 1447, 3606, 1449, 1250, 1249, 1221, 962, - 969, 947, 1078, 3984, 729, 722, 722, 722, 1466, 1228, - 3452, 3453, 1469, 1227, 1110, 2467, 1292, 1476, 728, 723, - 723, 723, 3825, 1261, 2876, 3120, 1424, 3379, 1715, 1429, - 720, 720, 720, 1256, 1257, 2462, 4143, 1236, 1238, 1241, - 4159, 1263, 3856, 177, 177, 1135, 2787, 177, 1116, 4024, - 1021, 2316, 2318, 2319, 1348, 3728, 1452, 177, 146, 46, - 3311, 1960, 1548, 1549, 177, 64, 1343, 1344, 1345, 1346, - 2129, 1548, 1549, 4228, 3683, 177, 3828, 3829, 3830, 3423, - 719, 719, 719, 777, 778, 779, 780, 781, 150, 151, - 725, 4165, 152, 2539, 721, 721, 721, 3007, 3690, 2519, - 2542, 1525, 777, 778, 779, 780, 781, 2444, 700, 177, - 1573, 3616, 4018, 1579, 3379, 2180, 1288, 700, 3842, 1544, - 3613, 675, 675, 777, 778, 779, 780, 781, 1537, 3336, - 1242, 675, 675, 3374, 725, 1616, 1616, 2593, 700, 177, - 3739, 2609, 4059, 3236, 964, 3993, 1277, 3994, 4051, 1279, - 1341, 4225, 4137, 3429, 3925, 1293, 67, 2541, 3117, 4373, - 727, 1645, 694, 3988, 1239, 1391, 1392, 1656, 725, 4233, - 4234, 4027, 3458, 2571, 1792, 1795, 1796, 1280, 4356, 3615, - 1291, 725, 232, 4229, 4230, 1793, 4237, 4236, 4235, 4238, - 1623, 675, 2935, 2570, 3794, 725, 3053, 2667, 3054, 3055, - 67, 3996, 177, 3081, 2305, 3861, 3366, 3989, 3914, 2170, - 1762, 4119, 1011, 1254, 1012, 1618, 2540, 1575, 1472, 1473, - 1474, 1614, 1614, 2942, 1483, 1484, 1485, 1486, 1487, 3920, - 1489, 2591, 2592, 3995, 67, 2026, 1495, 1578, 3003, 3004, - 1601, 3007, 1600, 1698, 1072, 1430, 177, 67, 1703, 2939, - 2940, 1428, 2526, 1540, 1539, 1712, 1262, 1523, 1522, 1521, - 4166, 67, 4072, 4038, 2938, 1457, 1610, 1611, 1515, 2948, - 2952, 2953, 2954, 2949, 2951, 2950, 1524, 1273, 3432, 1220, - 177, 3452, 3453, 1534, 1744, 3294, 1482, 2562, 3387, 1747, - 4251, 1553, 1554, 177, 1556, 1557, 3668, 1558, 2519, 1616, - 3777, 1616, 1233, 1275, 1459, 1471, 1707, 177, 1722, 1338, - 2536, 738, 2317, 1719, 4199, 1278, 1281, 1506, 1503, 4357, - 1587, 1532, 1533, 1269, 1595, 1597, 724, 3601, 1074, 724, - 724, 1073, 2466, 3749, 1608, 1609, 1565, 1566, 3159, 3161, - 3479, 1274, 1755, 3448, 3175, 3176, 3315, 1552, 3546, 1114, - 1555, 1527, 1531, 1531, 1531, 2779, 1114, 2656, 2599, 1677, - 2557, 1680, 1681, 2302, 1646, 1674, 2168, 3457, 2145, 1616, - 1468, 1781, 3494, 1682, 1683, 1488, 1527, 1527, 1518, 3104, - 3481, 3238, 1599, 1688, 1689, 2890, 1233, 1844, 2529, 4232, - 1494, 1711, 1962, 2525, 1669, 4071, 1493, 2445, 2527, 1875, - 1876, 1893, 1879, 1492, 1481, 1491, 1624, 1696, 1086, 1693, - 1894, 1630, 1697, 1268, 705, 732, 3628, 1637, 2328, 974, - 3449, 3388, 1276, 1901, 1013, 1903, 3592, 1904, 1905, 1906, - 1657, 3927, 2134, 2132, 1643, 1794, 2133, 1015, 1016, 1017, - 3050, 1658, 3935, 3936, 3937, 3941, 3939, 3940, 3942, 3938, - 2761, 1778, 2528, 4354, 4355, 1828, 2314, 2315, 3082, 3084, - 3085, 3086, 3083, 3916, 3247, 3246, 1501, 3915, 3921, 3922, - 978, 1010, 4250, 1233, 2899, 976, 975, 3989, 2437, 1961, - 1465, 3990, 1978, 1964, 1979, 1966, 1456, 2439, 2438, 700, - 700, 700, 1463, 1464, 981, 1797, 1941, 1759, 1980, 1982, - 3818, 1983, 3608, 1985, 1986, 1987, 1072, 1725, 694, 1645, - 1730, 1878, 3160, 1733, 1995, 1616, 2000, 2001, 3317, 2003, - 1579, 700, 2436, 2530, 2535, 1977, 700, 970, 2533, 1616, - 1775, 722, 2583, 1021, 722, 722, 2023, 1739, 1740, 1753, - 1749, 1752, 1952, 971, 3888, 723, 1748, 1944, 723, 723, - 1772, 1616, 977, 4369, 4375, 4382, 720, 1579, 1777, 720, - 720, 1754, 718, 1731, 1517, 1892, 1734, 1735, 1763, 1802, - 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, - 1813, 974, 2053, 1816, 3547, 1825, 1826, 2977, 1458, 1460, - 1074, 2060, 2060, 1073, 1579, 4363, 1579, 1579, 3072, 3073, - 700, 700, 2221, 2127, 1823, 1824, 719, 1995, 2138, 719, - 719, 1616, 2142, 2143, 2891, 4209, 1072, 2158, 2341, 675, - 721, 1963, 1751, 721, 721, 1764, 2307, 3450, 1947, 3297, - 1743, 1087, 973, 675, 1902, 1616, 1750, 976, 975, 1742, - 215, 66, 206, 176, 2004, 1267, 1305, 2057, 1307, 1308, - 1309, 1306, 3500, 2002, 2921, 3408, 1307, 1308, 1309, 1306, - 2556, 3295, 2198, 700, 1995, 1616, 2667, 2204, 4364, 700, - 700, 700, 736, 736, 4351, 1907, 4309, 2922, 2923, 2214, - 2215, 2216, 2217, 4274, 4271, 3496, 2223, 2082, 1307, 1308, - 1309, 1306, 4265, 232, 2340, 2196, 232, 232, 2136, 232, - 1074, 4247, 3298, 1073, 1942, 2366, 2635, 1948, 2365, 1230, - 1989, 1517, 2634, 211, 1991, 1992, 1993, 892, 2063, 1746, - 1883, 1884, 1885, 1230, 1269, 3071, 2006, 2007, 2008, 2009, - 2978, 2978, 4193, 1899, 3296, 1266, 1900, 2188, 2189, 1893, - 1893, 2265, 2748, 2526, 2529, 2219, 1999, 4310, 3631, 4310, - 2458, 1893, 1893, 1913, 1914, 1990, 4275, 4272, 2283, 2165, - 2015, 2167, 2037, 2038, 4192, 2342, 4185, 2174, 1269, 2206, - 2207, 2208, 2186, 2187, 4248, 4160, 2019, 2020, 1940, 2047, - 2048, 1305, 2034, 2028, 2029, 2181, 951, 952, 953, 954, - 4148, 2023, 3561, 2036, 2276, 1616, 2296, 2062, 1707, 2058, - 2231, 2203, 2042, 2234, 2235, 1305, 2237, 2064, 2065, 2526, - 2529, 2410, 1267, 2267, 2778, 2046, 2499, 3462, 2041, 3460, - 2043, 2044, 2159, 724, 2059, 2061, 3347, 2051, 1307, 1308, - 1309, 1306, 1111, 1527, 2050, 2135, 3309, 1305, 1114, 2342, - 2635, 1114, 2141, 3307, 1111, 2635, 3178, 1531, 2307, 2140, - 1114, 2290, 2146, 3500, 2881, 2164, 2768, 2166, 1305, 1531, - 2027, 2753, 2175, 4149, 175, 204, 213, 205, 2457, 4093, - 2272, 4092, 1425, 4085, 3270, 1866, 4084, 2298, 2160, 2530, - 2512, 2415, 2045, 1113, 2525, 2519, 2524, 203, 2522, 2527, - 2202, 2409, 2201, 2408, 2373, 1113, 1775, 2289, 2052, 2209, - 2210, 2055, 2056, 2260, 2191, 2144, 1502, 1307, 1308, 1309, - 1306, 1908, 1909, 1910, 1911, 2260, 2228, 1915, 1916, 1917, - 1918, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, - 1929, 1930, 1831, 1146, 1147, 1148, 1602, 4083, 956, 786, - 2245, 1111, 4094, 2528, 2481, 2530, 2342, 1114, 3639, 2342, - 2525, 2519, 2524, 2498, 2522, 2527, 2403, 1307, 1308, 1309, - 1306, 2023, 4365, 4082, 2266, 4090, 2514, 1145, 3954, 972, - 1142, 4062, 3679, 2275, 2273, 3182, 951, 952, 953, 954, - 2980, 4061, 2781, 1307, 1308, 1309, 1306, 2287, 2420, 2421, - 2780, 2424, 1113, 2772, 2427, 2506, 2361, 2346, 2288, 700, - 1579, 700, 1579, 2407, 2226, 2285, 4036, 2212, 2291, 2528, - 2342, 1727, 2440, 1307, 1308, 1309, 1306, 1356, 2401, 784, - 1253, 2396, 700, 700, 700, 2304, 1217, 1212, 722, 2404, - 3952, 4009, 4006, 2397, 2399, 2400, 2342, 700, 700, 700, - 700, 2344, 723, 3742, 2307, 1307, 1308, 1309, 1306, 2320, - 2478, 1338, 2329, 720, 2307, 2322, 2484, 1627, 2190, 2338, - 2286, 1862, 2486, 2487, 2488, 1322, 2491, 1579, 1859, 1816, - 2325, 2326, 1861, 1858, 1860, 1864, 1865, 2334, 3744, 2342, - 1863, 3692, 3413, 2812, 819, 829, 3657, 3230, 3584, 2323, - 2324, 2402, 4376, 1579, 820, 3580, 821, 825, 828, 824, - 822, 823, 4337, 719, 1305, 2481, 3470, 3154, 2859, 2554, - 2548, 2728, 1211, 1207, 1208, 1209, 1210, 721, 2817, 1513, - 2816, 2815, 2813, 1514, 2430, 2847, 2432, 2839, 956, 979, - 1139, 1140, 1141, 1144, 4130, 1143, 1321, 1320, 1330, 1331, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1322, 1528, 826, - 2794, 2667, 2776, 2762, 3693, 2368, 2503, 1882, 1881, 3658, - 2505, 3585, 2507, 2485, 2755, 2555, 2750, 2742, 3581, 1152, - 1153, 4035, 2321, 3404, 1157, 700, 2060, 1604, 2740, 3471, - 2635, 2481, 827, 2738, 2639, 2639, 2158, 2639, 2736, 2480, - 2814, 1756, 212, 3532, 1757, 1606, 2412, 2411, 1305, 2380, - 1305, 2379, 177, 2364, 2355, 4153, 1607, 675, 675, 2354, - 2353, 1882, 1881, 2343, 2306, 1233, 1736, 2508, 3981, 2801, - 3918, 1616, 700, 1305, 2448, 2481, 2751, 3917, 1869, 1870, - 1871, 1872, 1873, 1874, 1867, 1868, 700, 2756, 1559, 2751, - 2743, 3903, 1233, 2711, 694, 2518, 2517, 3889, 1379, 4154, - 1656, 2741, 2158, 3671, 3405, 2718, 2737, 2720, 3669, 2722, - 232, 2737, 2481, 2374, 2375, 3864, 2377, 3649, 2598, 1529, - 2410, 1919, 1305, 2384, 1305, 2511, 1305, 1305, 2492, 1111, - 3326, 1603, 1305, 1305, 1380, 1114, 2342, 2307, 1822, 1737, - 2500, 3890, 2653, 3501, 2654, 3492, 2643, 3672, 3406, 3484, - 2758, 2641, 3670, 2645, 1819, 1821, 1818, 2662, 1820, 3472, - 3382, 2675, 3113, 2659, 2660, 3112, 2946, 2531, 2532, 2774, - 2537, 2886, 2296, 2647, 2791, 1912, 2754, 2658, 2270, 1616, - 1113, 1616, 2269, 1616, 2495, 2268, 2669, 2504, 1233, 2501, - 1498, 1513, 2502, 1497, 1235, 1514, 2793, 2229, 3329, 2818, - 2819, 1320, 1330, 1331, 1323, 1324, 1325, 1326, 1327, 1328, - 1329, 1322, 2717, 1307, 1308, 1309, 1306, 2723, 1835, 1531, - 2335, 3329, 1616, 1233, 3535, 3183, 2614, 2825, 1661, 2913, - 2229, 2608, 1835, 2770, 2771, 2493, 2494, 1307, 1308, 1309, - 1306, 2648, 2832, 1309, 1306, 2496, 2497, 1616, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1322, 1984, 2788, 4211, 4008, - 1595, 1597, 4007, 1306, 3930, 2560, 3929, 2784, 2563, 2564, - 2565, 2566, 2567, 2568, 2569, 3200, 3326, 2572, 2573, 2574, - 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2663, 2584, - 2585, 2586, 2587, 2588, 2666, 2589, 2712, 3328, 3042, 2716, - 3040, 2820, 3019, 2888, 2889, 2836, 2837, 2892, 1614, 1307, - 1308, 1309, 1306, 3017, 700, 700, 700, 1325, 1326, 1327, - 1328, 1329, 1322, 3865, 3866, 3909, 2833, 4347, 2766, 1358, - 2868, 1233, 2869, 1614, 2809, 4346, 3858, 4256, 1616, 4372, - 4345, 1579, 1357, 3637, 2790, 4343, 4342, 1579, 2138, 1307, - 1308, 1309, 1306, 2861, 2785, 2863, 2976, 2865, 2866, 4278, - 2732, 2823, 2982, 2799, 1307, 1308, 1309, 1306, 2777, 2984, - 1897, 4246, 2782, 2805, 2764, 2805, 4245, 2775, 4155, 3093, - 2872, 3091, 2911, 4087, 4075, 1898, 4065, 2994, 1313, 1314, - 1315, 1316, 1317, 1318, 1319, 1311, 3859, 1233, 3089, 2945, - 2675, 2795, 2796, 3638, 4371, 3016, 2963, 4055, 3078, 4005, - 1775, 3972, 1233, 1233, 1233, 2060, 2715, 2821, 1233, 2811, - 3026, 3027, 3028, 3029, 1233, 3036, 3892, 3037, 3038, 3891, - 3039, 2958, 3041, 1307, 1308, 1309, 1306, 3684, 2960, 3092, - 3673, 3090, 3533, 3036, 1307, 1308, 1309, 1306, 2798, 1114, - 3636, 3263, 3621, 2803, 3372, 2639, 3226, 3195, 3088, 2995, - 3643, 3194, 2873, 3102, 3076, 2943, 3011, 2834, 3077, 3094, - 3075, 2959, 1307, 1308, 1309, 1306, 3648, 3074, 2082, 3066, - 1661, 3011, 3022, 3023, 3060, 3059, 675, 3025, 1307, 1308, - 1309, 1306, 3058, 3032, 2138, 3057, 2983, 2724, 1233, 2158, - 2158, 2158, 2158, 2158, 2158, 2882, 2985, 2744, 2655, 2925, - 2973, 2927, 2414, 3359, 3262, 1233, 2158, 2248, 2247, 2639, - 3099, 2246, 2242, 2924, 2241, 3010, 2197, 1967, 2797, 2941, - 2357, 1965, 1728, 1443, 3014, 3162, 1215, 1616, 3014, 2966, - 3021, 1307, 1308, 1309, 1306, 8, 2997, 7, 700, 700, - 2981, 2975, 1321, 1320, 1330, 1331, 1323, 1324, 1325, 1326, - 1327, 1328, 1329, 1322, 4028, 4029, 4368, 3130, 4366, 1999, - 1307, 1308, 1309, 1306, 2996, 4348, 2999, 1310, 3787, 1662, - 3012, 4335, 2986, 4297, 3130, 1340, 3105, 4296, 4293, 3018, - 4221, 2991, 2992, 4220, 1350, 1214, 3024, 4013, 4197, 4140, - 2356, 3869, 4134, 4127, 4113, 232, 3150, 4104, 3015, 4079, - 232, 4066, 4074, 4073, 3068, 4032, 3118, 4017, 4015, 3056, - 1359, 4004, 3249, 3973, 3163, 3911, 3873, 1307, 1308, 1309, - 1306, 3862, 1893, 2932, 1893, 831, 149, 3210, 3847, 3846, - 3844, 149, 2993, 1330, 1331, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1322, 3225, 3839, 3837, 3819, 3816, 3108, 1616, - 3813, 3812, 3232, 3114, 3785, 1321, 1320, 1330, 1331, 1323, - 1324, 1325, 1326, 1327, 1328, 1329, 1322, 3783, 3153, 3131, - 3132, 3133, 3134, 3135, 3136, 3147, 3755, 3205, 3151, 3111, - 2842, 2843, 3752, 2987, 3152, 3746, 2848, 3170, 2990, 3217, - 1307, 1308, 1309, 1306, 3098, 3633, 706, 3623, 3167, 149, - 3610, 3179, 3184, 3593, 3572, 3570, 3171, 3188, 1681, 1944, - 3565, 3512, 3490, 3814, 3209, 3489, 3487, 3486, 1682, 1683, - 1114, 3473, 3468, 3048, 3049, 3467, 3383, 1688, 1689, 3811, - 3345, 3339, 1114, 3330, 4374, 3319, 3316, 3314, 3064, 3065, - 1307, 1308, 1309, 1306, 3207, 2419, 1696, 3240, 1693, 3237, - 3215, 1697, 3193, 3169, 3186, 3218, 1307, 1308, 1309, 1306, - 3106, 3103, 3318, 3185, 3100, 700, 1579, 3087, 3079, 3069, - 3067, 3109, 3063, 3234, 3331, 3332, 3333, 3335, 3208, 3337, - 3338, 3810, 3203, 3062, 3201, 3229, 3206, 3222, 3061, 3220, - 2914, 1233, 2900, 2887, 3800, 2883, 2765, 1233, 3799, 3228, - 892, 891, 3009, 3362, 3219, 2441, 2428, 2425, 1307, 1308, - 1309, 1306, 2251, 3376, 3241, 2244, 1955, 1954, 700, 1729, - 3242, 1307, 1308, 1309, 1306, 1307, 1308, 1309, 1306, 1387, - 1383, 3261, 3393, 1233, 3248, 3732, 700, 1112, 700, 1233, - 1233, 1382, 149, 3252, 3253, 3257, 3258, 3567, 2158, 2478, - 3255, 3412, 4323, 1218, 3254, 960, 3256, 149, 1598, 149, - 3348, 4172, 1307, 1308, 1309, 1306, 3011, 4168, 4010, 4000, - 3308, 3999, 2548, 3986, 1307, 1308, 1309, 1306, 3982, 3845, - 215, 3386, 206, 176, 3438, 3815, 3441, 3900, 3441, 3441, - 3322, 3396, 3795, 1233, 3765, 3747, 3664, 3401, 3663, 3661, - 3389, 3630, 3011, 3313, 3312, 3589, 3587, 3586, 3011, 3011, - 3583, 3463, 2958, 3582, 3571, 3569, 1655, 3548, 3538, 1616, - 1616, 3537, 3459, 3523, 3522, 3421, 1111, 3299, 3414, 3364, - 2339, 3416, 1114, 2831, 1114, 3425, 3427, 3349, 3346, 3306, - 1114, 1321, 1320, 1330, 1331, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1322, 211, 1307, 1308, 1309, 1306, 3410, 3268, - 3259, 3251, 3011, 3250, 3244, 3177, 700, 2739, 1114, 2735, - 2734, 2385, 3385, 2378, 3266, 2372, 3395, 1113, 2371, 2370, - 3362, 3411, 3399, 3400, 3407, 2369, 2367, 3437, 3265, 2156, - 2363, 2362, 2360, 1579, 2351, 3264, 2138, 2138, 3464, 3465, - 3446, 1307, 1308, 1309, 1306, 1614, 1614, 3420, 1307, 1308, - 1309, 1306, 2518, 2517, 2858, 1307, 1308, 1309, 1306, 2348, - 2347, 3447, 1307, 1308, 1309, 1306, 3442, 3443, 3477, 2250, - 1307, 1308, 1309, 1306, 1933, 1932, 1931, 3436, 2349, 3461, - 2857, 1307, 1308, 1309, 1306, 1896, 1895, 2856, 1886, 1233, - 1628, 2855, 1626, 2825, 4322, 4277, 699, 699, 4191, 1377, - 4167, 3536, 707, 2854, 4099, 4096, 3469, 1307, 1308, 1309, - 1306, 1114, 2853, 3419, 1307, 1308, 1309, 1306, 1307, 1308, - 1309, 1306, 4081, 4076, 3967, 1787, 1788, 1789, 1790, 1791, - 1307, 1308, 1309, 1306, 3444, 2852, 3966, 3474, 3946, 1307, - 1308, 1309, 1306, 2337, 215, 3497, 3498, 3483, 3482, 700, - 3488, 3928, 3924, 3491, 3902, 3485, 3886, 3495, 2675, 3766, - 3763, 3730, 1307, 1308, 1309, 1306, 3508, 1832, 3509, 3729, - 3726, 1836, 1837, 1838, 1839, 1307, 1308, 1309, 1306, 3275, - 3276, 1877, 2851, 3725, 3691, 3277, 3278, 3279, 3280, 1887, - 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, - 3291, 3519, 3520, 3521, 3516, 2850, 3688, 3686, 3526, 1307, - 1308, 1309, 1306, 3651, 3415, 3609, 3605, 211, 737, 3417, - 3418, 1307, 1308, 1309, 1306, 3342, 3260, 2223, 3597, 1676, - 1687, 3599, 1307, 1308, 1309, 1306, 3549, 2849, 1934, 1935, - 1936, 1937, 1938, 1678, 3611, 1692, 3553, 1945, 3551, 3617, - 3552, 1695, 1684, 3573, 4315, 2846, 1505, 3558, 3141, 3101, - 3095, 3020, 2969, 3607, 1307, 1308, 1309, 1306, 2845, 3618, - 2968, 2961, 707, 3557, 3563, 2926, 2860, 3575, 2844, 3577, - 2749, 3579, 1307, 1308, 1309, 1306, 2657, 2590, 2479, 700, - 2138, 3612, 2450, 3614, 2449, 1307, 1308, 1309, 1306, 2838, - 2413, 3656, 1817, 3602, 2828, 1307, 1308, 1309, 1306, 3477, - 211, 2211, 1951, 1760, 1710, 2805, 1685, 3629, 2639, 2158, - 3676, 2824, 1442, 1427, 3632, 1423, 1307, 1308, 1309, 1306, - 1422, 1307, 1308, 1309, 1306, 1421, 3594, 2030, 3590, 3596, - 1420, 1419, 1418, 3694, 1417, 1416, 1233, 1415, 1307, 1308, - 1309, 1306, 1114, 1414, 1413, 3438, 3499, 2800, 3622, 1233, - 1114, 1412, 1411, 2049, 1410, 1409, 1408, 1114, 1407, 3626, - 1406, 1233, 1405, 3741, 1404, 1403, 1402, 1616, 3515, 149, - 149, 149, 1112, 1401, 1307, 1308, 1309, 1306, 1400, 3644, - 2406, 1399, 3750, 1398, 3655, 3678, 1397, 1396, 1395, 3646, - 1394, 1393, 1390, 3662, 1389, 700, 1388, 2138, 4313, 2405, - 1386, 1233, 1385, 1384, 3627, 3695, 1381, 1307, 1308, 1309, - 1306, 1830, 1374, 1373, 3724, 1945, 1371, 1370, 3734, 3675, - 1945, 1945, 3717, 1369, 3674, 3681, 1307, 1308, 1309, 1306, - 3032, 1368, 1367, 1366, 232, 1365, 1364, 1363, 1307, 1308, - 1309, 1306, 1362, 3756, 1361, 1360, 3743, 1233, 3731, 1355, - 3759, 1339, 3736, 1614, 1354, 1353, 3733, 1352, 1351, 3740, - 1271, 3771, 1216, 4184, 3898, 3504, 3505, 4182, 4180, 4178, - 3130, 2230, 3727, 3745, 2233, 2490, 2464, 2236, 1259, 3751, - 2238, 4261, 3753, 3507, 3480, 3107, 3748, 3758, 2947, 3754, - 2668, 3761, 2253, 3760, 1511, 3757, 3817, 1270, 2624, 2628, - 2629, 2630, 2625, 2633, 2626, 2631, 2023, 3149, 2627, 3831, - 2632, 132, 3146, 3793, 2629, 2630, 3130, 3841, 1321, 1320, - 1330, 1331, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1322, - 3144, 2617, 1233, 3139, 3142, 3145, 2282, 69, 3788, 3143, - 68, 3778, 3789, 3685, 3138, 3687, 3514, 3513, 3510, 3768, - 3148, 3137, 1233, 1616, 1616, 4210, 4115, 3769, 3907, 3393, - 3838, 3381, 3840, 2763, 2752, 1499, 3827, 3224, 2624, 2628, - 2629, 2630, 2625, 2633, 2626, 2631, 3881, 2558, 2627, 3881, - 2632, 3434, 702, 3435, 3652, 3653, 3654, 1233, 3896, 1233, - 3737, 3659, 3660, 3875, 3876, 3870, 3527, 3821, 3899, 2119, - 3901, 3011, 1670, 3834, 2747, 1431, 1616, 3767, 703, 1114, - 1724, 704, 2017, 2018, 3852, 3854, 3872, 2789, 3878, 3853, - 2012, 2013, 2014, 2435, 700, 2434, 1233, 1233, 3677, 3863, - 1233, 1233, 3871, 3555, 3556, 3874, 1704, 3680, 2442, 1614, - 1828, 2331, 2770, 2771, 3884, 2336, 3885, 2267, 3895, 3678, - 3953, 2213, 2131, 2345, 1265, 3948, 1781, 3905, 1781, 3943, - 3843, 1114, 3908, 3357, 2023, 3350, 2998, 3959, 3912, 3932, - 3933, 2970, 2510, 3944, 3945, 3724, 2474, 2021, 2330, 3044, - 3968, 3969, 1988, 3717, 3849, 4326, 3045, 3046, 3047, 4078, - 2352, 3466, 1828, 2611, 1616, 1882, 1881, 2604, 2359, 1438, - 1439, 3956, 1321, 1320, 1330, 1331, 1323, 1324, 1325, 1326, - 1327, 1328, 1329, 1322, 3955, 1436, 1437, 699, 1222, 4001, - 2376, 4002, 2139, 700, 3957, 2381, 2382, 2383, 1231, 3992, - 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, - 1568, 3975, 1434, 1435, 1432, 1433, 1567, 1298, 2271, 3525, - 3518, 2443, 1260, 2284, 3979, 3773, 2025, 4014, 1520, 4016, - 1519, 1490, 1543, 3987, 3991, 2483, 1625, 4284, 4282, 4239, - 706, 4207, 4206, 3980, 4204, 4144, 4100, 3962, 3961, 3790, - 1614, 3897, 3997, 3998, 3784, 3574, 3545, 4047, 3544, 4019, - 3530, 2279, 2543, 2513, 1726, 4041, 3529, 3181, 4020, 3809, - 1517, 3598, 3269, 1233, 4317, 4316, 4316, 149, 3227, 2895, - 3904, 2894, 2893, 4031, 4064, 2350, 1446, 4317, 1255, 3926, - 3910, 4070, 3770, 951, 952, 953, 954, 1230, 1230, 1535, - 77, 2, 4339, 4043, 3833, 4042, 4039, 3793, 4340, 4044, - 1, 2874, 1949, 4060, 4056, 1440, 955, 1233, 950, 1592, - 2649, 2192, 1616, 1620, 3949, 4091, 1321, 1320, 1330, 1331, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1322, 1953, 4077, - 957, 3155, 1781, 3156, 3517, 149, 3158, 2901, 2303, 1114, - 3119, 2602, 149, 2454, 3375, 1500, 1014, 1888, 1741, 1247, - 4086, 1738, 3893, 3894, 1246, 149, 1244, 1833, 149, 149, - 3801, 833, 3802, 2256, 3096, 3070, 3958, 4325, 4126, 4360, - 4276, 149, 4121, 4328, 1758, 817, 4101, 4198, 4105, 4280, - 4107, 3978, 4136, 2308, 1303, 3202, 1044, 874, 844, 1372, - 1717, 4088, 3273, 3271, 843, 4131, 3950, 4132, 1614, 3641, - 3951, 1321, 1320, 1330, 1331, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1322, 2937, 3963, 4145, 3174, 4049, 1045, 2239, - 4102, 3976, 1671, 1675, 2509, 4133, 4057, 4163, 3906, 3430, - 3006, 1699, 4158, 3689, 3805, 1945, 3803, 1945, 3804, 4139, - 744, 2171, 1233, 4162, 4147, 673, 1096, 3947, 2252, 2489, - 1616, 4187, 4227, 4080, 994, 4188, 1945, 1945, 4156, 3624, - 4195, 4177, 4179, 4181, 4183, 2463, 995, 4161, 987, 2956, - 2955, 1798, 1312, 4196, 1815, 4170, 3292, 3293, 1349, 788, - 2333, 2934, 3712, 3168, 76, 4176, 75, 74, 73, 1655, - 240, 835, 239, 4011, 3867, 4194, 4330, 814, 813, 812, - 811, 810, 4203, 4201, 809, 2622, 2623, 1616, 2621, 2619, - 4047, 2618, 4215, 4217, 4222, 2153, 2152, 3180, 3528, 2218, - 2220, 4219, 4216, 4218, 3391, 3035, 4249, 3030, 2071, 4186, - 2069, 1583, 4257, 2538, 4240, 2545, 1614, 4242, 2757, 2068, - 2760, 4258, 3564, 3796, 4243, 4244, 4173, 4174, 3923, 3080, - 3792, 2011, 2534, 2088, 3051, 2085, 2084, 1571, 3043, 3919, - 4273, 3913, 2116, 4045, 3880, 3696, 1585, 3697, 3703, 4266, - 2473, 4267, 1166, 4268, 1162, 4269, 1164, 4283, 4270, 4285, - 4286, 1165, 1163, 2810, 3493, 2515, 4241, 1622, 4281, 4279, - 3352, 2920, 2919, 1614, 2917, 4121, 4289, 2916, 1475, 4135, - 1233, 4292, 4290, 4223, 4291, 2802, 3848, 2673, 2808, 2671, - 4089, 1213, 3506, 3502, 3323, 2264, 3511, 3140, 2280, 2826, - 2827, 4305, 3223, 2154, 4070, 2150, 4307, 2829, 2830, 4308, - 4306, 2149, 1137, 1136, 4314, 4312, 4324, 1652, 4332, 4311, - 3603, 4331, 45, 2835, 3121, 4318, 4319, 4320, 4321, 2612, - 4022, 4097, 4098, 2016, 988, 2461, 111, 4336, 41, 4344, - 127, 110, 193, 60, 192, 1233, 59, 125, 190, 4303, - 58, 105, 2862, 104, 2864, 4350, 4349, 2867, 124, 1787, - 1945, 4352, 4162, 1032, 188, 4358, 57, 224, 4362, 223, - 226, 4359, 225, 222, 2725, 2726, 221, 1659, 220, 4208, - 4146, 3883, 2157, 4190, 945, 4150, 4151, 44, 43, 194, - 42, 112, 61, 40, 39, 2482, 4370, 3340, 2024, 3619, - 2912, 2446, 38, 34, 13, 4332, 4378, 12, 4331, 4377, - 35, 22, 21, 1745, 1781, 20, 4171, 4362, 4379, 26, - 32, 31, 142, 4383, 1569, 1570, 141, 1572, 30, 140, - 1576, 139, 1580, 1581, 1582, 1028, 1029, 138, 137, 136, - 135, 134, 29, 19, 52, 51, 1072, 50, 2988, 2989, - 49, 48, 47, 9, 130, 128, 123, 121, 149, 28, - 122, 149, 149, 119, 149, 120, 1631, 1632, 1633, 1634, - 1635, 1636, 115, 1638, 1639, 1640, 1641, 1642, 114, 113, - 108, 1648, 1649, 1650, 1651, 756, 755, 762, 752, 106, - 88, 87, 86, 101, 100, 99, 98, 97, 759, 760, - 96, 761, 765, 94, 1112, 746, 95, 149, 1043, 85, - 84, 83, 82, 81, 116, 770, 1112, 103, 109, 107, - 92, 102, 93, 91, 1333, 90, 1337, 89, 80, 79, - 1074, 78, 149, 1073, 118, 117, 129, 195, 62, 174, - 173, 172, 1334, 1336, 1332, 3701, 1335, 1321, 1320, 1330, - 1331, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1322, 171, - 170, 774, 168, 169, 776, 167, 4294, 4295, 166, 775, - 165, 164, 1058, 4299, 4300, 4301, 4302, 163, 162, 53, - 54, 1033, 55, 56, 184, 183, 3713, 185, 187, 189, - 186, 191, 181, 179, 182, 180, 178, 1945, 71, 3704, - 11, 126, 18, 4, 0, 0, 0, 0, 1035, 0, - 3699, 0, 0, 1339, 0, 3721, 3722, 0, 1972, 1973, - 1974, 3700, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2005, 0, 0, 0, 0, 2010, 0, 0, 3705, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3187, 0, - 3189, 0, 0, 0, 0, 0, 1057, 1055, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1945, - 0, 0, 0, 0, 1945, 0, 0, 0, 0, 747, - 749, 748, 0, 1054, 0, 0, 0, 0, 2282, 0, - 754, 0, 0, 0, 0, 1027, 0, 0, 0, 2066, - 2067, 0, 758, 0, 0, 0, 1034, 1067, 0, 773, - 0, 0, 0, 0, 0, 0, 751, 0, 0, 0, - 741, 0, 0, 3243, 0, 0, 3720, 0, 2524, 0, - 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3267, 0, 3709, 0, 0, 0, 0, 0, 0, - 0, 0, 2200, 0, 0, 0, 1064, 1068, 2200, 2200, - 2200, 0, 0, 0, 0, 3706, 3710, 3708, 3707, 0, - 0, 0, 0, 0, 0, 0, 1051, 0, 1049, 1053, - 1071, 0, 0, 0, 1050, 1047, 1046, 0, 1052, 1037, - 1038, 1036, 0, 1026, 1039, 1040, 1041, 1042, 1023, 0, - 0, 1069, 0, 1070, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1065, 1066, 0, 0, 3715, 3716, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 753, 757, 763, 0, + 816, 792, 4354, 818, 4322, 3002, 232, 4346, 1695, 2068, + 4245, 1774, 3675, 3779, 4251, 3449, 4244, 4252, 4133, 4058, + 3415, 4156, 2708, 801, 4107, 4192, 3319, 3534, 3925, 3704, + 4036, 2996, 4003, 794, 3535, 4098, 3321, 1370, 4057, 4134, + 1531, 3859, 3961, 1834, 846, 1224, 2905, 675, 2999, 3634, + 1100, 4027, 1770, 3784, 219, 3, 1537, 4108, 4110, 3639, + 3774, 3691, 2515, 2973, 3878, 694, 2007, 700, 700, 1821, + 2836, 3424, 3868, 700, 718, 727, 3370, 1218, 727, 1777, + 3385, 3873, 3347, 1606, 790, 3657, 3532, 3122, 3123, 3626, + 2173, 2187, 2669, 3593, 3121, 3373, 3091, 745, 3025, 148, + 3659, 217, 3444, 3426, 2631, 3118, 2135, 70, 3433, 2913, + 3468, 37, 2210, 3584, 2799, 2285, 3190, 1839, 2242, 2667, + 1836, 3517, 2518, 3151, 1696, 3496, 2938, 3353, 3337, 2025, + 3109, 1599, 2170, 740, 736, 3351, 3350, 1506, 2764, 3395, + 2464, 3349, 1214, 3345, 3348, 3432, 784, 1494, 2951, 2406, + 2405, 3239, 2740, 3304, 789, 36, 2269, 1684, 2250, 2243, + 2215, 980, 1680, 2251, 1937, 1717, 2281, 2722, 1688, 1685, + 2166, 2632, 2139, 2615, 2927, 3007, 1673, 2280, 1016, 3027, + 2136, 2610, 2922, 2516, 2965, 724, 2058, 2665, 1094, 1162, + 1540, 228, 8, 227, 7, 6, 1991, 1773, 2463, 1768, + 2452, 1835, 2282, 1465, 2315, 1578, 1647, 2443, 675, 783, + 2266, 1584, 2024, 1828, 1759, 2446, 802, 793, 1808, 1240, + 2246, 1615, 2249, 1699, 2231, 1654, 693, 1987, 1767, 1583, + 1990, 2511, 232, 1093, 232, 674, 1153, 1154, 733, 1015, + 1580, 1840, 2639, 700, 1638, 742, 1532, 946, 2611, 1520, + 743, 709, 24, 25, 1057, 23, 17, 1043, 10, 726, + 996, 210, 791, 1013, 214, 218, 1133, 1071, 1421, 1371, + 1445, 785, 696, 948, 739, 949, 1516, 1502, 1150, 4119, + 3543, 1027, 2289, 2641, 4024, 27, 1302, 1303, 1304, 1301, + 1302, 1303, 1304, 1301, 2880, 16, 2548, 3207, 2835, 2880, + 2880, 3206, 14, 1302, 1303, 1304, 1301, 3671, 991, 3402, + 2299, 1106, 1219, 3829, 3642, 1220, 2787, 2725, 3527, 1109, + 1950, 1661, 1004, 1146, 1001, 2728, 15, 2726, 216, 2723, + 1657, 33, 705, 1149, 1145, 1151, 695, 731, 2404, 1440, + 701, 1498, 1499, 1500, 1128, 1582, 4085, 1146, 1409, 712, + 968, 1146, 966, 1023, 1024, 2709, 1219, 2410, 1951, 723, + 1541, 3314, 2414, 1079, 1067, 1443, 1710, 1108, 3297, 719, + 785, 3294, 3299, 3296, 4334, 1554, 721, 5, 2872, 2870, + 983, 1944, 1436, 1659, 1302, 1303, 1304, 1301, 3772, 1302, + 1303, 1304, 1301, 3186, 3184, 2220, 4093, 3968, 3962, 3775, + 722, 3533, 2265, 1365, 4112, 720, 2245, 947, 8, 2762, + 7, 3268, 1144, 3335, 2590, 774, 1129, 2237, 776, 2556, + 4360, 4106, 2874, 775, 215, 66, 206, 176, 215, 958, + 4331, 215, 3976, 215, 1300, 4280, 1264, 2773, 3846, 2286, + 4014, 4043, 2781, 3658, 1456, 3215, 786, 3790, 1069, 2455, + 1694, 1068, 1703, 4104, 4012, 1006, 3618, 1000, 3817, 967, + 2817, 965, 2421, 3974, 215, 774, 1003, 1002, 776, 4167, + 3613, 3338, 3815, 775, 2161, 215, 215, 66, 206, 176, + 147, 2435, 1700, 1715, 1104, 4044, 1105, 992, 1446, 1623, + 1053, 1123, 1118, 1113, 1117, 1121, 1450, 211, 1449, 1028, + 1708, 211, 1448, 968, 211, 966, 1702, 999, 1457, 1110, + 1472, 1072, 1070, 1712, 3266, 215, 738, 1489, 2297, 1126, + 1953, 2118, 1707, 1116, 3210, 3116, 1030, 2904, 2447, 2659, + 774, 998, 1299, 776, 2018, 997, 2660, 1714, 775, 963, + 4128, 986, 1075, 3158, 215, 959, 215, 2149, 211, 211, + 2454, 2646, 1497, 892, 2645, 1740, 1964, 2647, 2900, 1962, + 990, 2596, 3298, 2595, 3198, 3295, 3159, 3160, 2183, 2958, + 2150, 2151, 3318, 937, 1124, 936, 938, 939, 1568, 940, + 941, 1969, 1970, 215, 66, 206, 176, 988, 211, 215, + 66, 206, 176, 147, 2741, 1585, 1127, 1587, 215, 66, + 206, 176, 2902, 1066, 1052, 1050, 4115, 215, 66, 206, + 176, 2039, 3419, 1538, 1539, 1080, 4114, 211, 1776, 2956, + 2924, 1550, 3800, 1114, 1551, 1007, 1760, 1297, 1103, 1764, + 2925, 1049, 2875, 2897, 4223, 4113, 1528, 1102, 1473, 2386, + 1660, 1658, 1076, 1022, 4115, 4206, 4279, 1125, 1235, 4096, + 3417, 989, 1238, 1763, 1029, 1062, 211, 4216, 2901, 1243, + 1246, 4194, 211, 1726, 3192, 2016, 3193, 4255, 4256, 2959, + 3191, 211, 1232, 4114, 4205, 4197, 1147, 1148, 1058, 2923, + 211, 1152, 4113, 4204, 4326, 4327, 3536, 1115, 3536, 2898, + 4194, 1279, 3965, 2768, 1280, 1292, 1229, 2301, 700, 700, + 175, 204, 213, 205, 2157, 4130, 1078, 1536, 3046, 700, + 1228, 1535, 1538, 1539, 1059, 1063, 4099, 4100, 4101, 4102, + 2167, 1780, 1282, 203, 3552, 1553, 3627, 3364, 2293, 727, + 727, 1253, 1005, 700, 1046, 3632, 1044, 1048, 1066, 3110, + 2930, 1755, 1045, 1042, 1041, 2228, 1047, 1032, 1033, 1031, + 2598, 1021, 1034, 1035, 1036, 1037, 1018, 1765, 1007, 1064, + 2442, 1065, 2605, 2910, 3851, 2873, 1156, 1284, 1122, 3716, + 1285, 995, 1060, 1061, 1272, 3229, 985, 1274, 4286, 3366, + 3799, 1762, 3819, 3361, 3362, 4015, 4016, 1077, 3801, 1667, + 1666, 1295, 1296, 3547, 1439, 1475, 2298, 4220, 1287, 3363, + 3227, 1342, 1294, 2903, 1119, 1275, 2778, 1120, 4118, 1056, + 2017, 202, 1112, 4023, 1267, 1055, 1106, 2554, 3773, 1019, + 1571, 3185, 1277, 3555, 1109, 724, 724, 724, 3233, 2879, + 1227, 1074, 1965, 1051, 2899, 1963, 1220, 3104, 1220, 2600, + 1526, 1220, 4254, 961, 1221, 2181, 2182, 4020, 1228, 3955, + 3816, 2287, 2287, 3848, 2287, 3813, 2411, 1952, 1779, 1778, + 2589, 3208, 2592, 1243, 1246, 3205, 3731, 2961, 2601, 2602, + 1237, 1259, 1108, 2591, 725, 2662, 1245, 1244, 2320, 984, + 1146, 1374, 982, 2288, 3791, 1220, 1278, 1146, 3371, 1146, + 1146, 2160, 1146, 4225, 4226, 1106, 1146, 1552, 1283, 962, + 3588, 2608, 1761, 1109, 1289, 1268, 2300, 4221, 4222, 692, + 4229, 4228, 4227, 4230, 4042, 1130, 1054, 3421, 1111, 2116, + 1336, 2724, 1025, 1026, 3383, 1017, 1662, 1290, 1291, 4291, + 1020, 1270, 3728, 3360, 1073, 4048, 3956, 1288, 1860, 3447, + 67, 3448, 4040, 1273, 1276, 2304, 2306, 2307, 3445, 3446, + 3396, 1108, 4149, 777, 778, 779, 780, 781, 4144, 947, + 3975, 2966, 1286, 1442, 3597, 1444, 3599, 1281, 1375, 1269, + 1216, 969, 2454, 1247, 2871, 1223, 729, 728, 1461, 1222, + 3114, 1105, 1464, 2449, 3721, 1256, 177, 1471, 1251, 1252, + 177, 1419, 3847, 177, 1424, 177, 2782, 4129, 1709, 723, + 723, 723, 3305, 777, 778, 779, 780, 781, 4135, 719, + 719, 719, 1258, 1538, 1539, 1016, 721, 721, 721, 3372, + 1343, 1447, 4151, 3818, 3676, 1954, 177, 1750, 212, 1234, + 1751, 4157, 3416, 725, 3821, 3822, 3823, 177, 177, 725, + 722, 722, 722, 3001, 964, 720, 720, 720, 725, 3358, + 1271, 1538, 1539, 3984, 3683, 3985, 2117, 725, 1515, 1338, + 1339, 1340, 1341, 1231, 1233, 1236, 2432, 4009, 777, 778, + 779, 780, 781, 700, 3111, 1567, 2929, 177, 1573, 2168, + 1245, 1244, 700, 1534, 1527, 3451, 675, 675, 3835, 3606, + 3330, 1452, 3372, 3984, 4217, 3985, 675, 675, 2604, 67, + 1610, 1610, 2521, 700, 3609, 67, 177, 2588, 177, 3987, + 4049, 3979, 3230, 4224, 67, 3367, 3047, 4041, 3048, 3049, + 3732, 2158, 4017, 67, 1856, 727, 1639, 694, 1386, 1387, + 1454, 1853, 1650, 2933, 2934, 1855, 1852, 1854, 1858, 1859, + 4218, 3986, 3916, 1857, 4366, 177, 2566, 232, 2932, 3987, + 1617, 177, 1608, 1608, 2565, 3787, 675, 3852, 1756, 2534, + 177, 2293, 3422, 1508, 3905, 2514, 2537, 2997, 2998, 177, + 3001, 1249, 3608, 1569, 1786, 1789, 1790, 1563, 2936, 1564, + 1563, 3986, 1564, 2011, 1612, 1787, 1595, 1467, 1468, 1469, + 1594, 3911, 1476, 1477, 1478, 1479, 1480, 1257, 1482, 2586, + 2587, 1530, 1529, 1513, 1488, 1512, 2305, 1572, 1692, 1511, + 2662, 4158, 4062, 1697, 1425, 4028, 3425, 1423, 1215, 4349, + 1706, 3288, 2557, 2536, 3660, 2514, 1333, 2531, 3770, 1604, + 1605, 3539, 1466, 738, 1305, 2942, 2946, 2947, 2948, 2943, + 2945, 2944, 1335, 2520, 4243, 3445, 3446, 4191, 2522, 1738, + 1581, 1345, 3594, 3472, 1741, 1474, 3926, 3927, 3928, 3932, + 3930, 3931, 3933, 3929, 1610, 3441, 1610, 1228, 1716, 3153, + 3155, 1264, 3359, 3309, 1589, 1591, 2774, 1354, 1493, 2651, + 3450, 2594, 2535, 2552, 1602, 1603, 1522, 1523, 1496, 2453, + 2290, 1863, 1864, 1865, 1866, 1867, 1868, 1861, 1862, 2156, + 1481, 1505, 2523, 1542, 2133, 1463, 1545, 2524, 3742, 1514, + 2885, 3487, 1451, 3918, 3474, 3232, 1524, 3621, 1956, 1668, + 3098, 3585, 1109, 1487, 1543, 1544, 1701, 1546, 1547, 1109, + 1548, 1486, 1485, 1713, 1610, 2316, 1555, 1556, 1484, 1593, + 1671, 1081, 1674, 1675, 1663, 4061, 724, 1682, 1683, 724, + 724, 1228, 1838, 1640, 1676, 1677, 2433, 3169, 3170, 1705, + 4350, 1263, 1749, 732, 1869, 1870, 1887, 1873, 3044, 1985, + 1618, 705, 1560, 1687, 1690, 1888, 1691, 974, 3442, 1631, + 2302, 2303, 1624, 1491, 1637, 3980, 1822, 1775, 1895, 4109, + 1897, 2756, 1898, 1899, 1900, 1517, 1521, 1521, 1521, 1651, + 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, + 1806, 1807, 1652, 1067, 1453, 1455, 1819, 1820, 2894, 3907, + 1517, 1517, 2425, 3906, 1460, 3980, 4242, 1972, 978, 3981, + 3912, 3913, 1772, 976, 975, 1788, 1562, 1973, 1228, 1562, + 981, 2530, 2525, 3154, 1955, 2528, 1008, 1971, 1958, 3811, + 1960, 1010, 1011, 1012, 700, 700, 700, 3380, 3241, 3240, + 1935, 1769, 1791, 1974, 1976, 1896, 1977, 3540, 1979, 1980, + 1981, 1719, 1753, 694, 1639, 1872, 3601, 1988, 1610, 1993, + 1994, 3311, 1996, 1573, 700, 1877, 1878, 1879, 1724, 700, + 2424, 1727, 970, 1016, 4347, 4348, 2008, 1069, 1893, 2578, + 1068, 1894, 971, 1747, 1743, 1733, 1734, 1746, 1766, 1742, + 977, 1610, 3879, 1938, 2629, 1771, 1067, 1573, 1907, 1908, + 723, 4362, 718, 723, 723, 2427, 2426, 2122, 2120, 1886, + 719, 2121, 1757, 719, 719, 2354, 1748, 721, 2353, 2886, + 721, 721, 2038, 1934, 1810, 1225, 1745, 1957, 4368, 3066, + 3067, 2045, 2045, 1744, 1573, 2971, 1573, 1573, 1946, 4356, + 700, 722, 1458, 1459, 722, 722, 720, 2115, 4344, 720, + 720, 1988, 2126, 3401, 2209, 1610, 2130, 2131, 1649, 3075, + 4201, 2146, 2916, 675, 1725, 3443, 2807, 1728, 1729, 1941, + 3381, 2445, 1817, 1818, 2295, 1225, 1300, 675, 1737, 1610, + 1069, 4302, 2042, 1068, 4266, 2917, 2918, 1736, 1067, 1262, + 3493, 1300, 1997, 974, 1995, 1206, 1202, 1203, 1204, 1205, + 2662, 2812, 3489, 2811, 2810, 2808, 2186, 700, 1988, 1610, + 1901, 2192, 4357, 700, 700, 700, 736, 736, 1264, 4263, + 2012, 4303, 2630, 2202, 2203, 2204, 2205, 2070, 2743, 2972, + 2211, 3624, 2551, 1082, 1758, 4257, 3631, 232, 2184, 1507, + 232, 232, 2030, 232, 973, 3554, 2124, 2398, 1936, 976, + 975, 1942, 4239, 4185, 4303, 1992, 3065, 4267, 2037, 1986, + 4184, 2040, 2041, 2048, 2773, 3455, 1507, 2486, 1999, 2000, + 2001, 2002, 1069, 2809, 1300, 1068, 3453, 4177, 2972, 1983, + 3341, 4152, 3303, 1887, 1887, 2253, 3301, 2630, 2019, 2444, + 4140, 2026, 4264, 2028, 2029, 1887, 1887, 2207, 1984, 4083, + 3172, 2153, 2271, 2155, 2194, 2195, 2196, 2035, 2330, 2162, + 2876, 2004, 2005, 4082, 2174, 2175, 4075, 2176, 2177, 951, + 952, 953, 954, 2763, 1420, 4240, 1300, 1781, 1782, 1783, + 1784, 1785, 4074, 1300, 2748, 2008, 2047, 2264, 2219, 1610, + 2284, 2222, 2223, 2191, 2225, 2169, 2013, 2014, 2049, 2050, + 2330, 2147, 2129, 2027, 2295, 2031, 831, 149, 1302, 1303, + 1304, 1301, 149, 4141, 2255, 2521, 2524, 2036, 2021, 1826, + 2022, 2023, 4084, 1830, 1831, 1832, 1833, 1264, 2123, 2044, + 2046, 2630, 1106, 1871, 4073, 2128, 2468, 2032, 2033, 2330, + 1109, 1881, 4072, 1109, 1106, 4052, 3291, 1701, 2152, 4051, + 2154, 2278, 1109, 2134, 2485, 2330, 1769, 2043, 3493, 4026, + 2163, 2260, 2521, 2524, 3076, 3078, 3079, 3080, 3077, 4000, + 3997, 1261, 724, 1302, 1303, 1304, 1301, 706, 2286, 3737, + 149, 3685, 2813, 2814, 2148, 2189, 2507, 2190, 1108, 3649, + 1928, 1929, 1930, 1931, 1932, 2403, 2248, 3289, 3577, 1939, + 1108, 2397, 1517, 2396, 2197, 2198, 3573, 2330, 2248, 2216, + 2723, 2361, 2277, 3463, 3148, 2330, 1521, 2391, 2295, 3292, + 2179, 956, 2295, 4375, 1302, 1303, 1304, 1301, 1521, 2132, + 2313, 2314, 2330, 1492, 2233, 1825, 2854, 1596, 2842, 972, + 4358, 1106, 1300, 2468, 1302, 1303, 1304, 1301, 1262, 1109, + 4080, 2525, 2662, 3943, 3686, 2008, 2520, 2514, 2519, 2254, + 2517, 2522, 3650, 2834, 2789, 2261, 2309, 3945, 2263, 2771, + 3290, 3578, 2509, 3671, 1302, 1303, 1304, 1301, 3735, 3574, + 3176, 2275, 2408, 2409, 2015, 2412, 3464, 2630, 2415, 1333, + 2392, 2974, 2757, 700, 1573, 700, 1573, 1108, 2525, 2776, + 2775, 2767, 2279, 2520, 2514, 2519, 2428, 2517, 2522, 2468, + 2034, 1300, 2273, 784, 2493, 2523, 2349, 700, 1107, 2292, + 3264, 2384, 2334, 149, 2332, 2276, 2385, 2387, 2388, 2214, + 700, 700, 700, 700, 2200, 2465, 1300, 1300, 149, 2308, + 149, 2471, 2468, 2750, 2745, 2389, 723, 2473, 2474, 2475, + 1721, 2478, 1573, 2317, 1351, 1248, 719, 2362, 2363, 1810, + 2365, 2310, 2523, 721, 2329, 2746, 1212, 2372, 1141, 1142, + 1143, 2322, 1302, 1303, 1304, 1301, 1939, 2737, 1573, 1207, + 2735, 1939, 1939, 700, 2733, 1610, 2731, 722, 1302, 1303, + 1304, 1301, 720, 2467, 1302, 1303, 1304, 1301, 2543, 979, + 2178, 1317, 1140, 2399, 2368, 1137, 2311, 2312, 2367, 3406, + 2274, 2352, 2343, 2342, 819, 829, 2751, 2746, 2390, 1302, + 1303, 1304, 1301, 2418, 820, 2420, 821, 825, 828, 824, + 822, 823, 2218, 2341, 2395, 2221, 1876, 1875, 2224, 2472, + 2328, 2226, 2331, 2294, 1730, 1876, 1875, 3224, 2490, 4145, + 2738, 2550, 2492, 2736, 2494, 3880, 1600, 2732, 3397, 2732, + 3663, 3661, 4369, 700, 2045, 2326, 2468, 1601, 951, 952, + 953, 954, 2634, 2634, 2146, 2634, 2398, 1300, 1503, 826, + 1598, 1300, 1504, 2400, 1300, 1300, 1300, 3525, 4330, 2549, + 2480, 2481, 1518, 4146, 4120, 675, 675, 2270, 1549, 3881, + 2483, 2484, 4025, 1228, 3664, 3662, 1300, 2495, 3972, 1610, + 700, 3909, 827, 3908, 3894, 2330, 2295, 1731, 3855, 2439, + 3641, 3494, 2436, 3485, 700, 3477, 3465, 3375, 2513, 3107, + 1228, 2706, 694, 2512, 3106, 2940, 1374, 2881, 1650, 3398, + 2146, 2786, 2749, 2713, 2653, 2715, 2258, 2593, 232, 1621, + 1913, 2257, 2482, 2256, 2054, 2053, 1230, 2488, 1816, 1906, + 2489, 2657, 3320, 2217, 2479, 1134, 1135, 1136, 1139, 2796, + 1138, 2717, 2908, 1106, 1813, 1815, 1812, 2636, 1814, 2640, + 2638, 1109, 2503, 3399, 1597, 1829, 3323, 2323, 2753, 1316, + 1315, 1325, 1326, 1318, 1319, 1320, 1321, 1322, 1323, 1324, + 1317, 1503, 2319, 1829, 3177, 1504, 2324, 2769, 2356, 2642, + 2284, 1304, 1301, 1519, 2333, 2664, 2648, 1610, 2649, 1610, + 956, 1610, 2491, 1375, 2526, 2527, 1228, 2532, 3323, 1108, + 1302, 1303, 1304, 1301, 2788, 1978, 4203, 2654, 2655, 3999, + 1655, 3528, 2217, 2487, 3998, 1301, 2712, 3921, 4248, 2718, + 2670, 2340, 1320, 1321, 1322, 1323, 1324, 1317, 3920, 2347, + 1610, 1228, 3194, 3036, 3320, 2820, 2603, 3034, 2609, 3013, + 3011, 2779, 3856, 3857, 2710, 1302, 1303, 1304, 1301, 3900, + 2827, 2364, 4365, 1589, 1591, 1610, 2369, 2370, 2371, 2345, + 2643, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, + 2383, 2863, 2555, 2864, 3322, 2558, 2559, 2560, 2561, 2562, + 2563, 2564, 1608, 4340, 2567, 2568, 2569, 2570, 2571, 2572, + 2573, 2574, 2575, 2576, 2577, 2661, 2579, 2580, 2581, 2582, + 2583, 2658, 2584, 1521, 4339, 4338, 1353, 1608, 2831, 2832, + 3849, 2883, 2884, 2815, 2711, 2887, 2783, 4364, 2800, 1352, + 2800, 2939, 700, 700, 700, 3629, 4336, 4335, 2707, 2344, + 4270, 1891, 2761, 1302, 1303, 1304, 1301, 4238, 2828, 1228, + 700, 2829, 2804, 4056, 2727, 1610, 1892, 4237, 1573, 4147, + 2906, 2785, 4077, 3087, 1573, 2126, 1302, 1303, 1304, 1301, + 2856, 3085, 2858, 2970, 2860, 2861, 3083, 4065, 2780, 2976, + 3850, 2818, 3243, 2794, 4055, 2759, 2978, 4045, 1302, 1303, + 1304, 1301, 2772, 3996, 1769, 3630, 2777, 3526, 3963, 2867, + 149, 149, 149, 1107, 2988, 2770, 3072, 1316, 1315, 1325, + 1326, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1317, 2765, + 2766, 3883, 1228, 3086, 3882, 3677, 2790, 2791, 2806, 3665, + 3010, 3084, 1302, 1303, 1304, 1301, 3082, 1228, 1228, 1228, + 2045, 2798, 2816, 1228, 2952, 3020, 3021, 3022, 3023, 1228, + 3030, 3628, 3031, 3032, 3614, 3033, 3365, 3035, 3635, 2954, + 1302, 1303, 1304, 1301, 2967, 3220, 3071, 3189, 3030, 2670, + 3188, 3096, 3070, 3069, 1109, 3068, 2868, 3060, 2957, 3054, + 2634, 3053, 1334, 2989, 3052, 3051, 2977, 2937, 2877, 2793, + 2739, 2650, 2402, 2953, 3088, 1302, 1303, 1304, 1301, 2070, + 2991, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1317, 2236, + 1939, 675, 1939, 1302, 1303, 1304, 1301, 2235, 2234, 2126, + 2826, 2979, 2719, 1228, 2146, 2146, 2146, 2146, 2146, 2146, + 2981, 1939, 1939, 2230, 3640, 2984, 2919, 2229, 2185, 1961, + 1228, 2146, 3005, 1959, 2634, 3093, 1302, 1303, 1304, 1301, + 3008, 2935, 1992, 1722, 3008, 1656, 2992, 3005, 3016, 3017, + 3156, 1438, 1610, 3019, 1649, 3352, 3004, 2960, 8, 3026, + 7, 2969, 2975, 700, 700, 1210, 2837, 2838, 3257, 4018, + 4019, 3015, 2843, 1308, 1309, 1310, 1311, 1312, 1313, 1314, + 1306, 2990, 2987, 1302, 1303, 1304, 1301, 1302, 1303, 1304, + 1301, 1655, 3099, 4361, 2993, 4359, 4341, 3012, 3780, 3006, + 3807, 4328, 4290, 2752, 4289, 2755, 4285, 1302, 1303, 1304, + 1301, 3018, 4213, 4212, 4004, 3804, 4189, 3144, 4132, 3860, + 232, 4124, 3009, 4117, 1209, 232, 1426, 1302, 1303, 1304, + 1301, 3256, 4103, 3124, 4094, 4069, 3112, 3050, 4064, 2926, + 4063, 3062, 1302, 1303, 1304, 1301, 4022, 1887, 4008, 1887, + 3124, 4006, 3204, 3995, 3964, 3891, 3902, 2980, 1302, 1303, + 1304, 1301, 3864, 3173, 3853, 3840, 2985, 2986, 3219, 3839, + 2797, 3837, 3832, 2803, 1610, 3157, 3830, 3226, 3108, 3146, + 3102, 3812, 3809, 3806, 2821, 2822, 3805, 3778, 3776, 3105, + 3748, 3745, 2824, 2825, 3125, 3126, 3127, 3128, 3129, 3130, + 3141, 3739, 3092, 3145, 3803, 3147, 3625, 3616, 2830, 1316, + 1315, 1325, 1326, 1318, 1319, 1320, 1321, 1322, 1323, 1324, + 1317, 3178, 3603, 3586, 3164, 3565, 3182, 3165, 3563, 3161, + 3558, 1302, 1303, 1304, 1301, 1938, 3505, 2857, 3483, 2859, + 3203, 3482, 2862, 3480, 1781, 1939, 2337, 3042, 3043, 1675, + 3479, 1682, 1683, 1109, 3466, 3461, 3460, 3199, 3376, 1676, + 1677, 3339, 3058, 3059, 3333, 1109, 3201, 3324, 3313, 3211, + 3310, 3308, 1687, 1690, 2407, 1691, 3234, 3212, 3231, 3209, + 3187, 3179, 1619, 3163, 3100, 3097, 706, 3312, 3094, 3180, + 700, 1573, 3081, 3073, 3063, 3103, 3228, 3061, 3057, 3325, + 3326, 3327, 3329, 3195, 3331, 3332, 3056, 3202, 3223, 3197, + 3200, 3055, 2909, 3214, 2895, 2882, 1228, 2878, 892, 891, + 3216, 3793, 1228, 149, 2760, 3213, 4367, 3355, 2429, 2416, + 2413, 737, 2982, 2983, 2239, 2232, 1949, 3369, 3235, 1948, + 3222, 1723, 700, 1302, 1303, 1304, 1301, 3236, 1302, 1303, + 1304, 1301, 3792, 1382, 3242, 1378, 3386, 1228, 3255, 3725, + 700, 1377, 700, 1228, 1228, 3251, 3252, 1213, 3248, 960, + 3250, 1592, 2146, 2465, 3249, 3405, 4316, 3560, 4164, 1302, + 1303, 1304, 1301, 4160, 3246, 3247, 1302, 1303, 1304, 1301, + 215, 149, 206, 176, 3302, 4001, 2543, 3991, 149, 3990, + 3977, 2327, 3973, 3379, 1302, 1303, 1304, 1301, 3431, 3838, + 3434, 149, 3434, 3434, 149, 149, 3808, 1228, 3293, 3788, + 3316, 3758, 3260, 1874, 3740, 3656, 3655, 149, 3653, 3623, + 3307, 3382, 2952, 3306, 3582, 3456, 3342, 3580, 3579, 3452, + 3576, 3575, 3005, 1610, 1610, 1302, 1303, 1304, 1301, 1302, + 1303, 1304, 1301, 3564, 3418, 3420, 1106, 3562, 3357, 3541, + 3531, 3530, 3409, 211, 1109, 3516, 1109, 3515, 3344, 3407, + 3389, 3343, 1109, 3340, 3300, 3262, 3394, 3005, 3403, 1302, + 1303, 1304, 1301, 3005, 3005, 3253, 3245, 2144, 2325, 1939, + 700, 3244, 3238, 3171, 2734, 1608, 1608, 2730, 3429, 3378, + 3388, 2729, 2373, 2366, 3355, 2360, 3392, 3393, 2359, 2358, + 2357, 3400, 1108, 3404, 2355, 2351, 3430, 1573, 3408, 3439, + 2126, 2126, 2350, 3410, 3411, 2348, 3457, 3458, 2339, 2336, + 3413, 2513, 3269, 3270, 2335, 2238, 2512, 3005, 3271, 3272, + 3273, 3274, 1927, 3275, 3276, 3277, 3278, 3279, 3280, 3281, + 3282, 3283, 3284, 3285, 699, 699, 1926, 3435, 3436, 3259, + 707, 3440, 1925, 1890, 1889, 3454, 1302, 1303, 1304, 1301, + 3181, 3258, 3183, 1228, 1880, 215, 1622, 2820, 1620, 3003, + 4315, 3462, 4269, 4176, 2853, 3529, 1302, 1303, 1304, 1301, + 4183, 1939, 2852, 1372, 4159, 4089, 1939, 4086, 1302, 1303, + 1304, 1301, 4071, 1109, 4066, 3958, 3957, 3470, 3937, 3919, + 2270, 1302, 1303, 1304, 1301, 3915, 3893, 3437, 3877, 1302, + 1303, 1304, 1301, 3467, 3759, 3490, 3491, 3756, 4308, 2851, + 3723, 3476, 3722, 700, 2850, 3719, 3718, 3478, 3475, 3481, + 3484, 3889, 2849, 3684, 3681, 3237, 3488, 3679, 211, 3643, + 3602, 3598, 1495, 3501, 3336, 3502, 1302, 1303, 1304, 1301, + 3492, 1302, 1303, 1304, 1301, 3412, 3254, 1670, 1681, 1302, + 1303, 1304, 1301, 3261, 3509, 1672, 3512, 3513, 3514, 4306, + 2848, 1686, 3508, 1689, 1678, 3135, 3095, 3089, 3014, 2963, + 2962, 2955, 3519, 2670, 2921, 1316, 1315, 1325, 1326, 1318, + 1319, 1320, 1321, 1322, 1323, 1324, 1317, 1302, 1303, 1304, + 1301, 2211, 3590, 2847, 2855, 3592, 2744, 3542, 1325, 1326, + 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1317, 3604, 3544, + 707, 3546, 3566, 3610, 2652, 3545, 2800, 4174, 2846, 3551, + 1302, 1303, 1304, 1301, 2585, 2466, 2438, 2437, 3600, 4172, + 3263, 2845, 2401, 1811, 211, 3550, 3611, 2145, 3556, 2844, + 3568, 2199, 3570, 2841, 3572, 1302, 1303, 1304, 1301, 2840, + 1945, 1754, 700, 2126, 1704, 3605, 1679, 3607, 1302, 1303, + 1304, 1301, 1437, 1422, 3648, 1418, 1302, 1303, 1304, 1301, + 1302, 1303, 1304, 1301, 3595, 1417, 1302, 1303, 1304, 1301, + 1416, 2634, 2146, 3668, 1316, 1315, 1325, 1326, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1317, 1415, 1414, 1413, 1412, + 3587, 3583, 1411, 3589, 1410, 1409, 3687, 1408, 1407, 1228, + 1406, 1405, 1404, 149, 1403, 3620, 149, 149, 3431, 149, + 1402, 1401, 1228, 2839, 1109, 1400, 1399, 3615, 3470, 1398, + 1397, 3619, 1396, 1395, 1228, 1394, 3734, 1393, 1392, 1391, + 1610, 3438, 1390, 3636, 1389, 1388, 1385, 4170, 2833, 3670, + 1302, 1303, 1304, 1301, 1384, 3743, 3647, 1383, 3638, 1107, + 1381, 1380, 149, 1379, 1376, 3654, 1369, 1368, 700, 2823, + 2126, 1107, 3717, 1366, 1228, 1302, 1303, 1304, 1301, 1365, + 3720, 2819, 3678, 1364, 3680, 3666, 1363, 149, 3667, 1362, + 1361, 3710, 1608, 1360, 3673, 1359, 1302, 1303, 1304, 1301, + 1358, 1357, 1109, 1356, 1355, 1350, 3674, 232, 1302, 1303, + 1304, 1301, 1349, 1348, 1347, 1346, 3749, 1266, 3752, 1211, + 1228, 3669, 3469, 3736, 3726, 3729, 3724, 2477, 2795, 3688, + 3672, 2451, 3733, 1254, 3764, 3497, 3498, 4253, 3500, 3143, + 3473, 3738, 3727, 2394, 3101, 2941, 3744, 2393, 2663, 2241, + 3741, 1501, 1265, 3507, 3026, 1302, 1303, 1304, 1301, 3750, + 3747, 3138, 3753, 132, 3751, 3754, 3139, 3133, 1334, 3810, + 1302, 1303, 1304, 1301, 1302, 1303, 1304, 1301, 3132, 2008, + 3136, 3506, 3824, 69, 3786, 3137, 3140, 1824, 2624, 2625, + 3834, 3746, 3761, 3503, 3124, 3142, 3131, 68, 4202, 4105, + 3762, 3898, 2758, 2747, 2055, 1228, 3374, 3781, 3771, 2505, + 2506, 3548, 3549, 3782, 1302, 1303, 1304, 1301, 2500, 2501, + 2502, 3427, 3218, 3428, 1228, 1610, 1610, 2553, 3766, 3038, + 3730, 3386, 3520, 3831, 702, 3833, 3039, 3040, 3041, 2107, + 3124, 1664, 2742, 3872, 1718, 3820, 3872, 2765, 2766, 2430, + 3760, 2784, 3783, 2423, 703, 2422, 3644, 3645, 3646, 1698, + 1228, 3887, 1228, 3651, 3652, 3866, 3867, 3861, 704, 3814, + 2201, 3890, 3802, 3892, 2119, 1260, 3836, 1608, 1822, 1610, + 3622, 3414, 3827, 2964, 3559, 2497, 2461, 3845, 2006, 3844, + 1109, 3561, 1982, 3854, 3842, 3863, 2259, 700, 4319, 1228, + 1228, 1876, 1875, 1228, 1228, 1433, 1434, 3826, 3862, 3876, + 1109, 3865, 3670, 4068, 3843, 3875, 3459, 3569, 3886, 3571, + 2606, 3939, 2599, 3944, 2127, 3005, 2255, 1558, 3581, 1557, + 3934, 1822, 3899, 3717, 1431, 1432, 1293, 2008, 3896, 3518, + 3950, 1109, 3923, 3924, 3511, 3869, 3935, 3936, 3903, 3895, + 1429, 1430, 3710, 3959, 3960, 1427, 1428, 2431, 2272, 3901, + 2010, 1510, 1509, 3469, 1483, 699, 1217, 1610, 1533, 3522, + 2470, 4276, 4274, 3947, 4231, 4199, 1226, 4198, 4196, 4136, + 1775, 2792, 1775, 4090, 3884, 3885, 3953, 3946, 3952, 3888, + 3777, 3567, 3992, 3940, 3993, 3538, 700, 3537, 3523, 2267, + 1255, 2538, 3983, 3948, 2508, 1316, 1315, 1325, 1326, 1318, + 1319, 1320, 1321, 1322, 1323, 1324, 1317, 1720, 3175, 1608, + 1507, 3591, 3970, 3966, 4310, 4309, 1525, 3221, 2890, 2889, + 2888, 2338, 1441, 4005, 1250, 4007, 3978, 3982, 4309, 4310, + 3917, 3794, 3763, 3795, 951, 952, 953, 954, 1225, 1225, + 3971, 77, 2, 4332, 3988, 3989, 4333, 1, 4037, 2869, + 1943, 4031, 4010, 1435, 2318, 955, 950, 1586, 2644, 2180, + 1614, 4011, 1947, 957, 1228, 3149, 3150, 3510, 3152, 2896, + 2291, 3113, 2597, 2441, 4021, 4054, 3368, 4060, 1316, 1315, + 1325, 1326, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1317, + 2637, 1490, 1009, 1882, 4032, 1939, 3786, 1735, 4034, 4033, + 4046, 1242, 1732, 1241, 1239, 1827, 833, 4050, 1228, 2244, + 3090, 1939, 3064, 1610, 3755, 3949, 4081, 3757, 1316, 1315, + 1325, 1326, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1317, + 4318, 4353, 4067, 4268, 4321, 1752, 817, 4190, 4095, 3765, + 4272, 4097, 3969, 2296, 1298, 3196, 1039, 874, 1109, 844, + 1367, 4076, 4029, 1711, 3267, 3265, 2145, 843, 3633, 2931, + 3954, 3168, 4039, 1040, 149, 1608, 2227, 4092, 3967, 4116, + 1665, 1669, 1559, 4111, 2496, 1566, 4047, 4155, 1570, 4091, + 1574, 1575, 1576, 4126, 1775, 1315, 1325, 1326, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1317, 4078, 3897, 3941, 4121, + 3423, 4122, 3942, 3000, 1693, 4150, 3682, 3798, 3796, 3797, + 4137, 744, 2159, 673, 1625, 1626, 1627, 1628, 1629, 1630, + 1091, 1632, 1633, 1634, 1635, 1636, 4123, 3938, 2240, 1642, + 1643, 1644, 1645, 2476, 4219, 4070, 4131, 993, 4154, 2612, + 3617, 2450, 1228, 994, 4139, 987, 2950, 2949, 1792, 1307, + 1610, 4179, 4087, 4088, 1809, 4180, 3286, 4148, 3287, 1344, + 4187, 4169, 4171, 4173, 4175, 788, 2321, 4153, 2928, 3705, + 3162, 76, 75, 74, 4188, 4162, 2619, 2623, 2624, 2625, + 2620, 2628, 2621, 2626, 73, 4168, 2622, 240, 2627, 835, + 239, 4002, 3858, 4186, 4323, 814, 813, 812, 811, 810, + 809, 4193, 1608, 4195, 2617, 2618, 2616, 2614, 2613, 1610, + 2141, 2140, 4037, 4207, 4209, 3174, 3521, 4214, 2206, 2208, + 3384, 3029, 4211, 4208, 4210, 3024, 2059, 2057, 4241, 1577, + 1565, 2533, 2540, 4178, 4249, 2056, 4250, 3557, 4232, 1579, + 3789, 4165, 4234, 4166, 3914, 3074, 4235, 4236, 3785, 2499, + 2529, 2076, 3045, 2073, 2072, 3037, 3910, 3904, 2104, 4035, + 1616, 1608, 4265, 3871, 3689, 3690, 3696, 2460, 1161, 4258, + 1157, 4259, 1159, 4260, 1160, 4261, 1158, 4262, 2805, 3486, + 4275, 2510, 4277, 4278, 3346, 2915, 2914, 2912, 2911, 4273, + 4271, 1470, 4233, 4125, 4215, 3841, 2668, 4111, 4281, 2666, + 1208, 3499, 1228, 149, 3495, 4282, 4284, 4283, 3317, 2252, + 4079, 3504, 3134, 149, 2268, 3217, 2142, 2138, 2137, 1132, + 1131, 4060, 1646, 4298, 3596, 45, 3115, 2607, 4127, 4013, + 4301, 4300, 4299, 2504, 4304, 1561, 2448, 4307, 4317, 4305, + 4325, 111, 41, 4324, 127, 110, 193, 4311, 4312, 4313, + 4314, 2619, 2623, 2624, 2625, 2620, 2628, 2621, 2626, 60, + 4329, 2622, 4337, 2627, 192, 59, 125, 190, 1228, 58, + 105, 104, 124, 188, 57, 224, 223, 226, 225, 4342, + 4154, 4343, 222, 2720, 4345, 2721, 221, 1653, 4351, 220, + 4200, 4355, 3874, 4182, 4352, 215, 66, 206, 176, 4138, + 945, 44, 43, 194, 4142, 4143, 42, 112, 61, 40, + 39, 2469, 3334, 2009, 207, 3612, 2907, 2434, 38, 4363, + 34, 198, 4296, 13, 12, 208, 35, 22, 4325, 4371, + 21, 4324, 4370, 1739, 20, 4163, 26, 32, 31, 142, + 4355, 4372, 141, 30, 147, 140, 4376, 139, 138, 137, + 136, 135, 134, 29, 19, 52, 51, 50, 49, 133, + 2145, 2145, 2145, 2145, 2145, 2145, 48, 47, 211, 9, + 130, 128, 123, 121, 28, 122, 119, 2145, 120, 115, + 114, 113, 108, 1902, 1903, 1904, 1905, 106, 1775, 1909, + 1910, 1911, 1912, 1914, 1915, 1916, 1917, 1918, 1919, 1920, + 1921, 1922, 1923, 1924, 1354, 88, 87, 86, 215, 66, + 206, 176, 101, 100, 99, 98, 97, 96, 94, 95, + 1038, 85, 84, 83, 82, 81, 116, 207, 103, 109, + 107, 92, 102, 93, 198, 91, 90, 89, 208, 80, + 79, 78, 118, 117, 129, 156, 157, 195, 158, 159, + 62, 174, 173, 160, 172, 171, 161, 147, 170, 168, + 169, 167, 2052, 166, 165, 164, 149, 163, 162, 53, + 54, 149, 133, 55, 56, 184, 183, 185, 187, 189, + 186, 211, 191, 4161, 181, 179, 182, 4287, 4288, 180, + 178, 71, 149, 11, 4292, 4293, 4294, 4295, 126, 18, + 4, 0, 0, 0, 149, 0, 0, 0, 0, 0, + 0, 1966, 1967, 1968, 0, 756, 755, 762, 752, 175, + 204, 213, 205, 131, 0, 0, 0, 0, 759, 760, + 0, 761, 765, 2193, 0, 746, 0, 0, 0, 0, + 0, 1998, 203, 197, 196, 770, 2003, 0, 0, 72, + 0, 0, 0, 0, 0, 1328, 0, 1332, 156, 157, + 0, 158, 159, 0, 0, 0, 160, 155, 0, 161, + 0, 0, 0, 1329, 1331, 1327, 4246, 1330, 1316, 1315, + 1325, 1326, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1317, + 0, 774, 0, 0, 776, 0, 0, 0, 0, 775, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 199, 200, 201, 0, 0, 0, 0, 2051, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 175, 204, 213, 205, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 203, 197, 196, 0, 0, + 4246, 209, 72, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 155, 0, 143, 0, 2188, 0, 202, 0, 144, 0, + 2188, 2188, 2188, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1107, 0, 149, 0, 0, 0, 0, + 0, 149, 0, 0, 0, 0, 0, 0, 2145, 0, + 4246, 0, 0, 199, 200, 201, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 747, + 749, 748, 0, 0, 0, 145, 0, 0, 0, 0, + 754, 0, 0, 0, 0, 0, 0, 0, 65, 0, + 0, 0, 758, 0, 0, 0, 0, 0, 0, 773, + 0, 0, 0, 0, 209, 0, 751, 0, 0, 0, + 741, 0, 0, 0, 0, 0, 4374, 0, 0, 3694, + 0, 0, 0, 0, 0, 143, 0, 0, 0, 202, + 0, 144, 0, 0, 0, 0, 0, 756, 755, 762, + 752, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 759, 760, 0, 761, 765, 0, 0, 746, 0, 0, + 3706, 0, 0, 0, 0, 0, 0, 770, 0, 0, + 0, 0, 3471, 3697, 0, 0, 153, 212, 0, 154, + 0, 0, 0, 0, 3692, 0, 0, 177, 145, 3714, + 3715, 0, 63, 0, 0, 3693, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 774, 0, 0, 776, 0, 0, 0, + 0, 775, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3698, 0, 0, 0, 753, 757, 763, 0, 764, 766, 0, 0, 767, 768, 769, 0, 0, 771, - 772, 1061, 0, 0, 0, 0, 0, 1060, 0, 0, - 0, 1024, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3723, 0, 0, 0, 1056, 0, 0, 0, 0, - 0, 0, 0, 3702, 756, 755, 762, 752, 0, 3714, - 0, 0, 0, 0, 0, 0, 0, 759, 760, 0, + 772, 0, 0, 0, 67, 0, 0, 0, 0, 0, + 0, 0, 0, 146, 46, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, + 212, 0, 154, 150, 151, 0, 0, 152, 0, 0, + 177, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 756, 755, 762, 752, 0, 0, + 3713, 0, 2519, 0, 0, 0, 0, 759, 760, 0, 761, 765, 0, 0, 746, 0, 0, 0, 0, 0, - 0, 2642, 2117, 0, 770, 0, 0, 0, 0, 215, - 0, 0, 0, 756, 755, 762, 752, 0, 0, 0, - 3445, 0, 0, 0, 0, 0, 759, 760, 0, 761, - 765, 0, 3879, 746, 0, 0, 2205, 0, 2119, 0, - 0, 0, 0, 770, 0, 0, 0, 0, 1059, 0, - 774, 0, 0, 776, 1030, 1031, 0, 1022, 775, 0, - 0, 0, 1025, 0, 0, 0, 0, 2157, 0, 0, - 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, - 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2094, 0, 0, 0, 0, 0, 0, 0, - 0, 3476, 750, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3719, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2417, 0, 2419, 0, 770, 0, 0, 3702, 0, 0, + 0, 747, 749, 748, 0, 0, 0, 0, 0, 0, + 0, 0, 754, 0, 2440, 0, 146, 46, 0, 3699, + 3703, 3701, 3700, 64, 758, 0, 0, 2456, 2457, 2458, + 2459, 773, 0, 0, 0, 0, 0, 0, 751, 0, + 0, 0, 0, 0, 0, 0, 150, 151, 0, 0, + 152, 0, 750, 3471, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3708, 3709, 0, 0, 0, 0, 0, 0, + 2498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 778, 779, 780, 781, 0, 0, 0, 0, 0, 0, - 2110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2429, 0, - 2431, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3718, 747, 749, - 748, 2451, 2452, 2453, 0, 0, 0, 0, 0, 754, - 0, 0, 0, 0, 0, 0, 2469, 2470, 2471, 2472, - 0, 758, 0, 0, 0, 0, 0, 0, 773, 0, - 0, 0, 0, 0, 0, 751, 0, 747, 749, 748, - 0, 0, 0, 0, 2098, 0, 0, 0, 754, 0, - 0, 0, 0, 0, 0, 2104, 0, 0, 0, 0, - 758, 0, 0, 3566, 0, 0, 0, 773, 0, 0, - 3568, 0, 0, 0, 751, 2092, 2126, 0, 0, 2093, - 2095, 2097, 0, 2099, 2100, 2101, 2105, 2106, 2107, 2109, - 2112, 2113, 2114, 0, 0, 0, 3576, 0, 3578, 0, - 2102, 2111, 2103, 0, 0, 0, 0, 3588, 0, 0, - 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3476, 0, 0, 0, 0, 0, 0, 2118, - 0, 0, 0, 0, 1585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 753, 757, 763, 0, 764, - 766, 0, 0, 767, 768, 769, 0, 0, 771, 772, - 0, 0, 0, 0, 0, 0, 0, 0, 2117, 0, - 0, 0, 0, 2078, 0, 0, 0, 0, 0, 2115, - 0, 1622, 0, 0, 753, 757, 763, 0, 764, 766, - 0, 0, 767, 768, 769, 2200, 2091, 771, 772, 0, - 0, 0, 0, 2090, 2119, 2087, 0, 0, 0, 0, - 0, 0, 0, 0, 2120, 2121, 1307, 1308, 1309, 1306, - 0, 0, 0, 0, 0, 0, 0, 2108, 0, 0, - 0, 0, 0, 0, 0, 0, 2096, 0, 0, 0, - 2086, 0, 0, 0, 2157, 2157, 2157, 2157, 2157, 2157, - 0, 0, 0, 0, 0, 0, 0, 0, 2094, 0, - 0, 2157, 0, 0, 0, 1945, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1945, 0, 0, 3762, 0, 0, 3764, 0, 0, - 0, 0, 0, 0, 0, 0, 1866, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3772, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 750, 0, 0, 0, 0, 2110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 149, 177, 0, 0, 0, 149, 0, 0, 0, 0, - 750, 0, 0, 0, 0, 0, 0, 0, 777, 778, - 779, 780, 781, 0, 0, 0, 149, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2077, 2079, 2076, 0, 0, 2073, 0, 1866, 0, 0, - 2098, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2104, 0, 2896, 2897, 2898, 0, 0, 0, 2089, - 0, 2072, 0, 0, 2117, 0, 0, 0, 0, 2078, - 0, 2092, 2126, 0, 0, 2093, 2095, 2097, 0, 2099, - 2100, 2101, 2105, 2106, 2107, 2109, 2112, 2113, 2114, 0, - 0, 0, 0, 0, 0, 2974, 2102, 2111, 2103, 0, - 2119, 2087, 0, 0, 0, 0, 0, 0, 2081, 0, - 2120, 2121, 1862, 0, 0, 0, 0, 0, 0, 1859, - 0, 0, 0, 1861, 1858, 1860, 1864, 1865, 0, 0, - 0, 1863, 0, 0, 0, 0, 2086, 0, 0, 0, - 0, 0, 0, 0, 0, 2118, 0, 0, 0, 0, - 0, 0, 0, 0, 2094, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2074, 2075, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2091, 0, 0, 0, 0, 2117, 1112, 2090, - 149, 0, 2110, 1862, 0, 0, 149, 0, 0, 0, - 1859, 0, 0, 2157, 1861, 1858, 1860, 1864, 1865, 0, - 0, 0, 1863, 2108, 0, 0, 0, 0, 0, 0, - 0, 0, 2096, 2119, 149, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2123, 2122, 0, 1847, 1848, - 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1869, - 1870, 1871, 1872, 1873, 1874, 1867, 1868, 3172, 3173, 0, - 0, 0, 0, 0, 0, 0, 2077, 3001, 2076, 0, - 0, 3000, 0, 0, 0, 0, 2098, 2094, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2104, 0, 0, - 0, 0, 2083, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2092, 2126, 0, - 0, 2093, 2095, 2097, 0, 2099, 2100, 2101, 2105, 2106, - 2107, 2109, 2112, 2113, 2114, 0, 0, 3478, 0, 0, - 0, 0, 2102, 2111, 2103, 0, 0, 2125, 0, 0, - 2124, 4040, 0, 0, 2081, 2110, 0, 0, 0, 1847, - 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, - 1869, 1870, 1871, 1872, 1873, 1874, 1867, 1868, 0, 0, - 0, 0, 0, 0, 0, 0, 1359, 0, 0, 0, - 0, 2118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2074, 2075, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2098, - 0, 2115, 0, 0, 0, 0, 0, 0, 0, 0, - 2104, 0, 0, 0, 0, 0, 0, 0, 2091, 0, - 0, 0, 0, 0, 0, 2090, 4169, 0, 0, 0, - 2092, 2126, 0, 0, 2093, 2095, 2097, 0, 2099, 2100, - 2101, 2105, 2106, 2107, 2109, 2112, 2113, 2114, 0, 2108, - 0, 0, 0, 0, 3321, 2102, 2111, 2103, 2096, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2123, 2122, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2118, 0, 0, 3384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4254, 0, 0, - 0, 0, 0, 0, 0, 3397, 0, 3398, 2083, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3478, 0, - 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, - 0, 0, 0, 149, 2115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2091, 0, 2125, 0, 0, 2124, 0, 2090, 0, - 0, 0, 0, 0, 0, 1185, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4254, 2108, 0, 2157, 0, 0, 0, 0, 0, - 0, 2096, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2200, 0, 0, 0, 0, - 4254, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1170, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4381, 0, 0, 149, - 1193, 1197, 1199, 1201, 1203, 1204, 1206, 0, 1211, 1207, - 1208, 1209, 1210, 0, 1188, 1189, 1190, 1191, 1168, 1169, - 1194, 0, 1171, 0, 1173, 1174, 1175, 1176, 1172, 1177, - 1178, 1179, 1180, 1181, 1184, 1186, 1182, 1183, 1192, 0, - 0, 0, 0, 0, 0, 0, 1196, 1198, 1200, 1202, - 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3560, 0, - 0, 0, 0, 0, 0, 3835, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 851, 0, - 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, - 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, - 0, 803, 0, 0, 0, 352, 0, 149, 385, 589, - 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, - 562, 532, 563, 533, 564, 565, 842, 588, 539, 455, - 401, 606, 605, 0, 0, 916, 924, 0, 0, 0, - 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, - 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, - 321, 238, 534, 654, 536, 535, 820, 0, 821, 825, - 828, 824, 822, 823, 0, 907, 0, 0, 0, 0, - 0, 0, 787, 799, 0, 804, 0, 0, 2200, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, - 797, 0, 0, 0, 0, 852, 0, 798, 0, 0, - 847, 826, 830, 0, 0, 2806, 2807, 309, 462, 480, - 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, - 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, - 350, 366, 347, 414, 827, 850, 854, 346, 930, 848, - 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, - 312, 476, 397, 391, 379, 356, 931, 380, 381, 370, - 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, - 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, - 0, 0, 0, 0, 2200, 0, 0, 0, 647, 845, - 0, 651, 0, 490, 0, 0, 914, 0, 0, 0, - 461, 0, 0, 382, 0, 149, 0, 849, 0, 444, - 419, 927, 0, 0, 442, 387, 475, 430, 481, 463, - 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, - 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, - 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, - 341, 451, 342, 307, 425, 472, 1195, 363, 439, 395, - 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, - 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, - 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, - 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, - 578, 548, 511, 602, 545, 549, 550, 373, 614, 1890, - 1889, 1891, 502, 383, 384, 0, 355, 354, 396, 435, - 361, 301, 302, 683, 911, 415, 616, 649, 650, 541, - 0, 926, 906, 908, 909, 913, 917, 918, 919, 920, - 921, 923, 925, 929, 682, 0, 595, 610, 686, 609, - 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, - 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, - 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, - 636, 637, 638, 639, 632, 928, 576, 553, 579, 494, - 556, 555, 0, 0, 590, 853, 591, 592, 405, 406, - 407, 408, 915, 617, 326, 513, 434, 0, 577, 0, - 0, 0, 0, 3931, 0, 0, 0, 582, 583, 580, - 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, - 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, - 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, - 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, - 482, 454, 393, 570, 597, 937, 910, 936, 938, 939, - 935, 940, 941, 922, 808, 0, 860, 933, 932, 934, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, - 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, - 672, 681, 4003, 0, 0, 815, 303, 547, 386, 0, - 433, 359, 612, 613, 0, 664, 899, 867, 868, 869, - 805, 870, 864, 865, 806, 866, 900, 858, 896, 897, - 834, 861, 871, 895, 872, 898, 901, 902, 942, 943, - 878, 862, 267, 944, 875, 903, 894, 893, 873, 859, - 904, 905, 841, 836, 876, 877, 863, 882, 883, 884, - 807, 885, 886, 887, 888, 889, 855, 856, 857, 879, - 880, 837, 838, 839, 840, 0, 0, 0, 498, 499, - 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, - 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, - 657, 890, 659, 459, 460, 666, 0, 881, 662, 663, - 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, - 648, 0, 800, 215, 851, 0, 0, 0, 0, 0, - 0, 0, 0, 417, 0, 0, 552, 585, 574, 658, - 540, 0, 0, 0, 0, 0, 0, 803, 0, 0, - 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, - 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, - 564, 565, 842, 588, 539, 455, 401, 606, 605, 0, - 0, 916, 924, 0, 0, 0, 0, 0, 0, 0, - 0, 912, 0, 0, 0, 0, 795, 0, 0, 832, - 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, - 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, - 0, 907, 0, 0, 0, 0, 0, 0, 787, 799, - 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 796, 797, 0, 0, 0, - 0, 852, 0, 798, 0, 0, 847, 826, 830, 0, - 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, - 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, - 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, - 827, 850, 854, 346, 930, 848, 488, 313, 0, 487, - 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, - 379, 356, 931, 380, 381, 370, 428, 389, 429, 371, - 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, - 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 647, 845, 0, 651, 0, 490, - 0, 0, 914, 0, 0, 0, 461, 0, 0, 382, - 0, 0, 0, 849, 0, 444, 419, 927, 0, 0, - 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, - 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, - 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, - 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, - 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, - 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, - 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, - 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, - 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, - 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, - 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, - 911, 415, 616, 649, 650, 541, 0, 926, 906, 908, - 909, 913, 917, 918, 919, 920, 921, 923, 925, 929, - 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, - 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, - 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, - 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, - 632, 928, 576, 553, 579, 494, 556, 555, 0, 0, - 590, 853, 591, 592, 405, 406, 407, 408, 915, 617, - 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, - 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, - 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, - 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, - 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, - 597, 937, 910, 936, 938, 939, 935, 940, 941, 922, - 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, - 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, - 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, - 0, 815, 303, 547, 386, 177, 433, 359, 612, 613, - 0, 664, 899, 867, 868, 869, 805, 870, 864, 865, - 806, 866, 900, 858, 896, 897, 834, 861, 871, 895, - 872, 898, 901, 902, 942, 943, 878, 862, 267, 944, - 875, 903, 894, 893, 873, 859, 904, 905, 841, 836, - 876, 877, 863, 882, 883, 884, 807, 885, 886, 887, - 888, 889, 855, 856, 857, 879, 880, 837, 838, 839, - 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, - 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, - 608, 642, 0, 652, 653, 655, 657, 890, 659, 459, - 460, 666, 0, 881, 662, 663, 660, 390, 446, 465, - 453, 851, 684, 537, 538, 685, 648, 0, 800, 0, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 803, 0, 0, 0, 352, 1946, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 842, - 588, 539, 455, 401, 606, 605, 0, 0, 916, 924, - 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, - 2183, 0, 0, 795, 0, 0, 832, 892, 891, 819, - 829, 0, 0, 321, 238, 534, 654, 536, 535, 820, - 0, 821, 825, 828, 824, 822, 823, 0, 907, 0, - 0, 0, 0, 0, 0, 787, 799, 0, 804, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 796, 797, 0, 0, 0, 0, 852, 0, - 798, 0, 0, 2184, 826, 830, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 827, 850, 854, - 346, 930, 848, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 931, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 845, 0, 651, 0, 490, 0, 0, 914, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 849, 0, 444, 419, 927, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 911, 415, 616, - 649, 650, 541, 0, 926, 906, 908, 909, 913, 917, - 918, 919, 920, 921, 923, 925, 929, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 928, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 853, 591, - 592, 405, 406, 407, 408, 915, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 937, 910, - 936, 938, 939, 935, 940, 941, 922, 808, 0, 860, - 933, 932, 934, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 815, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 899, - 867, 868, 869, 805, 870, 864, 865, 806, 866, 900, - 858, 896, 897, 834, 861, 871, 895, 872, 898, 901, - 902, 942, 943, 878, 862, 267, 944, 875, 903, 894, - 893, 873, 859, 904, 905, 841, 836, 876, 877, 863, - 882, 883, 884, 807, 885, 886, 887, 888, 889, 855, - 856, 857, 879, 880, 837, 838, 839, 840, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 890, 659, 459, 460, 666, 0, - 881, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 0, 800, 215, 851, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 803, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 1342, 588, 539, 455, 401, - 606, 605, 0, 0, 916, 924, 0, 0, 0, 0, - 0, 0, 0, 0, 912, 0, 0, 0, 0, 795, - 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, - 238, 534, 654, 536, 535, 820, 0, 821, 825, 828, - 824, 822, 823, 0, 907, 0, 0, 0, 0, 0, - 0, 787, 799, 0, 804, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 796, 797, - 0, 0, 0, 0, 852, 0, 798, 0, 0, 847, - 826, 830, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 827, 850, 854, 346, 930, 848, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 931, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 845, 0, - 651, 0, 490, 0, 0, 914, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 849, 0, 444, 419, - 927, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 911, 415, 616, 649, 650, 541, 0, - 926, 906, 908, 909, 913, 917, 918, 919, 920, 921, - 923, 925, 929, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 928, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 853, 591, 592, 405, 406, 407, - 408, 915, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 937, 910, 936, 938, 939, 935, - 940, 941, 922, 808, 0, 860, 933, 932, 934, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2145, 0, + 0, 0, 0, 0, 0, 3716, 0, 0, 0, 0, + 0, 149, 0, 0, 0, 0, 0, 3695, 0, 0, + 0, 0, 0, 3707, 0, 0, 0, 2105, 0, 0, + 0, 0, 2066, 0, 0, 0, 0, 0, 0, 0, + 1579, 0, 0, 0, 0, 0, 0, 0, 753, 757, + 763, 0, 764, 766, 0, 0, 767, 768, 769, 0, + 0, 771, 772, 2107, 2075, 0, 0, 0, 747, 749, + 748, 0, 0, 2108, 2109, 1302, 1303, 1304, 1301, 754, + 0, 0, 0, 0, 0, 0, 0, 1616, 0, 0, + 0, 758, 0, 0, 0, 0, 0, 0, 773, 2074, + 0, 2188, 0, 0, 0, 751, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2082, 0, 0, + 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2105, 0, 0, 0, 0, 2066, + 0, 0, 0, 0, 0, 1860, 0, 3712, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2107, 2075, 0, 0, 0, 2098, 0, 0, 0, 0, + 2108, 2109, 0, 0, 0, 0, 0, 0, 0, 3828, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2074, 0, 0, 149, + 0, 0, 0, 0, 750, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2082, 753, 757, 763, 0, 764, + 766, 3711, 0, 767, 768, 769, 0, 0, 771, 772, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 2065, + 2067, 2064, 0, 0, 2061, 0, 0, 0, 0, 2086, + 0, 777, 778, 779, 780, 781, 0, 0, 0, 0, + 2092, 0, 0, 0, 0, 0, 0, 0, 2077, 0, + 2060, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2080, 2114, 2098, 0, 2081, 2083, 2085, 0, 2087, 2088, + 2089, 2093, 2094, 2095, 2097, 2100, 2101, 2102, 0, 0, + 0, 0, 0, 0, 0, 2090, 2099, 2091, 0, 2891, + 2892, 2893, 0, 1860, 0, 0, 0, 2069, 0, 0, + 0, 1856, 0, 0, 0, 0, 0, 2920, 1853, 0, + 0, 0, 1855, 1852, 1854, 1858, 1859, 0, 0, 0, + 1857, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2968, 0, 0, 0, 2106, 0, 2065, 2995, 2064, 0, + 0, 2994, 0, 0, 0, 0, 2086, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2092, 0, 0, + 0, 0, 0, 0, 0, 0, 2062, 2063, 0, 0, + 0, 750, 0, 0, 0, 0, 0, 2080, 2114, 0, + 0, 2081, 2083, 2085, 2103, 2087, 2088, 2089, 2093, 2094, + 2095, 2097, 2100, 2101, 2102, 0, 0, 0, 0, 0, + 0, 2079, 2090, 2099, 2091, 0, 0, 0, 2078, 0, + 0, 0, 0, 0, 2069, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 149, 1180, 0, + 0, 0, 2096, 0, 0, 0, 0, 0, 0, 0, + 0, 2084, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2106, 0, 0, 2111, 2110, 0, 1841, 1842, 1843, + 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1863, 1864, + 1865, 1866, 1867, 1868, 1861, 1862, 0, 0, 0, 1856, + 0, 0, 0, 2062, 2063, 0, 1853, 0, 0, 0, + 1855, 1852, 1854, 1858, 1859, 0, 0, 0, 1857, 0, + 0, 2103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2071, 0, 0, 0, 0, 0, 0, 2079, 0, + 0, 0, 0, 0, 0, 2078, 0, 0, 0, 0, + 3166, 3167, 1180, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2096, + 0, 0, 1165, 0, 0, 0, 2113, 0, 2084, 2112, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2111, 2110, 1188, 1192, 1194, 1196, 1198, 1199, 1201, + 0, 1206, 1202, 1203, 1204, 1205, 0, 1183, 1184, 1185, + 1186, 1163, 1164, 1189, 0, 1166, 0, 1168, 1169, 1170, + 1171, 1167, 1172, 1173, 1174, 1175, 1176, 1179, 1181, 1177, + 1178, 1187, 0, 0, 0, 0, 0, 0, 0, 1191, + 1193, 1195, 1197, 1200, 0, 0, 0, 0, 2071, 0, + 0, 0, 0, 0, 0, 1841, 1842, 1843, 1844, 1845, + 1846, 1847, 1848, 1849, 1850, 1851, 1863, 1864, 1865, 1866, + 1867, 1868, 1861, 1862, 0, 0, 1165, 0, 0, 1182, + 1155, 0, 2105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2113, 0, 0, 2112, 1188, 1192, 1194, + 1196, 1198, 1199, 1201, 0, 1206, 1202, 1203, 1204, 1205, + 0, 1183, 1184, 1185, 1186, 1163, 1164, 1189, 2107, 1166, + 1180, 1168, 1169, 1170, 1171, 1167, 1172, 1173, 1174, 1175, + 1176, 1179, 1181, 1177, 1178, 1187, 0, 0, 0, 0, + 0, 0, 0, 1191, 1193, 1195, 1197, 1200, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4059, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2082, 0, 0, 0, 0, 3315, 0, 0, + 0, 0, 0, 1182, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3377, + 0, 0, 0, 0, 0, 0, 0, 0, 2801, 2802, + 2098, 0, 0, 0, 1165, 0, 0, 3390, 0, 3391, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1188, 1192, 1194, 1196, 1198, + 1199, 1201, 0, 1206, 1202, 1203, 1204, 1205, 0, 1183, + 1184, 1185, 1186, 1163, 1164, 1189, 0, 1166, 0, 1168, + 1169, 1170, 1171, 1167, 1172, 1173, 1174, 1175, 1176, 1179, + 1181, 1177, 1178, 1187, 0, 0, 0, 0, 0, 0, + 0, 1191, 1193, 1195, 1197, 1200, 0, 0, 0, 0, + 0, 0, 0, 0, 2086, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2092, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1182, 0, 0, 0, 2080, 2114, 0, 0, 2081, + 2083, 2085, 0, 2087, 2088, 2089, 2093, 2094, 2095, 2097, + 2100, 2101, 2102, 0, 0, 0, 0, 2188, 0, 0, + 2090, 2099, 2091, 0, 0, 0, 0, 0, 0, 1190, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2106, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1190, 0, 0, 2079, 0, 0, 0, + 0, 0, 0, 2078, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3553, 0, 0, 0, 0, 0, 0, 2096, 0, 0, + 0, 0, 0, 0, 0, 0, 2084, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 851, 0, 0, + 0, 0, 0, 0, 0, 0, 417, 0, 0, 552, + 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, + 803, 0, 0, 0, 352, 0, 0, 385, 589, 571, + 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, + 532, 563, 533, 564, 565, 842, 588, 539, 455, 401, + 606, 605, 0, 0, 916, 924, 0, 0, 0, 0, + 0, 0, 0, 0, 912, 0, 0, 0, 0, 795, + 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, + 238, 534, 654, 536, 535, 820, 0, 821, 825, 828, + 824, 822, 823, 0, 907, 0, 0, 0, 0, 0, + 0, 787, 799, 0, 804, 0, 0, 0, 0, 2188, + 0, 1190, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 796, 797, + 0, 0, 0, 0, 852, 0, 798, 0, 0, 847, + 826, 830, 0, 0, 0, 0, 309, 462, 480, 322, + 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, + 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, + 366, 347, 414, 827, 850, 854, 346, 930, 848, 488, + 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, + 476, 397, 391, 379, 356, 931, 380, 381, 370, 428, + 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, + 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2188, 0, 647, 845, 0, + 651, 0, 490, 0, 0, 914, 0, 0, 0, 461, + 0, 0, 382, 0, 0, 0, 849, 0, 444, 419, + 927, 0, 0, 442, 387, 475, 430, 481, 463, 489, + 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, + 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, + 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, + 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, + 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, + 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, + 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, + 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, + 548, 511, 602, 545, 549, 550, 373, 614, 1884, 1883, + 1885, 502, 383, 384, 0, 355, 354, 396, 435, 361, + 301, 302, 683, 911, 415, 616, 649, 650, 541, 0, + 926, 906, 908, 909, 913, 917, 918, 919, 920, 921, + 923, 925, 929, 682, 0, 595, 610, 686, 609, 679, + 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, + 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, + 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, + 637, 638, 639, 632, 928, 576, 553, 579, 494, 556, + 555, 0, 0, 590, 853, 591, 592, 405, 406, 407, + 408, 915, 617, 326, 513, 434, 0, 577, 0, 0, + 0, 0, 0, 0, 3922, 0, 582, 583, 580, 691, + 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, + 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, + 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, + 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, + 454, 393, 570, 597, 937, 910, 936, 938, 939, 935, + 940, 941, 922, 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 815, 303, 547, 386, 177, 433, + 681, 0, 0, 3994, 815, 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, 899, 867, 868, 869, 805, 870, 864, 865, 806, 866, 900, 858, 896, 897, 834, 861, 871, 895, 872, 898, 901, 902, 942, 943, 878, @@ -2783,550 +2577,151 @@ var yyAct = [...]int{ 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, 890, 659, 459, 460, 666, 0, 881, 662, 663, 660, - 390, 446, 465, 453, 851, 684, 537, 538, 685, 648, - 0, 800, 0, 417, 0, 0, 552, 585, 574, 658, - 540, 0, 0, 0, 0, 0, 0, 803, 0, 0, - 0, 352, 4380, 0, 385, 589, 571, 581, 572, 557, - 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, - 564, 565, 842, 588, 539, 455, 401, 606, 605, 0, - 0, 916, 924, 0, 0, 0, 0, 0, 0, 0, - 0, 912, 0, 0, 0, 0, 795, 0, 0, 832, - 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, - 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, - 0, 907, 0, 0, 0, 0, 0, 0, 787, 799, - 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, + 0, 800, 215, 851, 0, 0, 0, 0, 0, 0, + 0, 0, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 0, 0, 0, 803, 0, 0, 0, + 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, + 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, + 565, 842, 588, 539, 455, 401, 606, 605, 0, 0, + 916, 924, 0, 0, 0, 0, 0, 0, 0, 0, + 912, 0, 0, 0, 0, 795, 0, 0, 832, 892, + 891, 819, 829, 0, 0, 321, 238, 534, 654, 536, + 535, 820, 0, 821, 825, 828, 824, 822, 823, 0, + 907, 0, 0, 0, 0, 0, 0, 787, 799, 0, + 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 796, 797, 0, 0, 0, - 0, 852, 0, 798, 0, 0, 847, 826, 830, 0, - 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, - 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, - 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, - 827, 850, 854, 346, 930, 848, 488, 313, 0, 487, - 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, - 379, 356, 931, 380, 381, 370, 428, 389, 429, 371, - 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, - 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 647, 845, 0, 651, 0, 490, - 0, 0, 914, 0, 0, 0, 461, 0, 0, 382, - 0, 0, 0, 849, 0, 444, 419, 927, 0, 0, - 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, - 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, - 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, - 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, - 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, - 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, - 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, - 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, - 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, - 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, - 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, - 911, 415, 616, 649, 650, 541, 0, 926, 906, 908, - 909, 913, 917, 918, 919, 920, 921, 923, 925, 929, - 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, - 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, - 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, - 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, - 632, 928, 576, 553, 579, 494, 556, 555, 0, 0, - 590, 853, 591, 592, 405, 406, 407, 408, 915, 617, - 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, - 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, - 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, - 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, - 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, - 597, 937, 910, 936, 938, 939, 935, 940, 941, 922, - 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, - 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, - 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, - 0, 815, 303, 547, 386, 0, 433, 359, 612, 613, - 0, 664, 899, 867, 868, 869, 805, 870, 864, 865, - 806, 866, 900, 858, 896, 897, 834, 861, 871, 895, - 872, 898, 901, 902, 942, 943, 878, 862, 267, 944, - 875, 903, 894, 893, 873, 859, 904, 905, 841, 836, - 876, 877, 863, 882, 883, 884, 807, 885, 886, 887, - 888, 889, 855, 856, 857, 879, 880, 837, 838, 839, - 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, - 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, - 608, 642, 0, 652, 653, 655, 657, 890, 659, 459, - 460, 666, 0, 881, 662, 663, 660, 390, 446, 465, - 453, 851, 684, 537, 538, 685, 648, 0, 800, 0, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 803, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 842, - 588, 539, 455, 401, 606, 605, 0, 0, 916, 924, - 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, - 0, 0, 0, 795, 0, 0, 832, 892, 891, 819, - 829, 0, 0, 321, 238, 534, 654, 536, 535, 820, - 0, 821, 825, 828, 824, 822, 823, 0, 907, 0, - 0, 0, 0, 0, 0, 787, 799, 0, 804, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 796, 797, 0, 0, 0, 0, 852, 0, - 798, 0, 0, 847, 826, 830, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 827, 850, 854, - 346, 930, 848, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 931, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 845, 0, 651, 0, 490, 0, 0, 914, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 849, 0, 444, 419, 927, 4255, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 911, 415, 616, - 649, 650, 541, 0, 926, 906, 908, 909, 913, 917, - 918, 919, 920, 921, 923, 925, 929, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 928, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 853, 591, - 592, 405, 406, 407, 408, 915, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 937, 910, - 936, 938, 939, 935, 940, 941, 922, 808, 0, 860, - 933, 932, 934, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 815, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 899, - 867, 868, 869, 805, 870, 864, 865, 806, 866, 900, - 858, 896, 897, 834, 861, 871, 895, 872, 898, 901, - 902, 942, 943, 878, 862, 267, 944, 875, 903, 894, - 893, 873, 859, 904, 905, 841, 836, 876, 877, 863, - 882, 883, 884, 807, 885, 886, 887, 888, 889, 855, - 856, 857, 879, 880, 837, 838, 839, 840, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 890, 659, 459, 460, 666, 0, - 881, 662, 663, 660, 390, 446, 465, 453, 851, 684, - 537, 538, 685, 648, 0, 800, 0, 417, 0, 0, - 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, - 0, 803, 0, 0, 0, 352, 1946, 0, 385, 589, - 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, - 562, 532, 563, 533, 564, 565, 842, 588, 539, 455, - 401, 606, 605, 0, 0, 916, 924, 0, 0, 0, - 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, - 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, - 321, 238, 534, 654, 536, 535, 820, 0, 821, 825, - 828, 824, 822, 823, 0, 907, 0, 0, 0, 0, - 0, 0, 787, 799, 0, 804, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, - 797, 0, 0, 0, 0, 852, 0, 798, 0, 0, - 847, 826, 830, 0, 0, 0, 0, 309, 462, 480, - 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, - 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, - 350, 366, 347, 414, 827, 850, 854, 346, 930, 848, - 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, - 312, 476, 397, 391, 379, 356, 931, 380, 381, 370, - 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, - 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 647, 845, - 0, 651, 0, 490, 0, 0, 914, 0, 0, 0, - 461, 0, 0, 382, 0, 0, 0, 849, 0, 444, - 419, 927, 0, 0, 442, 387, 475, 430, 481, 463, - 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, - 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, - 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, - 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, - 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, - 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, - 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, - 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, - 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, - 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, - 361, 301, 302, 683, 911, 415, 616, 649, 650, 541, - 0, 926, 906, 908, 909, 913, 917, 918, 919, 920, - 921, 923, 925, 929, 682, 0, 595, 610, 686, 609, - 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, - 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, - 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, - 636, 637, 638, 639, 632, 928, 576, 553, 579, 494, - 556, 555, 0, 0, 590, 853, 591, 592, 405, 406, - 407, 408, 915, 617, 326, 513, 434, 0, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, - 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, - 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, - 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, - 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, - 482, 454, 393, 570, 597, 937, 910, 936, 938, 939, - 935, 940, 941, 922, 808, 0, 860, 933, 932, 934, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, - 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, - 672, 681, 0, 0, 0, 815, 303, 547, 386, 0, - 433, 359, 612, 613, 0, 664, 899, 867, 868, 869, - 805, 870, 864, 865, 806, 866, 900, 858, 896, 897, - 834, 861, 871, 895, 872, 898, 901, 902, 942, 943, - 878, 862, 267, 944, 875, 903, 894, 893, 873, 859, - 904, 905, 841, 836, 876, 877, 863, 882, 883, 884, - 807, 885, 886, 887, 888, 889, 855, 856, 857, 879, - 880, 837, 838, 839, 840, 0, 0, 0, 498, 499, - 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, - 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, - 657, 890, 659, 459, 460, 666, 0, 881, 662, 663, - 660, 390, 446, 465, 453, 851, 684, 537, 538, 685, - 648, 0, 800, 0, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 803, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 842, 588, 539, 455, 401, 606, 605, - 0, 0, 916, 924, 0, 0, 0, 0, 0, 0, - 0, 0, 912, 0, 0, 0, 0, 795, 0, 0, - 832, 892, 891, 819, 829, 0, 0, 321, 238, 534, - 654, 536, 535, 820, 0, 821, 825, 828, 824, 822, - 823, 0, 907, 0, 0, 0, 0, 0, 0, 787, - 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 796, 797, 1654, 0, - 0, 0, 852, 0, 798, 0, 0, 847, 826, 830, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 827, 850, 854, 346, 930, 848, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 931, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 845, 0, 651, 0, - 490, 0, 0, 914, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 849, 0, 444, 419, 927, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 911, 415, 616, 649, 650, 541, 0, 926, 906, - 908, 909, 913, 917, 918, 919, 920, 921, 923, 925, - 929, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 928, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 853, 591, 592, 405, 406, 407, 408, 915, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 937, 910, 936, 938, 939, 935, 940, 941, - 922, 808, 0, 860, 933, 932, 934, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 815, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 899, 867, 868, 869, 805, 870, 864, - 865, 806, 866, 900, 858, 896, 897, 834, 861, 871, - 895, 872, 898, 901, 902, 942, 943, 878, 862, 267, - 944, 875, 903, 894, 893, 873, 859, 904, 905, 841, - 836, 876, 877, 863, 882, 883, 884, 807, 885, 886, - 887, 888, 889, 855, 856, 857, 879, 880, 837, 838, - 839, 840, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 890, 659, - 459, 460, 666, 0, 881, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 851, 800, - 0, 2358, 0, 0, 0, 0, 0, 417, 0, 0, - 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, - 0, 803, 0, 0, 0, 352, 0, 0, 385, 589, - 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, - 562, 532, 563, 533, 564, 565, 842, 588, 539, 455, - 401, 606, 605, 0, 0, 916, 924, 0, 0, 0, - 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, - 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, - 321, 238, 534, 654, 536, 535, 820, 0, 821, 825, - 828, 824, 822, 823, 0, 907, 0, 0, 0, 0, - 0, 0, 787, 799, 0, 804, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, - 797, 0, 0, 0, 0, 852, 0, 798, 0, 0, - 847, 826, 830, 0, 0, 0, 0, 309, 462, 480, - 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, - 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, - 350, 366, 347, 414, 827, 850, 854, 346, 930, 848, - 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, - 312, 476, 397, 391, 379, 356, 931, 380, 381, 370, - 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, - 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 647, 845, - 0, 651, 0, 490, 0, 0, 914, 0, 0, 0, - 461, 0, 0, 382, 0, 0, 0, 849, 0, 444, - 419, 927, 0, 0, 442, 387, 475, 430, 481, 463, - 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, - 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, - 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, - 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, - 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, - 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, - 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, - 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, - 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, - 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, - 361, 301, 302, 683, 911, 415, 616, 649, 650, 541, - 0, 926, 906, 908, 909, 913, 917, 918, 919, 920, - 921, 923, 925, 929, 682, 0, 595, 610, 686, 609, - 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, - 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, - 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, - 636, 637, 638, 639, 632, 928, 576, 553, 579, 494, - 556, 555, 0, 0, 590, 853, 591, 592, 405, 406, - 407, 408, 915, 617, 326, 513, 434, 0, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, - 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, - 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, - 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, - 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, - 482, 454, 393, 570, 597, 937, 910, 936, 938, 939, - 935, 940, 941, 922, 808, 0, 860, 933, 932, 934, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, - 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, - 672, 681, 0, 0, 0, 815, 303, 547, 386, 0, - 433, 359, 612, 613, 0, 664, 899, 867, 868, 869, - 805, 870, 864, 865, 806, 866, 900, 858, 896, 897, - 834, 861, 871, 895, 872, 898, 901, 902, 942, 943, - 878, 862, 267, 944, 875, 903, 894, 893, 873, 859, - 904, 905, 841, 836, 876, 877, 863, 882, 883, 884, - 807, 885, 886, 887, 888, 889, 855, 856, 857, 879, - 880, 837, 838, 839, 840, 0, 0, 0, 498, 499, - 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, - 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, - 657, 890, 659, 459, 460, 666, 0, 881, 662, 663, - 660, 390, 446, 465, 453, 851, 684, 537, 538, 685, - 648, 0, 800, 0, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 803, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 842, 588, 539, 455, 401, 606, 605, - 0, 0, 916, 924, 0, 0, 0, 0, 0, 0, - 0, 0, 912, 0, 0, 0, 0, 795, 0, 0, - 832, 892, 891, 819, 829, 0, 0, 321, 238, 534, - 654, 536, 535, 820, 0, 821, 825, 828, 824, 822, - 823, 0, 907, 0, 0, 0, 0, 0, 0, 787, - 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 796, 797, 1939, 0, - 0, 0, 852, 0, 798, 0, 0, 847, 826, 830, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 827, 850, 854, 346, 930, 848, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 931, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 845, 0, 651, 0, - 490, 0, 0, 914, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 849, 0, 444, 419, 927, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 911, 415, 616, 649, 650, 541, 0, 926, 906, - 908, 909, 913, 917, 918, 919, 920, 921, 923, 925, - 929, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 928, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 853, 591, 592, 405, 406, 407, 408, 915, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 937, 910, 936, 938, 939, 935, 940, 941, - 922, 808, 0, 860, 933, 932, 934, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 815, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 899, 867, 868, 869, 805, 870, 864, - 865, 806, 866, 900, 858, 896, 897, 834, 861, 871, - 895, 872, 898, 901, 902, 942, 943, 878, 862, 267, - 944, 875, 903, 894, 893, 873, 859, 904, 905, 841, - 836, 876, 877, 863, 882, 883, 884, 807, 885, 886, - 887, 888, 889, 855, 856, 857, 879, 880, 837, 838, - 839, 840, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 890, 659, - 459, 460, 666, 0, 881, 662, 663, 660, 390, 446, - 465, 453, 851, 684, 537, 538, 685, 648, 0, 800, - 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, - 0, 0, 0, 0, 0, 803, 0, 0, 0, 352, - 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, - 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, - 842, 588, 539, 455, 401, 606, 605, 0, 0, 916, - 924, 0, 0, 0, 0, 0, 0, 0, 0, 912, - 0, 0, 0, 0, 795, 0, 0, 832, 892, 891, - 819, 829, 0, 0, 321, 238, 534, 654, 536, 535, - 820, 0, 821, 825, 828, 824, 822, 823, 0, 907, - 0, 0, 0, 0, 0, 0, 787, 799, 0, 804, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 796, 797, 0, 0, 0, 0, 852, - 0, 798, 0, 0, 847, 826, 830, 0, 0, 0, - 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, - 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, - 376, 310, 0, 441, 350, 366, 347, 414, 827, 850, - 854, 346, 930, 848, 488, 313, 0, 487, 413, 474, - 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, - 931, 380, 381, 370, 428, 389, 429, 371, 403, 402, - 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, - 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 647, 845, 0, 651, 0, 490, 0, 0, - 914, 0, 0, 0, 461, 0, 0, 382, 0, 0, - 0, 849, 0, 444, 419, 927, 0, 0, 442, 387, - 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, - 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, - 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, - 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, - 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, - 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, - 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, - 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, - 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, - 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, - 355, 354, 396, 435, 361, 301, 302, 683, 911, 415, - 616, 649, 650, 541, 0, 926, 906, 908, 909, 913, - 917, 918, 919, 920, 921, 923, 925, 929, 682, 0, - 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, - 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, - 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, - 514, 633, 634, 635, 636, 637, 638, 639, 632, 928, - 576, 553, 579, 494, 556, 555, 0, 0, 590, 853, - 591, 592, 405, 406, 407, 408, 915, 617, 326, 513, - 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, - 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, - 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, - 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, - 491, 418, 445, 323, 482, 454, 393, 570, 597, 937, - 910, 936, 938, 939, 935, 940, 941, 922, 808, 0, - 860, 933, 932, 934, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, - 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, - 336, 343, 680, 676, 672, 681, 0, 0, 0, 815, - 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, - 899, 867, 868, 869, 805, 870, 864, 865, 806, 866, - 900, 858, 896, 897, 834, 861, 871, 895, 872, 898, - 901, 902, 942, 943, 878, 862, 267, 944, 875, 903, - 894, 893, 873, 859, 904, 905, 841, 836, 876, 877, - 863, 882, 883, 884, 807, 885, 886, 887, 888, 889, - 855, 856, 857, 879, 880, 837, 838, 839, 840, 0, - 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, - 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, - 0, 652, 653, 655, 657, 890, 659, 459, 460, 666, - 0, 881, 662, 663, 660, 390, 446, 465, 453, 851, - 684, 537, 538, 685, 648, 0, 800, 0, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 803, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 842, 588, 539, - 455, 401, 606, 605, 0, 0, 916, 924, 0, 0, - 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, - 0, 795, 0, 0, 832, 892, 891, 819, 829, 0, - 0, 321, 238, 534, 654, 536, 535, 820, 0, 821, - 825, 828, 824, 822, 823, 0, 907, 0, 0, 0, - 0, 0, 0, 787, 799, 0, 804, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 796, 797, 0, 0, 0, 0, 852, 0, 798, 0, - 0, 847, 826, 830, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 827, 850, 854, 346, 930, - 848, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 931, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 845, 0, 651, 0, 490, 0, 0, 914, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 849, 0, - 444, 419, 927, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 911, 415, 616, 649, 650, - 541, 0, 926, 906, 908, 909, 913, 917, 918, 919, - 920, 921, 923, 925, 929, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 928, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 853, 591, 592, 405, - 406, 407, 408, 915, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 937, 910, 936, 938, - 939, 935, 940, 941, 922, 808, 0, 860, 933, 932, - 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 815, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 899, 867, 868, - 869, 805, 870, 864, 865, 806, 866, 900, 858, 896, - 897, 834, 861, 871, 895, 872, 898, 901, 902, 942, - 943, 878, 862, 267, 944, 875, 903, 894, 893, 873, - 859, 904, 905, 841, 836, 876, 877, 863, 882, 883, - 884, 807, 885, 886, 887, 888, 889, 855, 856, 857, - 879, 880, 837, 838, 839, 840, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 890, 659, 459, 460, 666, 0, 3774, 662, - 3775, 3776, 390, 446, 465, 453, 851, 684, 537, 538, - 685, 648, 0, 800, 0, 417, 0, 0, 552, 585, + 0, 0, 0, 0, 796, 797, 0, 0, 0, 0, + 852, 0, 798, 0, 0, 847, 826, 830, 0, 0, + 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, + 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, + 375, 376, 310, 0, 441, 350, 366, 347, 414, 827, + 850, 854, 346, 930, 848, 488, 313, 0, 487, 413, + 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, + 356, 931, 380, 381, 370, 428, 389, 429, 371, 403, + 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, + 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 647, 845, 0, 651, 0, 490, 0, + 0, 914, 0, 0, 0, 461, 0, 0, 382, 0, + 0, 0, 849, 0, 444, 419, 927, 0, 0, 442, + 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, + 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, + 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, + 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, + 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, + 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, + 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, + 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, + 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, + 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, + 0, 355, 354, 396, 435, 361, 301, 302, 683, 911, + 415, 616, 649, 650, 541, 0, 926, 906, 908, 909, + 913, 917, 918, 919, 920, 921, 923, 925, 929, 682, + 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, + 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, + 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, + 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, + 928, 576, 553, 579, 494, 556, 555, 0, 0, 590, + 853, 591, 592, 405, 406, 407, 408, 915, 617, 326, + 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, + 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, + 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, + 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, + 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, + 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 937, 910, 936, 938, 939, 935, 940, 941, 922, 808, + 0, 860, 933, 932, 934, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, + 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, + 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, + 815, 303, 547, 386, 177, 433, 359, 612, 613, 0, + 664, 899, 867, 868, 869, 805, 870, 864, 865, 806, + 866, 900, 858, 896, 897, 834, 861, 871, 895, 872, + 898, 901, 902, 942, 943, 878, 862, 267, 944, 875, + 903, 894, 893, 873, 859, 904, 905, 841, 836, 876, + 877, 863, 882, 883, 884, 807, 885, 886, 887, 888, + 889, 855, 856, 857, 879, 880, 837, 838, 839, 840, + 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, + 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, + 642, 0, 652, 653, 655, 657, 890, 659, 459, 460, + 666, 0, 881, 662, 663, 660, 390, 446, 465, 453, + 851, 684, 537, 538, 685, 648, 0, 800, 0, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 803, 0, 0, 0, 352, 1940, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 842, 588, + 539, 455, 401, 606, 605, 0, 0, 916, 924, 0, + 0, 0, 0, 0, 0, 0, 0, 912, 0, 2171, + 0, 0, 795, 0, 0, 832, 892, 891, 819, 829, + 0, 0, 321, 238, 534, 654, 536, 535, 820, 0, + 821, 825, 828, 824, 822, 823, 0, 907, 0, 0, + 0, 0, 0, 0, 787, 799, 0, 804, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 796, 797, 0, 0, 0, 0, 852, 0, 798, + 0, 0, 2172, 826, 830, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 827, 850, 854, 346, + 930, 848, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 931, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 845, 0, 651, 0, 490, 0, 0, 914, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 849, + 0, 444, 419, 927, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 911, 415, 616, 649, + 650, 541, 0, 926, 906, 908, 909, 913, 917, 918, + 919, 920, 921, 923, 925, 929, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 928, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 853, 591, 592, + 405, 406, 407, 408, 915, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 937, 910, 936, + 938, 939, 935, 940, 941, 922, 808, 0, 860, 933, + 932, 934, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 815, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 899, 867, + 868, 869, 805, 870, 864, 865, 806, 866, 900, 858, + 896, 897, 834, 861, 871, 895, 872, 898, 901, 902, + 942, 943, 878, 862, 267, 944, 875, 903, 894, 893, + 873, 859, 904, 905, 841, 836, 876, 877, 863, 882, + 883, 884, 807, 885, 886, 887, 888, 889, 855, 856, + 857, 879, 880, 837, 838, 839, 840, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 890, 659, 459, 460, 666, 0, 881, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 0, 800, 215, 851, 0, 0, 0, + 0, 0, 0, 0, 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, 803, 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, - 563, 533, 564, 565, 842, 588, 539, 455, 401, 606, + 563, 533, 564, 565, 1337, 588, 539, 455, 401, 606, 605, 0, 0, 916, 924, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, 238, - 534, 654, 536, 535, 2870, 0, 2871, 825, 828, 824, + 534, 654, 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, 0, 907, 0, 0, 0, 0, 0, 0, 787, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3373,7 +2768,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, - 0, 0, 0, 815, 303, 547, 386, 0, 433, 359, + 0, 0, 0, 815, 303, 547, 386, 177, 433, 359, 612, 613, 0, 664, 899, 867, 868, 869, 805, 870, 864, 865, 806, 866, 900, 858, 896, 897, 834, 861, 871, 895, 872, 898, 901, 902, 942, 943, 878, 862, @@ -3386,15 +2781,15 @@ var yyAct = [...]int{ 659, 459, 460, 666, 0, 881, 662, 663, 660, 390, 446, 465, 453, 851, 684, 537, 538, 685, 648, 0, 800, 0, 417, 0, 0, 552, 585, 574, 658, 540, - 0, 0, 1799, 0, 0, 0, 803, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, + 0, 0, 0, 0, 0, 0, 803, 0, 0, 0, + 352, 4373, 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, 842, 588, 539, 455, 401, 606, 605, 0, 0, 916, 924, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, 0, - 907, 0, 0, 0, 0, 0, 0, 0, 799, 0, + 907, 0, 0, 0, 0, 0, 0, 787, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, 797, 0, 0, 0, 0, @@ -3415,7 +2810,7 @@ var yyAct = [...]int{ 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 1800, 1801, 593, 0, 509, 688, 689, 690, + 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, @@ -3461,7 +2856,7 @@ var yyAct = [...]int{ 0, 0, 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, 0, 907, 0, 0, - 0, 0, 0, 0, 0, 799, 0, 804, 0, 0, + 0, 0, 0, 0, 787, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, 797, 0, 0, 0, 0, 852, 0, 798, @@ -3476,7 +2871,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 845, 0, 651, 0, 490, 0, 0, 914, 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, 849, - 0, 444, 419, 927, 0, 0, 442, 387, 475, 430, + 0, 444, 419, 927, 4247, 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, @@ -3520,11 +2915,11 @@ var yyAct = [...]int{ 662, 663, 660, 390, 446, 465, 453, 851, 684, 537, 538, 685, 648, 0, 800, 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 803, 0, 0, 0, 352, 0, 0, 385, 589, 571, + 803, 0, 0, 0, 352, 1940, 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, 842, 588, 539, 455, 401, 606, 605, 0, 0, 916, 924, 0, 0, 0, 0, - 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 912, 0, 0, 0, 0, 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, 0, 907, 0, 0, 0, 0, 0, @@ -3584,167 +2979,233 @@ var yyAct = [...]int{ 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, 890, 659, 459, 460, 666, 0, 881, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 0, 800, 215, 66, 206, 176, 0, 0, 0, 0, - 0, 0, 417, 0, 0, 552, 585, 574, 658, 540, - 0, 207, 0, 0, 0, 0, 0, 0, 198, 0, - 352, 0, 208, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 147, 588, 539, 455, 401, 606, 605, 0, 0, - 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, - 0, 0, 0, 0, 0, 211, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 390, 446, 465, 453, 851, 684, 537, 538, 685, 648, + 0, 800, 0, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 803, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 842, 588, 539, 455, 401, 606, 605, 0, + 0, 916, 924, 0, 0, 0, 0, 0, 0, 0, + 0, 912, 0, 0, 0, 0, 795, 0, 0, 832, + 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, + 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, + 0, 907, 0, 0, 0, 0, 0, 0, 787, 799, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 175, 204, 213, 205, - 131, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 230, 0, 0, 0, 461, 0, 0, 382, 203, - 197, 196, 506, 0, 444, 419, 242, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 250, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 626, 627, 628, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 485, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 233, 598, 601, 531, 243, - 0, 595, 610, 568, 609, 244, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 145, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 241, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, - 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 248, 316, 672, 249, 0, 0, 0, - 0, 303, 547, 386, 177, 433, 359, 612, 613, 63, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 245, 46, 231, 234, 236, 235, 0, 64, 596, 608, - 642, 5, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 150, 246, 537, 538, 247, 648, 215, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 0, 0, 552, + 0, 0, 0, 0, 0, 796, 797, 1648, 0, 0, + 0, 852, 0, 798, 0, 0, 847, 826, 830, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 827, 850, 854, 346, 930, 848, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 931, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 845, 0, 651, 0, 490, + 0, 0, 914, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 849, 0, 444, 419, 927, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 911, 415, 616, 649, 650, 541, 0, 926, 906, 908, + 909, 913, 917, 918, 919, 920, 921, 923, 925, 929, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 928, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 853, 591, 592, 405, 406, 407, 408, 915, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 937, 910, 936, 938, 939, 935, 940, 941, 922, + 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 815, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 899, 867, 868, 869, 805, 870, 864, 865, + 806, 866, 900, 858, 896, 897, 834, 861, 871, 895, + 872, 898, 901, 902, 942, 943, 878, 862, 267, 944, + 875, 903, 894, 893, 873, 859, 904, 905, 841, 836, + 876, 877, 863, 882, 883, 884, 807, 885, 886, 887, + 888, 889, 855, 856, 857, 879, 880, 837, 838, 839, + 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 890, 659, 459, + 460, 666, 0, 881, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 851, 800, 0, + 2346, 0, 0, 0, 0, 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, + 803, 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 147, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 2526, 2529, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 532, 563, 533, 564, 565, 842, 588, 539, 455, 401, + 606, 605, 0, 0, 916, 924, 0, 0, 0, 0, + 0, 0, 0, 0, 912, 0, 0, 0, 0, 795, + 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, + 238, 534, 654, 536, 535, 820, 0, 821, 825, 828, + 824, 822, 823, 0, 907, 0, 0, 0, 0, 0, + 0, 787, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, + 0, 0, 0, 0, 0, 0, 0, 0, 796, 797, + 0, 0, 0, 0, 852, 0, 798, 0, 0, 847, + 826, 830, 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, + 366, 347, 414, 827, 850, 854, 346, 930, 848, 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, + 476, 397, 391, 379, 356, 931, 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 2530, 490, 0, 0, 0, 2525, 0, 2524, 461, - 2522, 2527, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, + 0, 0, 0, 0, 0, 0, 0, 647, 845, 0, + 651, 0, 490, 0, 0, 914, 0, 0, 0, 461, + 0, 0, 382, 0, 0, 0, 849, 0, 444, 419, + 927, 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 2528, 363, 439, 395, 308, + 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, + 301, 302, 683, 911, 415, 616, 649, 650, 541, 0, + 926, 906, 908, 909, 913, 917, 918, 919, 920, 921, + 923, 925, 929, 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, + 637, 638, 639, 632, 928, 576, 553, 579, 494, 556, + 555, 0, 0, 590, 853, 591, 592, 405, 406, 407, + 408, 915, 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 454, 393, 570, 597, 937, 910, 936, 938, 939, 935, + 940, 941, 922, 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 177, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, + 681, 0, 0, 0, 815, 303, 547, 386, 0, 433, + 359, 612, 613, 0, 664, 899, 867, 868, 869, 805, + 870, 864, 865, 806, 866, 900, 858, 896, 897, 834, + 861, 871, 895, 872, 898, 901, 902, 942, 943, 878, + 862, 267, 944, 875, 903, 894, 893, 873, 859, 904, + 905, 841, 836, 876, 877, 863, 882, 883, 884, 807, + 885, 886, 887, 888, 889, 855, 856, 857, 879, 880, + 837, 838, 839, 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, + 890, 659, 459, 460, 666, 0, 881, 662, 663, 660, + 390, 446, 465, 453, 851, 684, 537, 538, 685, 648, + 0, 800, 0, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 803, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 842, 588, 539, 455, 401, 606, 605, 0, + 0, 916, 924, 0, 0, 0, 0, 0, 0, 0, + 0, 912, 0, 0, 0, 0, 795, 0, 0, 832, + 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, + 536, 535, 820, 0, 821, 825, 828, 824, 822, 823, + 0, 907, 0, 0, 0, 0, 0, 0, 787, 799, + 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 796, 797, 1933, 0, 0, + 0, 852, 0, 798, 0, 0, 847, 826, 830, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 827, 850, 854, 346, 930, 848, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 931, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 845, 0, 651, 0, 490, + 0, 0, 914, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 849, 0, 444, 419, 927, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 911, 415, 616, 649, 650, 541, 0, 926, 906, 908, + 909, 913, 917, 918, 919, 920, 921, 923, 925, 929, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 928, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 853, 591, 592, 405, 406, 407, 408, 915, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 937, 910, 936, 938, 939, 935, 940, 941, 922, + 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 815, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 899, 867, 868, 869, 805, 870, 864, 865, + 806, 866, 900, 858, 896, 897, 834, 861, 871, 895, + 872, 898, 901, 902, 942, 943, 878, 862, 267, 944, + 875, 903, 894, 893, 873, 859, 904, 905, 841, 836, + 876, 877, 863, 882, 883, 884, 807, 885, 886, 887, + 888, 889, 855, 856, 857, 879, 880, 837, 838, 839, + 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 890, 659, 459, + 460, 666, 0, 881, 662, 663, 660, 390, 446, 465, + 453, 851, 684, 537, 538, 685, 648, 0, 800, 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, + 0, 0, 0, 0, 803, 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1378, 0, 0, 237, 0, 0, 819, + 364, 560, 561, 562, 532, 563, 533, 564, 565, 842, + 588, 539, 455, 401, 606, 605, 0, 0, 916, 924, + 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, + 0, 0, 0, 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, 321, 238, 534, 654, 536, 535, 820, - 0, 821, 825, 828, 824, 822, 823, 0, 324, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 821, 825, 828, 824, 822, 823, 0, 907, 0, + 0, 0, 0, 0, 0, 787, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 826, 0, 0, 0, 0, 0, + 0, 0, 796, 797, 0, 0, 0, 0, 852, 0, + 798, 0, 0, 847, 826, 830, 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 827, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, + 310, 0, 441, 350, 366, 347, 414, 827, 850, 854, + 346, 930, 848, 488, 313, 0, 487, 413, 474, 479, + 399, 392, 0, 312, 476, 397, 391, 379, 356, 931, 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, + 0, 647, 845, 0, 651, 0, 490, 0, 0, 914, 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, + 849, 0, 444, 419, 927, 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, @@ -3755,63 +3216,129 @@ var yyAct = [...]int{ 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, + 354, 396, 435, 361, 301, 302, 683, 911, 415, 616, + 649, 650, 541, 0, 926, 906, 908, 909, 913, 917, + 918, 919, 920, 921, 923, 925, 929, 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, + 633, 634, 635, 636, 637, 638, 639, 632, 928, 576, + 553, 579, 494, 556, 555, 0, 0, 590, 853, 591, + 592, 405, 406, 407, 408, 915, 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 418, 445, 323, 482, 454, 393, 570, 597, 937, 910, + 936, 938, 939, 935, 940, 941, 922, 808, 0, 860, + 933, 932, 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, + 343, 680, 676, 672, 681, 0, 0, 0, 815, 303, + 547, 386, 0, 433, 359, 612, 613, 0, 664, 899, + 867, 868, 869, 805, 870, 864, 865, 806, 866, 900, + 858, 896, 897, 834, 861, 871, 895, 872, 898, 901, + 902, 942, 943, 878, 862, 267, 944, 875, 903, 894, + 893, 873, 859, 904, 905, 841, 836, 876, 877, 863, + 882, 883, 884, 807, 885, 886, 887, 888, 889, 855, + 856, 857, 879, 880, 837, 838, 839, 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 215, 66, 206, 176, 0, 0, - 0, 0, 0, 0, 417, 710, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 717, - 0, 0, 0, 0, 0, 0, 0, 716, 0, 0, - 237, 0, 0, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 652, 653, 655, 657, 890, 659, 459, 460, 666, 0, + 881, 662, 663, 660, 390, 446, 465, 453, 851, 684, + 537, 538, 685, 648, 0, 800, 0, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 803, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 842, 588, 539, 455, + 401, 606, 605, 0, 0, 916, 924, 0, 0, 0, + 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, + 795, 0, 0, 832, 892, 891, 819, 829, 0, 0, + 321, 238, 534, 654, 536, 535, 820, 0, 821, 825, + 828, 824, 822, 823, 0, 907, 0, 0, 0, 0, + 0, 0, 787, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, + 797, 0, 0, 0, 0, 852, 0, 798, 0, 0, + 847, 826, 830, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 827, 850, 854, 346, 930, 848, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 931, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 845, + 0, 651, 0, 490, 0, 0, 914, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 849, 0, 444, + 419, 927, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 911, 415, 616, 649, 650, 541, + 0, 926, 906, 908, 909, 913, 917, 918, 919, 920, + 921, 923, 925, 929, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 928, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 853, 591, 592, 405, 406, + 407, 408, 915, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 937, 910, 936, 938, 939, + 935, 940, 941, 922, 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 815, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 899, 867, 868, 869, + 805, 870, 864, 865, 806, 866, 900, 858, 896, 897, + 834, 861, 871, 895, 872, 898, 901, 902, 942, 943, + 878, 862, 267, 944, 875, 903, 894, 893, 873, 859, + 904, 905, 841, 836, 876, 877, 863, 882, 883, 884, + 807, 885, 886, 887, 888, 889, 855, 856, 857, 879, + 880, 837, 838, 839, 840, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 890, 659, 459, 460, 666, 0, 3767, 662, 3768, + 3769, 390, 446, 465, 453, 851, 684, 537, 538, 685, + 648, 0, 800, 0, 417, 0, 0, 552, 585, 574, + 658, 540, 0, 0, 0, 0, 0, 0, 803, 0, + 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, + 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, + 533, 564, 565, 842, 588, 539, 455, 401, 606, 605, + 0, 0, 916, 924, 0, 0, 0, 0, 0, 0, + 0, 0, 912, 0, 0, 0, 0, 795, 0, 0, + 832, 892, 891, 819, 829, 0, 0, 321, 238, 534, + 654, 536, 535, 2865, 0, 2866, 825, 828, 824, 822, + 823, 0, 907, 0, 0, 0, 0, 0, 0, 787, + 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 796, 797, 0, 0, + 0, 0, 852, 0, 798, 0, 0, 847, 826, 830, 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, + 414, 827, 850, 854, 346, 930, 848, 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, + 391, 379, 356, 931, 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 714, 715, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, + 0, 0, 0, 0, 0, 647, 845, 0, 651, 0, + 490, 0, 0, 914, 0, 0, 0, 461, 0, 0, + 382, 0, 0, 0, 849, 0, 444, 419, 927, 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, @@ -3823,62 +3350,129 @@ var yyAct = [...]int{ 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, + 683, 911, 415, 616, 649, 650, 541, 0, 926, 906, + 908, 909, 913, 917, 918, 919, 920, 921, 923, 925, + 929, 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 711, - 713, 326, 513, 434, 725, 577, 0, 0, 0, 0, + 639, 632, 928, 576, 553, 579, 494, 556, 555, 0, + 0, 590, 853, 591, 592, 405, 406, 407, 408, 915, + 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 0, 0, 290, 0, 0, 0, 0, 0, 0, + 570, 597, 937, 910, 936, 938, 939, 935, 940, 941, + 922, 808, 0, 860, 933, 932, 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 177, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, + 0, 0, 815, 303, 547, 386, 0, 433, 359, 612, + 613, 0, 664, 899, 867, 868, 869, 805, 870, 864, + 865, 806, 866, 900, 858, 896, 897, 834, 861, 871, + 895, 872, 898, 901, 902, 942, 943, 878, 862, 267, + 944, 875, 903, 894, 893, 873, 859, 904, 905, 841, + 836, 876, 877, 863, 882, 883, 884, 807, 885, 886, + 887, 888, 889, 855, 856, 857, 879, 880, 837, 838, + 839, 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 1185, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, + 596, 608, 642, 0, 652, 653, 655, 657, 890, 659, + 459, 460, 666, 0, 881, 662, 663, 660, 390, 446, + 465, 453, 851, 684, 537, 538, 685, 648, 0, 800, + 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 1793, 0, 0, 0, 803, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 842, 588, 539, 455, 401, 606, 605, 0, 0, 916, + 924, 0, 0, 0, 0, 0, 0, 0, 0, 912, + 0, 0, 0, 0, 795, 0, 0, 832, 892, 891, + 819, 829, 0, 0, 321, 238, 534, 654, 536, 535, + 820, 0, 821, 825, 828, 824, 822, 823, 0, 907, + 0, 0, 0, 0, 0, 0, 0, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 796, 797, 0, 0, 0, 0, 852, + 0, 798, 0, 0, 847, 826, 830, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 827, 850, + 854, 346, 930, 848, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 931, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 845, 0, 651, 0, 490, 0, 0, + 914, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 849, 0, 444, 419, 927, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 1794, 1795, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 911, 415, + 616, 649, 650, 541, 0, 926, 906, 908, 909, 913, + 917, 918, 919, 920, 921, 923, 925, 929, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 928, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 853, + 591, 592, 405, 406, 407, 408, 915, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 937, + 910, 936, 938, 939, 935, 940, 941, 922, 808, 0, + 860, 933, 932, 934, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 815, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 899, 867, 868, 869, 805, 870, 864, 865, 806, 866, + 900, 858, 896, 897, 834, 861, 871, 895, 872, 898, + 901, 902, 942, 943, 878, 862, 267, 944, 875, 903, + 894, 893, 873, 859, 904, 905, 841, 836, 876, 877, + 863, 882, 883, 884, 807, 885, 886, 887, 888, 889, + 855, 856, 857, 879, 880, 837, 838, 839, 840, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 890, 659, 459, 460, 666, + 0, 881, 662, 663, 660, 390, 446, 465, 453, 851, + 684, 537, 538, 685, 648, 0, 800, 0, 417, 0, + 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, + 0, 0, 803, 0, 0, 0, 352, 0, 0, 385, + 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, + 561, 562, 532, 563, 533, 564, 565, 842, 588, 539, + 455, 401, 606, 605, 0, 0, 916, 924, 0, 0, + 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, + 0, 795, 0, 0, 832, 892, 891, 819, 829, 0, + 0, 321, 238, 534, 654, 536, 535, 820, 0, 821, + 825, 828, 824, 822, 823, 0, 907, 0, 0, 0, + 0, 0, 0, 0, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1170, 0, 0, 0, 0, 0, 0, 309, 462, + 796, 797, 0, 0, 0, 0, 852, 0, 798, 0, + 0, 847, 826, 830, 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 2697, 2700, 2701, 2702, 2703, 2704, 2705, 0, - 2710, 2706, 2707, 2708, 2709, 0, 2692, 2693, 2694, 2695, - 1168, 2676, 2698, 0, 2677, 413, 2678, 2679, 2680, 2681, - 1172, 2682, 2683, 2684, 2685, 2686, 2689, 2690, 2687, 2688, - 2696, 428, 389, 429, 371, 403, 402, 404, 1196, 1198, - 1200, 1202, 1205, 516, 517, 0, 0, 665, 0, 0, + 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, + 441, 350, 366, 347, 414, 827, 850, 854, 346, 930, + 848, 488, 313, 0, 487, 413, 474, 479, 399, 392, + 0, 312, 476, 397, 391, 379, 356, 931, 380, 381, + 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, + 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 2691, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, + 845, 0, 651, 0, 490, 0, 0, 914, 0, 0, + 0, 461, 0, 0, 382, 0, 0, 0, 849, 0, + 444, 419, 927, 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, @@ -3889,3980 +3483,4383 @@ var yyAct = [...]int{ 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, + 435, 361, 301, 302, 683, 911, 415, 616, 649, 650, + 541, 0, 926, 906, 908, 909, 913, 917, 918, 919, + 920, 921, 923, 925, 929, 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, + 635, 636, 637, 638, 639, 632, 928, 576, 553, 579, + 494, 556, 555, 0, 0, 590, 853, 591, 592, 405, + 406, 407, 408, 915, 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 323, 482, 454, 393, 570, 597, 937, 910, 936, 938, + 939, 935, 940, 941, 922, 808, 0, 860, 933, 932, + 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 2699, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, + 676, 672, 681, 0, 0, 0, 815, 303, 547, 386, + 0, 433, 359, 612, 613, 0, 664, 899, 867, 868, + 869, 805, 870, 864, 865, 806, 866, 900, 858, 896, + 897, 834, 861, 871, 895, 872, 898, 901, 902, 942, + 943, 878, 862, 267, 944, 875, 903, 894, 893, 873, + 859, 904, 905, 841, 836, 876, 877, 863, 882, 883, + 884, 807, 885, 886, 887, 888, 889, 855, 856, 857, + 879, 880, 837, 838, 839, 840, 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 2526, 2529, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 2530, 490, 0, - 0, 0, 2525, 0, 2524, 461, 2522, 2527, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 2528, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 2547, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 2546, 490, 0, 0, 0, 2552, 2549, 2551, 461, - 0, 2550, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 2544, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 655, 657, 890, 659, 459, 460, 666, 0, 881, 662, + 663, 660, 390, 446, 465, 453, 851, 684, 537, 538, + 685, 648, 0, 800, 0, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 803, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 842, 588, 539, 455, 401, 606, + 605, 0, 0, 916, 924, 0, 0, 0, 0, 0, + 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, + 0, 832, 892, 891, 819, 829, 0, 0, 321, 238, + 534, 654, 536, 535, 820, 0, 821, 825, 828, 824, + 822, 823, 0, 907, 0, 0, 0, 0, 0, 0, + 787, 799, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 796, 797, 0, + 0, 0, 0, 852, 0, 798, 0, 0, 847, 826, + 830, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 827, 850, 854, 346, 930, 848, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 931, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 845, 0, 651, + 0, 490, 0, 0, 914, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 849, 0, 444, 419, 927, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 911, 415, 616, 649, 650, 541, 0, 926, + 906, 908, 909, 913, 917, 918, 919, 920, 921, 923, + 925, 929, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 928, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 853, 591, 592, 405, 406, 407, 408, + 915, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 937, 910, 936, 938, 939, 935, 940, + 941, 922, 808, 0, 860, 933, 932, 934, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 815, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 899, 867, 868, 869, 805, 870, + 864, 865, 806, 866, 900, 858, 896, 897, 834, 861, + 871, 895, 872, 898, 901, 902, 942, 943, 878, 862, + 267, 944, 875, 903, 894, 893, 873, 859, 904, 905, + 841, 836, 876, 877, 863, 882, 883, 884, 807, 885, + 886, 887, 888, 889, 855, 856, 857, 879, 880, 837, + 838, 839, 840, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 890, + 659, 459, 460, 666, 0, 881, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 0, + 800, 215, 66, 206, 176, 0, 0, 0, 0, 0, + 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 207, 0, 0, 0, 0, 0, 0, 198, 0, 352, + 0, 208, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 147, 588, 539, 455, 401, 606, 605, 0, 0, 0, + 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, + 0, 0, 0, 0, 211, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, - 2547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 175, 204, 213, 205, 131, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 230, 0, 0, 0, 461, 0, 0, 382, 203, 197, + 196, 506, 0, 444, 419, 242, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 250, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 626, 627, 628, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 485, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 233, 598, 601, 531, 243, 0, + 595, 610, 568, 609, 244, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 145, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 241, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, + 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 248, 316, 672, 249, 0, 0, 0, 0, + 303, 547, 386, 177, 433, 359, 612, 613, 63, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 245, + 46, 231, 234, 236, 235, 0, 64, 596, 608, 642, + 5, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 150, + 246, 537, 538, 247, 648, 215, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 147, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, + 0, 237, 0, 0, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 2521, 2524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 2546, 490, 0, 0, 0, - 2552, 2549, 2551, 461, 0, 2550, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 2224, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 2525, 490, 0, 0, 0, 2520, 0, 2519, 461, 2517, + 2522, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 2523, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 177, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 2225, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 1307, 1308, 1309, 1306, 0, + 0, 0, 1373, 0, 0, 237, 0, 0, 819, 829, + 0, 0, 321, 238, 534, 654, 536, 535, 820, 0, + 821, 825, 828, 824, 822, 823, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 215, 684, 537, 538, 685, 648, 0, 0, - 0, 0, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 826, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 827, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 147, 588, 539, 455, 401, 606, 605, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 211, 2274, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 215, 66, 206, 176, 0, 0, 0, + 0, 0, 0, 417, 710, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 717, 0, + 0, 0, 0, 0, 0, 0, 716, 0, 0, 237, + 0, 0, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 714, 715, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 711, 713, + 326, 513, 434, 725, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 177, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 1180, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 177, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 215, 684, 537, 538, 685, 648, 0, 0, 0, 0, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 147, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 211, 2259, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1165, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 2692, 2695, 2696, 2697, 2698, 2699, 2700, 0, 2705, + 2701, 2702, 2703, 2704, 0, 2687, 2688, 2689, 2690, 1163, + 2671, 2693, 0, 2672, 413, 2673, 2674, 2675, 2676, 1167, + 2677, 2678, 2679, 2680, 2681, 2684, 2685, 2682, 2683, 2691, + 428, 389, 429, 371, 403, 402, 404, 1191, 1193, 1195, + 1197, 1200, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 2686, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 2694, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, + 2521, 2524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 177, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 1095, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 1102, 1103, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 2525, 490, 0, 0, + 0, 2520, 0, 2519, 461, 2517, 2522, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 2523, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 2542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 1089, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 1074, 488, 313, 1073, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 1093, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 1094, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 1097, 591, 592, 405, 406, 407, 408, 365, - 617, 1092, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 1104, 1090, 1100, 1091, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 1101, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 1088, 446, - 465, 453, 215, 684, 537, 538, 685, 648, 0, 0, - 0, 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 147, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2155, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 2541, 490, 0, 0, 0, 2547, 2544, 2546, 461, 0, + 2545, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 2539, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 2542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 177, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 1102, 1103, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, + 647, 0, 0, 651, 2541, 490, 0, 0, 0, 2547, + 2544, 2546, 461, 0, 2545, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 2212, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 2213, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 1302, 1303, 1304, 1301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 1074, 488, - 313, 1073, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 1104, 2176, - 1100, 2177, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 1101, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 3123, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 215, 684, 537, 538, 685, 648, 0, 0, 0, + 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 147, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 211, 2262, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, - 0, 0, 0, 0, 0, 0, 3126, 0, 0, 0, - 3125, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 1619, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 177, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 215, + 684, 537, 538, 685, 648, 0, 0, 0, 0, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 147, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 1617, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 211, 2247, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1615, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 1613, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 1617, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 177, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 1090, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 1097, 1098, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1615, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 309, 462, 1084, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 1069, 488, 313, 1068, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 1088, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 1089, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 1092, 591, 592, 405, 406, 407, 408, 365, 617, + 1087, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 1099, 1085, 1095, 1086, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 1096, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 1083, 446, 465, + 453, 215, 684, 537, 538, 685, 648, 0, 0, 0, + 0, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 147, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, + 0, 0, 0, 0, 2143, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4327, 0, 237, 892, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 177, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 1617, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 237, 1097, 1098, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1615, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 1069, 488, 313, + 1068, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 1099, 2164, 1095, + 2165, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 1096, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 3117, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 1617, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1829, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, + 0, 0, 0, 0, 0, 3120, 0, 0, 0, 3119, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 1613, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 2638, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 1611, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 2640, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1609, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 1607, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 1611, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 2224, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 2225, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1609, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4320, 0, 237, 892, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 3361, 3363, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 1611, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 2661, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 1617, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1609, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 1611, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 698, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 1823, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 2633, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 2635, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 697, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 2212, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, + 0, 0, 0, 237, 0, 0, 2213, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 892, 0, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 3354, 3356, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4304, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 2656, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, + 0, 237, 0, 0, 1611, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 4048, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 698, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 697, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 4189, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 892, 0, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1843, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4297, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 4038, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4063, 0, - 237, 0, 0, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 3960, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 4181, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, + 0, 0, 1837, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 3394, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 3832, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4053, 0, 237, + 0, 0, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3413, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 3951, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 3387, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2155, 0, 0, - 237, 0, 0, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 3645, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, + 0, 237, 0, 0, 3825, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3406, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3531, 0, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2143, 0, 0, 237, + 0, 0, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 3637, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 1617, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 2640, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 3034, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 1611, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 2635, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 2759, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 3028, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 0, 0, 0, 0, 2283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 2754, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 2719, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 2475, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2716, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 2714, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 1996, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 2462, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 2137, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 1989, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 1617, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 2125, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 2035, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + 0, 0, 0, 0, 0, 237, 0, 0, 1611, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 2020, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 1647, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 698, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 1641, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 698, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 708, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 708, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 480, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 1019, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 480, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 1014, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 473, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 473, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 677, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 3334, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 677, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 3328, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 1981, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 436, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 639, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 1975, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 436, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 639, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 1596, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, + 0, 309, 462, 1590, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 672, 681, 0, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 0, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 417, 0, 0, 552, - 585, 574, 658, 540, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 0, 0, 385, 589, 571, - 581, 572, 557, 558, 559, 566, 364, 560, 561, 562, - 532, 563, 533, 564, 565, 0, 588, 539, 455, 401, - 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 672, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 0, + 684, 537, 538, 685, 648, 417, 0, 0, 552, 585, + 574, 658, 540, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 385, 589, 571, 581, + 572, 557, 558, 559, 566, 364, 560, 561, 562, 532, + 563, 533, 564, 565, 0, 588, 539, 455, 401, 606, + 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 321, - 238, 534, 654, 536, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 0, 0, 0, 321, 238, + 534, 654, 536, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 309, 462, 1594, 322, - 450, 493, 327, 458, 473, 317, 416, 447, 0, 0, - 311, 478, 457, 398, 375, 376, 310, 0, 441, 350, - 366, 347, 414, 0, 477, 505, 346, 496, 0, 488, - 313, 0, 487, 413, 474, 479, 399, 392, 0, 312, - 476, 397, 391, 379, 356, 521, 380, 381, 370, 428, - 389, 429, 371, 403, 402, 404, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, - 651, 0, 490, 0, 0, 0, 0, 0, 0, 461, - 0, 0, 382, 0, 0, 0, 506, 0, 444, 419, - 687, 0, 0, 442, 387, 475, 430, 481, 463, 489, - 436, 431, 304, 464, 349, 400, 318, 320, 677, 351, - 353, 357, 358, 409, 410, 424, 449, 466, 467, 468, - 348, 332, 443, 333, 368, 334, 305, 340, 338, 341, - 451, 342, 307, 425, 472, 0, 363, 439, 395, 308, - 394, 426, 471, 470, 319, 497, 503, 504, 593, 0, - 509, 688, 689, 690, 518, 0, 432, 315, 314, 0, - 0, 0, 344, 427, 328, 330, 331, 329, 422, 423, - 523, 524, 525, 527, 528, 529, 530, 594, 611, 578, - 548, 511, 602, 545, 549, 550, 373, 614, 0, 0, - 0, 502, 383, 384, 0, 355, 354, 396, 435, 361, - 301, 302, 683, 345, 415, 616, 649, 650, 541, 0, - 603, 542, 551, 337, 575, 587, 586, 411, 501, 0, - 598, 601, 531, 682, 0, 595, 610, 686, 609, 679, - 421, 0, 448, 607, 554, 0, 599, 573, 0, 600, - 569, 604, 0, 543, 0, 456, 483, 495, 512, 515, - 544, 629, 630, 631, 306, 514, 633, 634, 635, 636, - 637, 638, 639, 632, 486, 576, 553, 579, 494, 556, - 555, 0, 0, 590, 510, 591, 592, 405, 406, 407, - 408, 365, 617, 326, 513, 434, 0, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 582, 583, 580, 691, - 0, 640, 641, 0, 0, 507, 508, 360, 367, 526, - 369, 325, 420, 362, 492, 377, 0, 519, 584, 520, - 437, 438, 643, 646, 644, 645, 0, 0, 412, 372, - 374, 452, 378, 388, 440, 491, 418, 445, 323, 482, - 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 309, 462, 1588, 322, 450, + 493, 327, 458, 473, 317, 416, 447, 0, 0, 311, + 478, 457, 398, 375, 376, 310, 0, 441, 350, 366, + 347, 414, 0, 477, 505, 346, 496, 0, 488, 313, + 0, 487, 413, 474, 479, 399, 392, 0, 312, 476, + 397, 391, 379, 356, 521, 380, 381, 370, 428, 389, + 429, 371, 403, 402, 404, 0, 0, 0, 0, 0, + 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 647, 0, 0, 651, + 0, 490, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 382, 0, 0, 0, 506, 0, 444, 419, 687, + 0, 0, 442, 387, 475, 430, 481, 463, 489, 436, + 431, 304, 464, 349, 400, 318, 320, 677, 351, 353, + 357, 358, 409, 410, 424, 449, 466, 467, 468, 348, + 332, 443, 333, 368, 334, 305, 340, 338, 341, 451, + 342, 307, 425, 472, 0, 363, 439, 395, 308, 394, + 426, 471, 470, 319, 497, 503, 504, 593, 0, 509, + 688, 689, 690, 518, 0, 432, 315, 314, 0, 0, + 0, 344, 427, 328, 330, 331, 329, 422, 423, 523, + 524, 525, 527, 528, 529, 530, 594, 611, 578, 548, + 511, 602, 545, 549, 550, 373, 614, 0, 0, 0, + 502, 383, 384, 0, 355, 354, 396, 435, 361, 301, + 302, 683, 345, 415, 616, 649, 650, 541, 0, 603, + 542, 551, 337, 575, 587, 586, 411, 501, 0, 598, + 601, 531, 682, 0, 595, 610, 686, 609, 679, 421, + 0, 448, 607, 554, 0, 599, 573, 0, 600, 569, + 604, 0, 543, 0, 456, 483, 495, 512, 515, 544, + 629, 630, 631, 306, 514, 633, 634, 635, 636, 637, + 638, 639, 632, 486, 576, 553, 579, 494, 556, 555, + 0, 0, 590, 510, 591, 592, 405, 406, 407, 408, + 365, 617, 326, 513, 434, 0, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 582, 583, 580, 691, 0, + 640, 641, 0, 0, 507, 508, 360, 367, 526, 369, + 325, 420, 362, 492, 377, 0, 519, 584, 520, 437, + 438, 643, 646, 644, 645, 0, 0, 412, 372, 374, + 452, 378, 388, 440, 491, 418, 445, 323, 482, 454, + 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, + 624, 623, 622, 621, 620, 619, 618, 0, 0, 567, + 469, 339, 295, 335, 336, 343, 680, 676, 672, 681, + 0, 0, 0, 0, 303, 547, 386, 0, 433, 359, + 612, 613, 0, 664, 251, 252, 253, 254, 255, 256, + 257, 258, 296, 259, 260, 261, 262, 263, 264, 265, + 268, 269, 270, 271, 272, 273, 274, 275, 615, 266, + 267, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 0, 0, 0, 297, 667, + 668, 669, 670, 671, 298, 299, 300, 0, 0, 291, + 292, 293, 294, 0, 0, 0, 498, 499, 500, 522, + 0, 484, 546, 678, 0, 0, 0, 0, 0, 0, + 0, 596, 608, 642, 0, 652, 653, 655, 657, 656, + 659, 459, 460, 666, 0, 661, 662, 663, 660, 390, + 446, 465, 453, 0, 684, 537, 538, 685, 648, 417, + 0, 0, 552, 585, 574, 658, 540, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 385, 589, 571, 581, 572, 557, 558, 559, 566, 364, + 560, 561, 562, 532, 563, 533, 564, 565, 0, 588, + 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 624, 623, 622, 621, 620, 619, 618, 0, 0, - 567, 469, 339, 295, 335, 336, 343, 680, 676, 672, - 681, 0, 0, 0, 0, 303, 547, 386, 0, 433, - 359, 612, 613, 0, 664, 251, 252, 253, 254, 255, - 256, 257, 258, 296, 259, 260, 261, 262, 263, 264, - 265, 268, 269, 270, 271, 272, 273, 274, 275, 615, - 266, 267, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 297, - 667, 668, 669, 670, 671, 298, 299, 300, 0, 0, - 291, 292, 293, 294, 0, 0, 0, 498, 499, 500, - 522, 0, 484, 546, 678, 0, 0, 0, 0, 0, - 0, 0, 596, 608, 642, 0, 652, 653, 655, 657, - 656, 659, 459, 460, 666, 0, 661, 662, 663, 660, - 390, 446, 465, 453, 0, 684, 537, 538, 685, 648, - 417, 0, 0, 552, 585, 574, 658, 540, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, - 0, 385, 589, 571, 581, 572, 557, 558, 559, 566, - 364, 560, 561, 562, 532, 563, 533, 564, 565, 0, - 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 321, 238, 534, 654, 536, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, - 0, 0, 0, 321, 238, 534, 654, 536, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 462, 480, 322, 450, 493, 327, 458, 1462, 317, 416, + 447, 0, 0, 311, 478, 457, 398, 375, 376, 310, + 0, 441, 350, 366, 347, 414, 0, 477, 505, 346, + 496, 0, 488, 313, 0, 487, 413, 474, 479, 399, + 392, 0, 312, 476, 397, 391, 379, 356, 521, 380, + 381, 370, 428, 389, 429, 371, 403, 402, 404, 0, + 0, 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 0, 0, 651, 0, 490, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 382, 0, 0, 0, 506, + 0, 444, 419, 687, 0, 0, 442, 387, 475, 430, + 481, 463, 489, 436, 431, 304, 464, 349, 400, 318, + 320, 677, 351, 353, 357, 358, 409, 410, 424, 449, + 466, 467, 468, 348, 332, 443, 333, 368, 334, 305, + 340, 338, 341, 451, 342, 307, 425, 472, 0, 363, + 439, 395, 308, 394, 426, 471, 470, 319, 497, 503, + 504, 593, 0, 509, 688, 689, 690, 518, 0, 432, + 315, 314, 0, 0, 0, 344, 427, 328, 330, 331, + 329, 422, 423, 523, 524, 525, 527, 528, 529, 530, + 594, 611, 578, 548, 511, 602, 545, 549, 550, 373, + 614, 0, 0, 0, 502, 383, 384, 0, 355, 354, + 396, 435, 361, 301, 302, 683, 345, 415, 616, 649, + 650, 541, 0, 603, 542, 551, 337, 575, 587, 586, + 411, 501, 0, 598, 601, 531, 682, 0, 595, 610, + 686, 609, 679, 421, 0, 448, 607, 554, 0, 599, + 573, 0, 600, 569, 604, 0, 543, 0, 456, 483, + 495, 512, 515, 544, 629, 630, 631, 306, 514, 633, + 634, 635, 636, 637, 638, 639, 632, 486, 576, 553, + 579, 494, 556, 555, 0, 0, 590, 510, 591, 592, + 405, 406, 407, 408, 365, 617, 326, 513, 434, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 582, + 583, 580, 691, 0, 640, 641, 0, 0, 507, 508, + 360, 367, 526, 369, 325, 420, 362, 492, 377, 0, + 519, 584, 520, 437, 438, 643, 646, 644, 645, 0, + 0, 412, 372, 374, 452, 378, 388, 440, 491, 418, + 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 309, 462, 480, 322, 450, 493, 327, 458, 1467, 317, - 416, 447, 0, 0, 311, 478, 457, 398, 375, 376, - 310, 0, 441, 350, 366, 347, 414, 0, 477, 505, - 346, 496, 0, 488, 313, 0, 487, 413, 474, 479, - 399, 392, 0, 312, 476, 397, 391, 379, 356, 521, - 380, 381, 370, 428, 389, 429, 371, 403, 402, 404, - 0, 0, 0, 0, 0, 516, 517, 0, 0, 665, + 0, 0, 0, 625, 624, 623, 622, 621, 620, 619, + 618, 0, 0, 567, 469, 339, 295, 335, 336, 343, + 680, 676, 672, 681, 0, 0, 0, 0, 303, 547, + 386, 0, 433, 359, 612, 613, 0, 664, 251, 252, + 253, 254, 255, 256, 257, 258, 296, 259, 260, 261, + 262, 263, 264, 265, 268, 269, 270, 271, 272, 273, + 274, 275, 615, 266, 267, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, + 0, 0, 297, 667, 668, 669, 670, 671, 298, 299, + 300, 0, 0, 291, 292, 293, 294, 0, 0, 0, + 498, 499, 500, 522, 0, 484, 546, 678, 0, 0, + 0, 0, 0, 0, 0, 596, 608, 642, 0, 652, + 653, 655, 657, 656, 659, 459, 460, 666, 0, 661, + 662, 663, 660, 390, 446, 465, 453, 0, 684, 537, + 538, 685, 648, 417, 0, 0, 552, 585, 574, 658, + 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 385, 589, 571, 581, 572, 557, + 558, 559, 566, 364, 560, 561, 562, 532, 563, 533, + 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 647, 0, 0, 651, 0, 490, 0, 0, 0, - 0, 0, 0, 461, 0, 0, 382, 0, 0, 0, - 506, 0, 444, 419, 687, 0, 0, 442, 387, 475, - 430, 481, 463, 489, 436, 431, 304, 464, 349, 400, - 318, 320, 677, 351, 353, 357, 358, 409, 410, 424, - 449, 466, 467, 468, 348, 332, 443, 333, 368, 334, - 305, 340, 338, 341, 451, 342, 307, 425, 472, 0, - 363, 439, 395, 308, 394, 426, 471, 470, 319, 497, - 503, 504, 593, 0, 509, 688, 689, 690, 518, 0, - 432, 315, 314, 0, 0, 0, 344, 427, 328, 330, - 331, 329, 422, 423, 523, 524, 525, 527, 528, 529, - 530, 594, 611, 578, 548, 511, 602, 545, 549, 550, - 373, 614, 0, 0, 0, 502, 383, 384, 0, 355, - 354, 396, 435, 361, 301, 302, 683, 345, 415, 616, - 649, 650, 541, 0, 603, 542, 551, 337, 575, 587, - 586, 411, 501, 0, 598, 601, 531, 682, 0, 595, - 610, 686, 609, 679, 421, 0, 448, 607, 554, 0, - 599, 573, 0, 600, 569, 604, 0, 543, 0, 456, - 483, 495, 512, 515, 544, 629, 630, 631, 306, 514, - 633, 634, 635, 636, 637, 638, 639, 632, 486, 576, - 553, 579, 494, 556, 555, 0, 0, 590, 510, 591, - 592, 405, 406, 407, 408, 365, 617, 326, 513, 434, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 582, 583, 580, 691, 0, 640, 641, 0, 0, 507, - 508, 360, 367, 526, 369, 325, 420, 362, 492, 377, - 0, 519, 584, 520, 437, 438, 643, 646, 644, 645, - 0, 0, 412, 372, 374, 452, 378, 388, 440, 491, - 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 0, 0, 0, 0, 0, 0, 321, 238, 534, 654, + 536, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 625, 624, 623, 622, 621, 620, - 619, 618, 0, 0, 567, 469, 339, 295, 335, 336, - 343, 680, 676, 672, 681, 0, 0, 0, 0, 303, - 547, 386, 0, 433, 359, 612, 613, 0, 664, 251, - 252, 253, 254, 255, 256, 257, 258, 296, 259, 260, - 261, 262, 263, 264, 265, 268, 269, 270, 271, 272, - 273, 274, 275, 615, 266, 267, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 297, 667, 668, 669, 670, 671, 298, - 299, 300, 0, 0, 291, 292, 293, 294, 0, 0, - 0, 498, 499, 500, 522, 0, 484, 546, 678, 0, - 0, 0, 0, 0, 0, 0, 596, 608, 642, 0, - 652, 653, 655, 657, 656, 659, 459, 460, 666, 0, - 661, 662, 663, 660, 390, 446, 465, 453, 0, 684, - 537, 538, 685, 648, 417, 0, 0, 552, 585, 574, - 658, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 0, 0, 385, 589, 571, 581, 572, - 557, 558, 559, 566, 364, 560, 561, 562, 532, 563, - 533, 564, 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 237, 0, 0, 0, 0, 0, 0, 321, 238, 534, - 654, 536, 535, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 462, 480, 322, 450, 493, 327, + 458, 473, 317, 416, 447, 0, 0, 311, 478, 457, + 398, 375, 376, 310, 0, 441, 350, 366, 347, 414, + 0, 477, 505, 346, 496, 0, 488, 313, 0, 487, + 413, 474, 479, 399, 392, 0, 312, 476, 397, 391, + 379, 356, 521, 380, 381, 370, 428, 389, 429, 371, + 403, 402, 404, 0, 0, 0, 0, 0, 516, 517, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 647, 0, 0, 651, 0, 490, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 382, + 0, 0, 0, 506, 0, 444, 419, 687, 0, 0, + 442, 387, 475, 430, 481, 463, 489, 436, 431, 304, + 464, 349, 400, 318, 320, 782, 351, 353, 357, 358, + 409, 410, 424, 449, 466, 467, 468, 348, 332, 443, + 333, 368, 334, 305, 340, 338, 341, 451, 342, 307, + 425, 472, 0, 363, 439, 395, 308, 394, 426, 471, + 470, 319, 497, 503, 504, 593, 0, 509, 688, 689, + 690, 518, 0, 432, 315, 314, 0, 0, 0, 344, + 427, 328, 330, 331, 329, 422, 423, 523, 524, 525, + 527, 528, 529, 530, 594, 611, 578, 548, 511, 602, + 545, 549, 550, 373, 614, 0, 0, 0, 502, 383, + 384, 0, 355, 354, 396, 435, 361, 301, 302, 683, + 345, 415, 616, 649, 650, 541, 0, 603, 542, 551, + 337, 575, 587, 586, 411, 501, 0, 598, 601, 531, + 682, 0, 595, 610, 686, 609, 679, 421, 0, 448, + 607, 554, 0, 599, 573, 0, 600, 569, 604, 0, + 543, 0, 456, 483, 495, 512, 515, 544, 629, 630, + 631, 306, 514, 633, 634, 635, 636, 637, 638, 639, + 632, 486, 576, 553, 579, 494, 556, 555, 0, 0, + 590, 510, 591, 592, 405, 406, 407, 408, 365, 617, + 326, 513, 434, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 582, 583, 580, 691, 0, 640, 641, + 0, 0, 507, 508, 360, 367, 526, 369, 325, 420, + 362, 492, 377, 0, 519, 584, 520, 437, 438, 643, + 646, 644, 645, 0, 0, 412, 372, 374, 452, 378, + 388, 440, 491, 418, 445, 323, 482, 454, 393, 570, + 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 624, 623, + 622, 621, 620, 619, 618, 0, 0, 567, 469, 339, + 295, 335, 336, 343, 680, 676, 672, 681, 0, 0, + 0, 0, 303, 547, 386, 0, 433, 359, 612, 613, + 0, 664, 251, 252, 253, 254, 255, 256, 257, 258, + 296, 259, 260, 261, 262, 263, 264, 265, 268, 269, + 270, 271, 272, 273, 274, 275, 615, 266, 267, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 0, 0, 0, 297, 667, 668, 669, + 670, 671, 298, 299, 300, 0, 0, 291, 292, 293, + 294, 0, 0, 0, 498, 499, 500, 522, 0, 484, + 546, 678, 0, 0, 0, 0, 0, 0, 0, 596, + 608, 642, 0, 652, 653, 655, 657, 656, 659, 459, + 460, 666, 0, 661, 662, 663, 660, 390, 446, 465, + 453, 0, 684, 537, 538, 685, 648, 417, 0, 0, + 552, 585, 574, 658, 540, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 0, 385, 589, + 571, 581, 572, 557, 558, 559, 566, 364, 560, 561, + 562, 532, 563, 533, 564, 565, 0, 588, 539, 455, + 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 321, 238, 534, 654, 536, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 309, 462, 480, + 322, 450, 493, 327, 458, 473, 317, 416, 447, 0, + 0, 311, 478, 457, 398, 375, 376, 310, 0, 441, + 350, 366, 347, 414, 0, 477, 505, 346, 496, 0, + 488, 313, 0, 487, 413, 474, 479, 399, 392, 0, + 312, 476, 397, 391, 379, 356, 521, 380, 381, 370, + 428, 389, 429, 371, 403, 402, 404, 0, 0, 0, + 0, 0, 516, 517, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, + 0, 651, 0, 490, 0, 0, 0, 0, 0, 0, + 461, 0, 0, 382, 0, 0, 0, 506, 0, 444, + 419, 687, 0, 0, 442, 387, 475, 430, 481, 463, + 489, 734, 431, 304, 464, 349, 400, 318, 320, 677, + 351, 353, 357, 358, 409, 410, 424, 449, 466, 467, + 468, 348, 332, 443, 333, 368, 334, 305, 340, 338, + 341, 451, 342, 307, 425, 472, 0, 363, 439, 395, + 308, 394, 426, 471, 470, 319, 497, 503, 504, 593, + 0, 509, 688, 689, 690, 518, 0, 432, 315, 314, + 0, 0, 0, 344, 427, 328, 330, 331, 329, 422, + 423, 523, 524, 525, 527, 528, 529, 530, 594, 611, + 578, 548, 511, 602, 545, 549, 550, 373, 614, 0, + 0, 0, 502, 383, 384, 0, 355, 354, 396, 435, + 361, 301, 302, 683, 345, 415, 616, 649, 650, 541, + 0, 603, 542, 551, 337, 575, 587, 586, 411, 501, + 0, 598, 601, 531, 682, 0, 595, 610, 686, 609, + 679, 421, 0, 448, 607, 554, 0, 599, 573, 0, + 600, 569, 604, 0, 543, 0, 456, 483, 495, 512, + 515, 544, 629, 630, 631, 306, 514, 633, 634, 635, + 636, 637, 638, 735, 632, 486, 576, 553, 579, 494, + 556, 555, 0, 0, 590, 510, 591, 592, 405, 406, + 407, 408, 365, 617, 326, 513, 434, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 582, 583, 580, + 691, 0, 640, 641, 0, 0, 507, 508, 360, 367, + 526, 369, 325, 420, 362, 492, 377, 0, 519, 584, + 520, 437, 438, 643, 646, 644, 645, 0, 0, 412, + 372, 374, 452, 378, 388, 440, 491, 418, 445, 323, + 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 624, 623, 622, 621, 620, 619, 618, 0, + 0, 567, 469, 339, 295, 335, 336, 343, 680, 676, + 672, 681, 0, 0, 0, 0, 303, 547, 386, 0, + 433, 359, 612, 613, 0, 664, 251, 252, 253, 254, + 255, 256, 257, 258, 296, 259, 260, 261, 262, 263, + 264, 265, 268, 269, 270, 271, 272, 273, 274, 275, + 615, 266, 267, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, + 297, 667, 668, 669, 670, 671, 298, 299, 300, 0, + 0, 291, 292, 293, 294, 0, 0, 0, 498, 499, + 500, 522, 0, 484, 546, 678, 0, 0, 0, 0, + 0, 0, 0, 596, 608, 642, 0, 652, 653, 655, + 657, 656, 659, 459, 460, 666, 0, 661, 662, 663, + 660, 390, 446, 465, 453, 0, 684, 537, 538, 685, + 648, 417, 0, 0, 552, 585, 574, 658, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 385, 589, 571, 581, 572, 557, 558, 559, + 566, 364, 560, 561, 562, 532, 563, 533, 564, 565, + 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 0, 0, 0, 321, 238, 534, 654, 536, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 309, 462, 480, 322, 450, 493, - 327, 458, 473, 317, 416, 447, 0, 0, 311, 478, - 457, 398, 375, 376, 310, 0, 441, 350, 366, 347, - 414, 0, 477, 505, 346, 496, 0, 488, 313, 0, - 487, 413, 474, 479, 399, 392, 0, 312, 476, 397, - 391, 379, 356, 521, 380, 381, 370, 428, 389, 429, - 371, 403, 402, 404, 0, 0, 0, 0, 0, 516, - 517, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 647, 0, 0, 651, 0, - 490, 0, 0, 0, 0, 0, 0, 461, 0, 0, - 382, 0, 0, 0, 506, 0, 444, 419, 687, 0, - 0, 442, 387, 475, 430, 481, 463, 489, 436, 431, - 304, 464, 349, 400, 318, 320, 782, 351, 353, 357, - 358, 409, 410, 424, 449, 466, 467, 468, 348, 332, - 443, 333, 368, 334, 305, 340, 338, 341, 451, 342, - 307, 425, 472, 0, 363, 439, 395, 308, 394, 426, - 471, 470, 319, 497, 503, 504, 593, 0, 509, 688, - 689, 690, 518, 0, 432, 315, 314, 0, 0, 0, - 344, 427, 328, 330, 331, 329, 422, 423, 523, 524, - 525, 527, 528, 529, 530, 594, 611, 578, 548, 511, - 602, 545, 549, 550, 373, 614, 0, 0, 0, 502, - 383, 384, 0, 355, 354, 396, 435, 361, 301, 302, - 683, 345, 415, 616, 649, 650, 541, 0, 603, 542, - 551, 337, 575, 587, 586, 411, 501, 0, 598, 601, - 531, 682, 0, 595, 610, 686, 609, 679, 421, 0, - 448, 607, 554, 0, 599, 573, 0, 600, 569, 604, - 0, 543, 0, 456, 483, 495, 512, 515, 544, 629, - 630, 631, 306, 514, 633, 634, 635, 636, 637, 638, - 639, 632, 486, 576, 553, 579, 494, 556, 555, 0, - 0, 590, 510, 591, 592, 405, 406, 407, 408, 365, - 617, 326, 513, 434, 0, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 582, 583, 580, 691, 0, 640, - 641, 0, 0, 507, 508, 360, 367, 526, 369, 325, - 420, 362, 492, 377, 0, 519, 584, 520, 437, 438, - 643, 646, 644, 645, 0, 0, 412, 372, 374, 452, - 378, 388, 440, 491, 418, 445, 323, 482, 454, 393, - 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 624, - 623, 622, 621, 620, 619, 618, 0, 0, 567, 469, - 339, 295, 335, 336, 343, 680, 676, 672, 681, 0, - 0, 0, 0, 303, 547, 386, 0, 433, 359, 612, - 613, 0, 664, 251, 252, 253, 254, 255, 256, 257, - 258, 296, 259, 260, 261, 262, 263, 264, 265, 268, - 269, 270, 271, 272, 273, 274, 275, 615, 266, 267, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 297, 667, 668, - 669, 670, 671, 298, 299, 300, 0, 0, 291, 292, - 293, 294, 0, 0, 0, 498, 499, 500, 522, 0, - 484, 546, 678, 0, 0, 0, 0, 0, 0, 0, - 596, 608, 642, 0, 652, 653, 655, 657, 656, 659, - 459, 460, 666, 0, 661, 662, 663, 660, 390, 446, - 465, 453, 0, 684, 537, 538, 685, 648, 417, 0, - 0, 552, 585, 574, 658, 540, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 385, - 589, 571, 581, 572, 557, 558, 559, 566, 364, 560, - 561, 562, 532, 563, 533, 564, 565, 0, 588, 539, - 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 321, 238, 534, 654, 536, 535, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 462, 480, 322, 450, 493, 327, 458, 473, + 317, 416, 447, 0, 0, 311, 478, 457, 398, 375, + 376, 310, 0, 441, 350, 366, 347, 414, 0, 477, + 505, 346, 496, 0, 488, 313, 0, 487, 413, 474, + 479, 399, 392, 0, 312, 476, 397, 391, 379, 356, + 521, 380, 381, 370, 428, 389, 429, 371, 403, 402, + 404, 0, 0, 0, 0, 0, 516, 517, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 647, 0, 0, 651, 0, 490, 0, 0, + 0, 0, 0, 0, 461, 0, 0, 382, 0, 0, + 0, 506, 0, 444, 419, 687, 0, 0, 442, 387, + 475, 430, 481, 463, 489, 436, 431, 304, 464, 349, + 400, 318, 320, 677, 351, 353, 357, 358, 409, 410, + 424, 449, 466, 467, 468, 348, 332, 443, 333, 368, + 334, 305, 340, 338, 341, 451, 342, 307, 425, 472, + 0, 363, 439, 395, 308, 394, 426, 471, 470, 319, + 497, 503, 504, 593, 0, 509, 688, 689, 690, 518, + 0, 432, 315, 314, 0, 0, 0, 344, 427, 328, + 330, 331, 329, 422, 423, 523, 524, 525, 527, 528, + 529, 530, 594, 611, 578, 548, 511, 602, 545, 549, + 550, 373, 614, 0, 0, 0, 502, 383, 384, 0, + 355, 354, 396, 435, 361, 301, 302, 683, 345, 415, + 616, 649, 650, 541, 0, 603, 542, 551, 337, 575, + 587, 586, 411, 501, 0, 598, 601, 531, 682, 0, + 595, 610, 686, 609, 679, 421, 0, 448, 607, 554, + 0, 599, 573, 0, 600, 569, 604, 0, 543, 0, + 456, 483, 495, 512, 515, 544, 629, 630, 631, 306, + 514, 633, 634, 635, 636, 637, 638, 639, 632, 486, + 576, 553, 579, 494, 556, 555, 0, 0, 590, 510, + 591, 592, 405, 406, 407, 408, 365, 617, 326, 513, + 434, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 582, 583, 580, 691, 0, 640, 641, 0, 0, + 507, 508, 360, 367, 526, 369, 325, 420, 362, 492, + 377, 0, 519, 584, 520, 437, 438, 643, 646, 644, + 645, 0, 0, 412, 372, 374, 452, 378, 388, 440, + 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 462, - 480, 322, 450, 493, 327, 458, 473, 317, 416, 447, - 0, 0, 311, 478, 457, 398, 375, 376, 310, 0, - 441, 350, 366, 347, 414, 0, 477, 505, 346, 496, - 0, 488, 313, 0, 487, 413, 474, 479, 399, 392, - 0, 312, 476, 397, 391, 379, 356, 521, 380, 381, - 370, 428, 389, 429, 371, 403, 402, 404, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 665, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, - 0, 0, 651, 0, 490, 0, 0, 0, 0, 0, - 0, 461, 0, 0, 382, 0, 0, 0, 506, 0, - 444, 419, 687, 0, 0, 442, 387, 475, 430, 481, - 463, 489, 734, 431, 304, 464, 349, 400, 318, 320, - 677, 351, 353, 357, 358, 409, 410, 424, 449, 466, - 467, 468, 348, 332, 443, 333, 368, 334, 305, 340, - 338, 341, 451, 342, 307, 425, 472, 0, 363, 439, - 395, 308, 394, 426, 471, 470, 319, 497, 503, 504, - 593, 0, 509, 688, 689, 690, 518, 0, 432, 315, - 314, 0, 0, 0, 344, 427, 328, 330, 331, 329, - 422, 423, 523, 524, 525, 527, 528, 529, 530, 594, - 611, 578, 548, 511, 602, 545, 549, 550, 373, 614, - 0, 0, 0, 502, 383, 384, 0, 355, 354, 396, - 435, 361, 301, 302, 683, 345, 415, 616, 649, 650, - 541, 0, 603, 542, 551, 337, 575, 587, 586, 411, - 501, 0, 598, 601, 531, 682, 0, 595, 610, 686, - 609, 679, 421, 0, 448, 607, 554, 0, 599, 573, - 0, 600, 569, 604, 0, 543, 0, 456, 483, 495, - 512, 515, 544, 629, 630, 631, 306, 514, 633, 634, - 635, 636, 637, 638, 735, 632, 486, 576, 553, 579, - 494, 556, 555, 0, 0, 590, 510, 591, 592, 405, - 406, 407, 408, 365, 617, 326, 513, 434, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 580, 691, 0, 640, 641, 0, 0, 507, 508, 360, - 367, 526, 369, 325, 420, 362, 492, 377, 0, 519, - 584, 520, 437, 438, 643, 646, 644, 645, 0, 0, - 412, 372, 374, 452, 378, 388, 440, 491, 418, 445, - 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, + 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 624, 623, 622, 621, + 620, 619, 618, 0, 0, 567, 469, 339, 295, 335, + 336, 343, 680, 676, 730, 681, 0, 0, 0, 0, + 303, 547, 386, 0, 433, 359, 612, 613, 0, 664, + 251, 252, 253, 254, 255, 256, 257, 258, 296, 259, + 260, 261, 262, 263, 264, 265, 268, 269, 270, 271, + 272, 273, 274, 275, 615, 266, 267, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 0, 0, 0, 297, 667, 668, 669, 670, 671, + 298, 299, 300, 0, 0, 291, 292, 293, 294, 0, + 0, 0, 498, 499, 500, 522, 0, 484, 546, 678, + 0, 0, 0, 0, 0, 0, 0, 596, 608, 642, + 0, 652, 653, 655, 657, 656, 659, 459, 460, 666, + 0, 661, 662, 663, 660, 390, 446, 465, 453, 2105, + 684, 537, 538, 685, 648, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 625, 624, 623, 622, 621, 620, 619, 618, - 0, 0, 567, 469, 339, 295, 335, 336, 343, 680, - 676, 672, 681, 0, 0, 0, 0, 303, 547, 386, - 0, 433, 359, 612, 613, 0, 664, 251, 252, 253, - 254, 255, 256, 257, 258, 296, 259, 260, 261, 262, - 263, 264, 265, 268, 269, 270, 271, 272, 273, 274, - 275, 615, 266, 267, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 297, 667, 668, 669, 670, 671, 298, 299, 300, - 0, 0, 291, 292, 293, 294, 0, 0, 0, 498, - 499, 500, 522, 0, 484, 546, 678, 0, 0, 0, - 0, 0, 0, 0, 596, 608, 642, 0, 652, 653, - 655, 657, 656, 659, 459, 460, 666, 0, 661, 662, - 663, 660, 390, 446, 465, 453, 0, 684, 537, 538, - 685, 648, 417, 0, 0, 552, 585, 574, 658, 540, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3870, + 0, 0, 0, 0, 0, 2107, 0, 2105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 0, 0, 385, 589, 571, 581, 572, 557, 558, - 559, 566, 364, 560, 561, 562, 532, 563, 533, 564, - 565, 0, 588, 539, 455, 401, 606, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 0, 0, 0, 321, 238, 534, 654, 536, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2107, 0, 2105, 0, 0, 0, 211, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2107, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 462, 480, 322, 450, 493, 327, 458, - 473, 317, 416, 447, 0, 0, 311, 478, 457, 398, - 375, 376, 310, 0, 441, 350, 366, 347, 414, 0, - 477, 505, 346, 496, 0, 488, 313, 0, 487, 413, - 474, 479, 399, 392, 0, 312, 476, 397, 391, 379, - 356, 521, 380, 381, 370, 428, 389, 429, 371, 403, - 402, 404, 0, 0, 0, 0, 0, 516, 517, 0, - 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 647, 0, 0, 651, 0, 490, 0, - 0, 0, 0, 0, 0, 461, 0, 0, 382, 0, - 0, 0, 506, 0, 444, 419, 687, 0, 0, 442, - 387, 475, 430, 481, 463, 489, 436, 431, 304, 464, - 349, 400, 318, 320, 677, 351, 353, 357, 358, 409, - 410, 424, 449, 466, 467, 468, 348, 332, 443, 333, - 368, 334, 305, 340, 338, 341, 451, 342, 307, 425, - 472, 0, 363, 439, 395, 308, 394, 426, 471, 470, - 319, 497, 503, 504, 593, 0, 509, 688, 689, 690, - 518, 0, 432, 315, 314, 0, 0, 0, 344, 427, - 328, 330, 331, 329, 422, 423, 523, 524, 525, 527, - 528, 529, 530, 594, 611, 578, 548, 511, 602, 545, - 549, 550, 373, 614, 0, 0, 0, 502, 383, 384, - 0, 355, 354, 396, 435, 361, 301, 302, 683, 345, - 415, 616, 649, 650, 541, 0, 603, 542, 551, 337, - 575, 587, 586, 411, 501, 0, 598, 601, 531, 682, - 0, 595, 610, 686, 609, 679, 421, 0, 448, 607, - 554, 0, 599, 573, 0, 600, 569, 604, 0, 543, - 0, 456, 483, 495, 512, 515, 544, 629, 630, 631, - 306, 514, 633, 634, 635, 636, 637, 638, 639, 632, - 486, 576, 553, 579, 494, 556, 555, 0, 0, 590, - 510, 591, 592, 405, 406, 407, 408, 365, 617, 326, - 513, 434, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 582, 583, 580, 691, 0, 640, 641, 0, - 0, 507, 508, 360, 367, 526, 369, 325, 420, 362, - 492, 377, 0, 519, 584, 520, 437, 438, 643, 646, - 644, 645, 0, 0, 412, 372, 374, 452, 378, 388, - 440, 491, 418, 445, 323, 482, 454, 393, 570, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 624, 623, 622, - 621, 620, 619, 618, 0, 0, 567, 469, 339, 295, - 335, 336, 343, 680, 676, 730, 681, 1185, 0, 0, - 0, 303, 547, 386, 0, 433, 359, 612, 613, 0, - 664, 251, 252, 253, 254, 255, 256, 257, 258, 296, - 259, 260, 261, 262, 263, 264, 265, 268, 269, 270, - 271, 272, 273, 274, 275, 615, 266, 267, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 297, 667, 668, 669, 670, - 671, 298, 299, 300, 0, 0, 291, 292, 293, 294, - 1185, 0, 0, 498, 499, 500, 522, 0, 484, 546, - 678, 0, 0, 0, 0, 0, 0, 0, 596, 608, - 642, 0, 652, 653, 655, 657, 656, 659, 459, 460, - 666, 0, 661, 662, 663, 660, 390, 446, 465, 453, - 0, 684, 537, 538, 685, 648, 0, 0, 0, 2117, - 0, 1170, 0, 0, 0, 1160, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2098, 0, 0, + 0, 0, 0, 0, 0, 2082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1193, 1197, 1199, 1201, 1203, 1204, 1206, 0, - 1211, 1207, 1208, 1209, 1210, 2119, 1188, 1189, 1190, 1191, - 1168, 1169, 1194, 0, 1171, 0, 1173, 1174, 1175, 1176, - 1172, 1177, 1178, 1179, 1180, 1181, 1184, 1186, 1182, 1183, - 1192, 0, 0, 0, 0, 0, 0, 0, 1196, 1198, - 1200, 1202, 1205, 0, 1170, 0, 0, 0, 0, 4069, - 2117, 0, 0, 0, 0, 0, 0, 0, 0, 2094, - 0, 0, 0, 0, 0, 1193, 1197, 1199, 1201, 1203, - 1204, 1206, 0, 1211, 1207, 1208, 1209, 1210, 1187, 1188, - 1189, 1190, 1191, 1168, 1169, 1194, 2119, 1171, 0, 1173, - 1174, 1175, 1176, 1172, 1177, 1178, 1179, 1180, 1181, 1184, - 1186, 1182, 1183, 1192, 0, 0, 0, 0, 0, 0, - 0, 1196, 1198, 1200, 1202, 1205, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2094, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1187, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4030, 0, 0, 0, 2098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2098, 0, 0, 0, 0, 0, 0, + 0, 2086, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2110, 0, - 0, 2098, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2080, 2114, 0, 0, 2081, 2083, 2085, 2086, + 2087, 2088, 2089, 2093, 2094, 2095, 2097, 2100, 2101, 2102, + 2092, 0, 0, 0, 0, 0, 0, 2090, 2099, 2091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2092, 2126, 0, 0, 2093, 2095, 2097, 0, - 2099, 2100, 2101, 2105, 2106, 2107, 2109, 2112, 2113, 2114, - 0, 0, 0, 0, 0, 0, 0, 2102, 2111, 2103, + 2080, 2114, 0, 0, 2081, 2083, 2085, 2086, 2087, 2088, + 2089, 2093, 2094, 2095, 2097, 2100, 2101, 2102, 2092, 0, + 0, 0, 0, 0, 0, 2090, 2099, 2091, 0, 0, + 0, 0, 0, 0, 0, 0, 2106, 0, 2080, 2114, + 0, 0, 2081, 2083, 2085, 0, 2087, 2088, 2089, 2093, + 2094, 2095, 2097, 2100, 2101, 2102, 0, 0, 0, 0, + 0, 0, 0, 2090, 2099, 2091, 0, 0, 0, 0, + 0, 0, 0, 0, 2106, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, + 2078, 0, 2106, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2096, 0, 0, 0, 0, 0, + 0, 2079, 0, 2084, 0, 0, 0, 0, 2078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2098, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2118, 0, 0, 0, - 0, 0, 0, 2092, 2126, 0, 0, 2093, 2095, 2097, - 0, 2099, 2100, 2101, 2105, 2106, 2107, 2109, 2112, 2113, - 2114, 0, 0, 0, 0, 0, 0, 0, 2102, 2111, - 2103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2115, 0, 0, 0, + 0, 0, 2103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2096, 0, 0, 0, 0, 0, 0, 2079, + 0, 2084, 0, 0, 0, 0, 2078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2091, 0, 0, 0, 0, 1195, 0, - 2090, 0, 0, 0, 0, 0, 0, 2118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2108, 0, 0, 0, 0, 0, - 0, 0, 0, 2096, 0, 0, 0, 0, 0, 0, + 2096, 0, 0, 0, 0, 0, 0, 0, 0, 2084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1195, 0, 0, 2091, 0, 0, 0, 0, 0, - 0, 2090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2108, 0, 0, 0, 0, - 0, 0, 0, 0, 2096, + 0, 0, 0, 0, 0, 0, 0, 0, 177, } var yyPact = [...]int{ - 269, -1000, -1000, -1000, -344, 17079, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 4312, -1000, -1000, -1000, -359, 17038, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 52967, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 541, 52967, -342, 33047, 50975, -1000, -1000, - 2997, -1000, 51639, 19091, 52967, 660, 646, 58279, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 52926, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 532, 52926, -350, 33006, 50934, -1000, -1000, + 2977, -1000, 51598, 19050, 52926, 649, 648, 58238, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1139, -1000, 57615, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1029, 4432, 56951, 13068, -223, -1000, 1750, - -15, 2893, 592, -205, -206, 635, 1329, 1348, 1434, 1272, - 52967, 1293, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 256, 1173, 52303, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1117, -1000, 57574, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 981, 4532, 56910, 13027, -235, -1000, 1733, + -31, 2877, 522, -211, -213, 636, 1324, 1337, 1496, 1260, + 52926, 1269, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 210, 1217, 52262, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 4295, 303, 1132, 1173, 24411, 167, 165, - 1750, 534, -66, 346, -1000, 1870, 377, 212, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 13068, - 13068, 17079, -395, 17079, 13068, 52967, 52967, -1000, -1000, -1000, - -1000, -342, 51639, 1029, 4432, 13068, 2893, 592, -205, -206, - 635, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 253, 265, 1095, 1217, 24370, 155, 146, + 1733, 531, -54, 246, -1000, 2005, 4425, 209, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 13027, + 13027, 17038, -412, 17038, 13027, 52926, 52926, -1000, -1000, -1000, + -1000, -350, 51598, 981, 4532, 13027, 2877, 522, -211, -213, + 636, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -66, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -54, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7878,8 +7875,8 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 165, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 146, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7897,449 +7894,449 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 58815, -1000, 1838, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2623, 3476, 1837, 2891, 980, 50975, 52967, -1000, - 150, 980, -1000, -1000, -1000, 1750, 3917, -1000, 52967, 52967, - 292, 2186, -1000, 702, 675, 641, 452, 408, 1831, -1000, - -1000, -1000, -1000, -1000, -1000, 898, 3901, -1000, 52967, 52967, - 52967, 3494, 52967, -1000, 445, 949, -1000, 4871, 3717, 1622, - 1133, 3514, -1000, -1000, 3474, -1000, 428, 870, 383, 709, - 538, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 427, -1000, - 3819, -1000, -1000, 421, -1000, -1000, 446, -1000, -1000, -1000, - 163, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 42, -1000, -1000, 1456, 2243, 13068, 2380, -1000, - 4366, 1866, -1000, -1000, -1000, 8393, 15736, 15736, 15736, 15736, - 52967, -1000, -1000, 3314, 13068, 3472, 3471, 3469, 3468, -1000, - -1000, -1000, -1000, -1000, -1000, 3463, 1828, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 2357, -1000, -1000, -1000, - 16403, -1000, 3459, 3458, 3456, 3451, 3450, 3449, 3447, 3446, - 3445, 3437, 3431, 3430, 3427, 3426, 3103, 18417, 3420, 2879, - 2868, 3417, 3416, 3414, 2867, 3410, 3408, 3406, 3103, 3103, - 3405, 3404, 3402, 3401, 3400, 3397, 3395, 3392, 3387, 3380, - 3379, 3378, 3376, 3374, 3372, 3370, 3369, 3368, 3366, 3365, - 3358, 3357, 3351, 3349, 3348, 3346, 3345, 3344, 3339, 3334, - 3329, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 5720, -1000, 1890, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2632, 3453, 1877, 2875, 949, 50934, 52926, -1000, + 153, 949, -1000, -1000, -1000, 1733, 3858, -1000, 52926, 52926, + 236, 2098, -1000, 594, 570, 411, 418, 407, 1866, -1000, + -1000, -1000, -1000, -1000, -1000, 886, 3837, -1000, 52926, 52926, + 52926, 3469, 52926, -1000, 376, 920, -1000, 4824, 3658, 1758, + 1111, 3489, -1000, -1000, 3451, -1000, 412, 528, 445, 521, + 527, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 446, -1000, + 3728, -1000, -1000, 395, -1000, -1000, 381, -1000, -1000, -1000, + 145, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 14, -1000, -1000, 1436, 2573, 13027, 2545, -1000, + 4467, 1804, -1000, -1000, -1000, 8352, 15695, 15695, 15695, 15695, + 52926, -1000, -1000, 3268, 13027, 3449, 3448, 3447, 3446, -1000, + -1000, -1000, -1000, -1000, -1000, 3439, 1865, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2314, -1000, -1000, -1000, + 16362, -1000, 3438, 3437, 3435, 3434, 3429, 3427, 3424, 3423, + 3420, 3417, 3413, 3407, 3401, 3400, 3107, 18376, 3398, 2869, + 2863, 3397, 3395, 3394, 2861, 3391, 3388, 3380, 3107, 3107, + 3379, 3378, 3376, 3373, 3372, 3371, 3369, 3367, 3366, 3364, + 3363, 3360, 3359, 3355, 3354, 3348, 3346, 3345, 3344, 3342, + 3341, 3339, 3338, 3336, 3333, 3332, 3331, 3330, 3314, 3309, + 3299, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1682, -1000, 3327, 3916, 3221, - -1000, 3811, 3809, 3782, 3766, -277, 3326, 2551, -1000, -1000, - 123, 3899, 52967, -295, 52967, 460, -72, -74, -79, 1219, - -1000, -64, -1000, -1000, 1290, -1000, 1276, 56287, 1090, -1000, - -1000, 52967, 1023, 1023, 1023, 1023, 52967, 334, 1125, 1023, - 1023, 1023, 1023, 1023, 1097, 1023, 3837, 1129, 1127, 1120, - 1114, 1023, -9, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 2185, 2182, 3605, 1260, -1000, -1000, -1000, -1000, 1716, 52967, - -1000, 3260, 460, -1000, 104, -315, 3511, 1953, 1953, 3882, - 3882, 3836, 3834, 954, 953, 952, 1953, 756, -1000, 2101, - 2101, 2101, 2101, 1953, 606, 948, 3840, 3840, 226, 2101, - 145, 1953, 1953, 145, 1953, 1953, -1000, 2175, 375, -284, - -1000, -1000, -1000, -1000, 2101, 2101, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 3814, 3808, 1029, 1029, 52967, 1029, 52967, - 426, 246, 52967, 1029, 1029, 1029, 52967, 1039, -333, 93, - 55623, 54959, 2899, 445, 935, 933, 1746, 2123, -1000, 2037, - 52967, 52967, 2037, 2037, 27735, 27071, -1000, 52967, -1000, 3916, - 3221, 3095, 1940, 3093, 3221, -81, 460, 1029, 1029, 1029, - 1029, 1029, 1029, 353, 1029, 1029, 1029, 1029, 1029, 52967, - 52967, 50311, 1029, 1029, 1029, 1029, 11061, 1870, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 17079, 2478, 2576, 209, -12, -325, 297, -1000, -1000, - 52967, 3660, 373, -1000, -1000, -1000, 3233, -1000, 3247, 3247, - 3247, 3247, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 3247, 3247, 3256, 3320, -1000, -1000, 3234, 3234, - 3234, 3233, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3249, 3249, 3255, - 3255, 3249, 52967, -106, -1000, -1000, 13068, 52967, 3696, 442, - 3318, 980, -1000, -1000, 52967, 330, 459, 3916, 3670, 3840, - 3873, -1000, -1000, 1822, 2550, 2857, -1000, 408, -1000, 688, - 408, -1000, 597, 597, 2099, -1000, 1399, -1000, -1000, -1000, - -1000, -1000, -1000, 52967, 42, 1597, -1000, -1000, -1000, 2840, - 3317, -1000, 730, 1455, 1578, -1000, 412, 4910, 43007, 445, - 43007, 52967, -1000, -1000, -1000, -1000, -1000, -1000, 161, -1000, + -1000, -1000, -1000, -1000, -1000, 1584, -1000, 3297, 3857, 3162, + -1000, 3742, 3737, 3721, 3692, -278, 3296, 2549, -1000, -1000, + 111, 3835, 52926, -304, 52926, 455, -64, -68, -70, 1075, + -1000, -67, -1000, -1000, 1390, -1000, 1250, 56246, 1055, -1000, + -1000, 52926, 980, 980, 980, 980, 52926, 237, 980, 980, + 980, 980, 980, 1052, 980, 3760, 1092, 1086, 1085, 1077, + 980, -12, -1000, -1000, -1000, -1000, -1000, -1000, 1207, -1000, + -1000, -1000, -1000, 1743, 52926, -1000, 3166, 455, -1000, 48, + -337, 3488, 2012, 2012, 3822, 3822, 3758, 3757, 934, 930, + 928, 2012, 743, -1000, 2145, 2145, 2145, 2145, 2012, 592, + 926, 3766, 3766, 225, 2145, 118, 2012, 2012, 118, 2012, + 2012, -1000, 2135, 375, -289, -1000, -1000, -1000, -1000, 2145, + 2145, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3717, 3715, + 981, 1123, 52926, 981, 52926, 326, 264, 52926, 981, 981, + 981, 52926, 999, -335, 86, 55582, 54918, 2882, 376, 913, + 909, 1747, 2126, -1000, 1998, 52926, 52926, 1998, 1998, 27694, + 27030, -1000, 52926, -1000, 3857, 3162, 3091, 2132, 3089, 3162, + -77, 455, 981, 981, 981, 981, 981, 981, 343, 981, + 981, 981, 981, 981, 52926, 52926, 50270, 981, 981, 981, + 981, 11020, 2005, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 17038, 2569, 2522, 205, + -13, -336, 275, -1000, -1000, 52926, 3619, 367, -1000, -1000, + -1000, 3181, -1000, 3189, 3189, 3189, 3189, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3189, 3189, 3198, + 3290, -1000, -1000, 3182, 3182, 3182, 3181, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 3195, 3195, 3197, 3197, 3195, 52926, -125, -1000, + -1000, 13027, 52926, 3639, 420, 3288, 949, -1000, -1000, 52926, + 330, 451, 3857, 3624, 3766, 3816, -1000, -1000, 1861, 2541, + 2849, -1000, 407, -1000, 585, 407, -1000, 576, 576, 2027, + -1000, 1397, -1000, -1000, -1000, -1000, -1000, -1000, 52926, 14, + 463, -1000, -1000, -1000, 2828, 3285, -1000, 708, 1449, 1637, + -1000, 380, 5011, 42966, 376, 42966, 52926, -1000, -1000, -1000, + -1000, -1000, -1000, 136, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 465, -1000, 13068, 13068, 13068, 13068, 13068, - -1000, 1037, 15069, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 15736, 15736, 15736, 15736, 15736, 15736, 15736, 15736, 15736, 15736, - 15736, 15736, 3306, 2138, 15736, 15736, 15736, 15736, 29727, 1940, - 3424, 1742, 329, 1866, 1866, 1866, 1866, 13068, -1000, 2230, - 2243, 13068, 13068, 13068, 13068, 36367, 52967, -1000, -1000, 5232, - 13068, 13068, 5343, 13068, 3762, 13068, 13068, 13068, 3091, 6374, - 52967, 13068, -1000, 3089, 3088, -1000, -1000, 2403, 13068, -1000, - -1000, 13068, -1000, -1000, 13068, 15736, 13068, -1000, 13068, 13068, - 13068, -1000, -1000, 1651, 3762, 3762, 3762, 2148, 13068, 13068, - 3762, 3762, 3762, 2094, 3762, 3762, 3762, 3762, 3762, 3762, - 3762, 3762, 3762, 3762, 3762, 3079, 3078, 3077, 13068, 13068, - 13068, 13068, 13068, 12401, 3840, -223, -1000, 10394, 3670, 3840, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 394, -1000, + 13027, 13027, 13027, 13027, 13027, -1000, 1067, 15028, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 15695, 15695, 15695, 15695, 15695, + 15695, 15695, 15695, 15695, 15695, 15695, 15695, 3267, 2108, 15695, + 15695, 15695, 15695, 29686, 2132, 3520, 1745, 317, 1804, 1804, + 1804, 1804, 13027, -1000, 2151, 2573, 13027, 13027, 13027, 13027, + 36326, 52926, -1000, -1000, 5141, 13027, 13027, 5319, 13027, 3688, + 13027, 13027, 13027, 3087, 6333, 52926, 13027, -1000, 3077, 3076, + -1000, -1000, 2344, 13027, -1000, -1000, 13027, -1000, -1000, 13027, + 15695, 13027, -1000, 13027, 13027, 13027, -1000, -1000, 744, 3688, + 3688, 3688, 2082, 13027, 13027, 3688, 3688, 3688, 2073, 3688, + 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, + 3075, 3069, 3055, 13027, 13027, 13027, 13027, 13027, 12360, 3766, + -235, -1000, 10353, 3624, 3766, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -280, 3284, 52926, 2847, 2844, + -368, 188, 503, 52926, 1301, -1000, -1000, 52926, 2531, 52926, + 2527, 313, 310, 52926, 52926, 52926, 69, 1278, 1254, 1265, + -1000, -1000, 52926, 54254, -1000, 52926, 2187, 52926, 52926, 52926, + 3676, -1000, 52926, 52926, 1120, 980, 48278, 42966, 52926, 52926, + 376, 52926, 52926, 52926, 980, 980, 980, 980, 52926, -1000, + 999, -1000, 52926, 1743, 3672, 52926, -1000, 3756, -1000, -1000, + -1000, 906, 3822, 15695, 15695, -1000, -1000, 13027, -1000, 288, + 49606, 2145, 2012, 2012, -1000, -1000, 52926, -1000, -1000, -1000, + 2145, 52926, 2145, 2145, 3822, 2145, -1000, -1000, -1000, 2012, + 2012, -1000, -1000, 13027, -1000, -1000, 2145, 2145, -1000, -1000, + 3822, 52926, 129, 3822, 3822, 126, -1000, -1000, -1000, 2012, + 52926, 52926, 980, 52926, -1000, 52926, 52926, -1000, -1000, 52926, + 981, -1000, 2097, 2096, 3564, 5201, 52926, 489, 3657, 1288, + 48278, 48942, 3712, -1000, 42966, 52926, 52926, 1739, -1000, 1054, + 40310, -1000, 52926, 1694, -1000, 37, -1000, 58, 86, 1998, + 86, 1998, 1049, -1000, 671, 441, 25702, 628, 42966, 7676, + -1000, -1000, 1998, 1998, 7676, 7676, 1915, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1730, -1000, 334, 3766, -1000, -1000, + -1000, -1000, -1000, 2526, -1000, 52926, 52926, 48278, 42966, 376, + 52926, 981, 52926, 52926, 52926, 52926, 52926, -1000, 3275, 1845, + -1000, 3653, 52926, 52926, 52926, 52926, 1557, -1000, -1000, 22370, + 1840, -1000, -1000, 2188, -1000, 13027, 17038, -258, 13027, 17038, + 17038, 13027, 17038, -1000, 13027, 321, -1000, -1000, -1000, -1000, + 2525, -1000, 2521, -1000, -1000, -1000, -1000, -1000, 2843, 2843, + -1000, 2506, -1000, -1000, -1000, -1000, 2505, -1000, -1000, 2497, + -1000, -1000, -1000, -1000, -164, 3048, 1436, -1000, 2842, 3486, + -236, -1000, 23706, 52926, 52926, 420, -373, 2095, 2093, 2088, + 3691, -1000, -236, -1000, 23038, 52926, 3766, -1000, -241, 3798, + 13027, 52926, -1000, 3754, -1000, -1000, 407, -1000, -1000, -1000, + 576, 622, -1000, -1000, -1000, -1000, -1000, -1000, 1836, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -279, 3316, 52967, 2855, 2854, -358, 202, 509, 52967, 1345, - -1000, -1000, 52967, 2549, 52967, 2545, 293, 281, 52967, 52967, - 52967, 88, 1326, 1279, 1282, -1000, -1000, 52967, 54295, -1000, - 52967, 2258, 52967, 52967, 52967, 3746, -1000, 52967, 52967, 1023, - 1023, 1023, -1000, 48319, 43007, 52967, 52967, 445, 52967, 52967, - 52967, 1023, 1023, 1023, 1023, 52967, -1000, 3666, 43007, 3655, - 1039, -1000, 52967, 1716, 3741, 52967, -1000, 3832, -1000, -1000, - -1000, 928, 3882, 15736, 15736, -1000, -1000, 13068, -1000, 289, - 49647, 2101, 1953, 1953, -1000, -1000, 52967, -1000, -1000, -1000, - 2101, 52967, 2101, 2101, 3882, 2101, -1000, -1000, -1000, 1953, - 1953, -1000, -1000, 13068, -1000, -1000, 2101, 2101, -1000, -1000, - 3882, 52967, 153, 3882, 3882, 140, -1000, -1000, -1000, 1953, - 52967, 52967, 1023, 52967, -1000, 52967, 52967, -1000, -1000, 52967, - 52967, 5292, 52967, 473, 3715, 1163, 48319, 48983, 3790, -1000, - 43007, 52967, 52967, 1715, -1000, 1088, 40351, -1000, 52967, 1688, - -1000, 95, -1000, 55, 93, 2037, 93, 2037, 1086, -1000, - 729, 466, 25743, 634, 43007, 7717, -1000, -1000, 2037, 2037, - 7717, 7717, 1873, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1714, -1000, 340, 3840, -1000, -1000, -1000, -1000, -1000, 2544, - -1000, 52967, 52967, 48319, 43007, 445, 52967, 1029, 52967, 52967, - 52967, 52967, 52967, -1000, 3315, 1818, -1000, 3714, 52967, 52967, - 52967, 52967, 1555, -1000, -1000, 22411, 1815, -1000, -1000, 2226, - -1000, 13068, 17079, -257, 13068, 17079, 17079, 13068, 17079, -1000, - 13068, 362, -1000, -1000, -1000, -1000, 2542, -1000, 2540, -1000, - -1000, -1000, -1000, -1000, 2853, 2853, -1000, 2539, -1000, -1000, - -1000, -1000, 2536, -1000, -1000, 2535, -1000, -1000, -1000, -1000, - -156, 3072, 1456, -1000, 2850, 3509, -224, -1000, 23747, 52967, - 52967, 442, -378, 2177, 2174, 2170, 3823, -1000, -224, -1000, - 23079, 52967, 3840, -1000, -235, 3870, 13068, 52967, -1000, 3829, - -1000, -1000, 408, -1000, -1000, -1000, 597, 508, -1000, -1000, - -1000, -1000, -1000, -1000, 1809, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -67, -68, 1707, -1000, - 52967, -1000, -1000, 412, 43007, 44999, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 304, -1000, -1000, 181, -1000, 1083, 322, - 2097, -1000, -1000, 268, 214, 296, 1198, 2243, -1000, 2247, - 2247, 2266, -1000, 914, -1000, -1000, -1000, -1000, 3314, -1000, - -1000, -1000, 2620, 2179, -1000, 2290, 2290, 1883, 1883, 1883, - 1883, 1883, 2223, 2223, -1000, -1000, -1000, 8393, 3306, 15736, - 15736, 15736, 15736, 1124, 1124, 3900, 3661, -1000, -1000, -1000, - -1000, 13068, 211, 2216, -1000, 13068, 3197, 1869, 3024, 1504, - 2096, -1000, 3233, 13068, 1808, -1000, -1000, -1000, -1000, -1000, + -58, -60, 1722, -1000, 52926, -1000, -1000, 380, 42966, 44958, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 279, -1000, -1000, + 192, -1000, 1040, 286, 2026, -1000, -1000, 267, 218, 239, + 1152, 2573, -1000, 2165, 2165, 2198, -1000, 838, -1000, -1000, + -1000, -1000, 3268, -1000, -1000, -1000, 3175, 3873, -1000, 2175, + 2175, 1919, 1919, 1919, 1919, 1919, 2446, 2446, -1000, -1000, + -1000, 8352, 3267, 15695, 15695, 15695, 15695, 1071, 1071, 3807, + 3767, -1000, -1000, -1000, -1000, 13027, 189, 2133, -1000, 13027, + 3052, 1975, 2965, 1950, 2025, -1000, 3181, 13027, 1833, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 3063, 3062, 3151, 3898, 3037, - 13068, -1000, -1000, 2093, 2092, 2087, -1000, 2633, 11734, -1000, - -1000, -1000, 3035, 1807, 3034, -1000, -1000, -1000, 3033, 2086, - 1591, 3029, 1965, 3028, 3022, 3021, 3018, 1704, 13068, 13068, - 13068, 13068, 3016, 2084, 2082, 13068, 13068, 13068, 13068, 3014, - 13068, 13068, 13068, 13068, 13068, 13068, 13068, 13068, 13068, 13068, - 52967, 174, 174, 174, 1901, 1839, 3412, 3393, 1813, 1703, - 1701, -1000, -1000, 2080, -1000, 2243, -1000, -1000, 3870, -1000, - 3304, 2530, 1691, -1000, -1000, -339, 2783, 52967, 52967, 201, - 52967, 2845, -296, 52967, -1000, -1000, 2844, -1000, 52967, 52967, - 52967, 52967, -92, 3685, 3683, -1000, -1000, 1322, 1274, 1284, - -1000, 52967, -1000, 2843, 3701, 3827, 1053, -84, 52967, 3298, - 3296, 52967, 52967, 52967, 356, -1000, -1000, 1678, -1000, 322, - 35, 678, 1534, 3492, 968, -107, 52967, 52967, 52967, 52967, - 3740, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 47655, - -1000, 3292, 2072, -1000, 3843, 52967, 445, -1000, 1866, 1866, - 2243, 52967, 52967, 52967, 3491, 52967, 52967, 3882, 3882, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 2101, 3882, 3882, 1763, - 1953, 2101, -1000, -1000, 2101, -378, -1000, 2101, -1000, -378, - 1806, -378, 52967, -1000, -1000, -1000, 3736, 3260, 1690, -1000, - -1000, -1000, 3872, 1667, 1014, 1014, 1244, 815, 3871, 21083, - -1000, 1951, 1475, 1080, 3633, 429, -1000, 1951, -151, 988, - 1951, 1951, 1951, 1951, 1951, 1951, 1951, 877, 857, 1951, - 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, - 1337, 1951, 1951, 1951, 1951, 1951, -1000, 1951, 3291, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 920, 793, -1000, -1000, - 307, 445, 1078, 128, 125, 341, 3765, 477, -1000, 475, - 1678, 732, 3761, 537, 52967, 52967, 3599, 1650, -1000, -1000, - -1000, -1000, -1000, 30391, 30391, 25079, 30391, -1000, 210, 2037, - 93, 62, -1000, -1000, 1688, 7717, 1688, 7717, 2526, -1000, - -1000, 1077, -1000, -1000, 1534, -1000, 52967, 52967, -1000, -1000, - 3290, 2169, -1000, -1000, 18417, -1000, 7717, 7717, -1000, -1000, - 32383, 52967, -1000, 41, -1000, 66, 3870, -1000, -1000, 1476, - -1000, -1000, 1687, 1534, 3507, 52967, 1476, 1476, 1476, -1000, - -1000, 19755, 52967, 52967, -1000, -1000, -1000, -310, 3882, 11061, - -1000, 40351, -1000, -1000, 46991, -1000, 46327, 2104, -1000, 17079, - 2494, 207, -1000, 271, -328, 198, 2355, 197, 2243, -1000, - -1000, 3013, 3012, 2071, -1000, 2066, 3010, 2061, 2050, 2525, - -1000, 147, -1000, 3663, 1552, -1000, 3284, -1000, 2049, 3602, - -1000, 1671, -1000, 2168, 2047, -1000, -1000, -1000, 13068, 45663, - 13068, 1228, 1552, 2036, 3601, 1671, 3870, 2834, 3670, -202, - 1666, -1000, 2315, 1804, 277, -1000, -1000, -1000, 52967, 2840, - 2035, 44999, 1624, -1000, 1075, 1801, 1793, -1000, 43007, 401, - 43007, -1000, 43007, -1000, -1000, 441, -1000, 52967, 3677, -1000, - -1000, -1000, 2783, 2166, -372, 52967, -1000, -1000, -1000, -1000, - -1000, 2033, -1000, 1124, 1124, 3900, 2531, -1000, 15736, -1000, - 15736, 3360, -1000, 2064, -1000, 13068, 2450, 6113, 13068, 6113, - 1897, 29063, 36367, -93, 3704, 3324, 52967, -1000, -1000, 13068, - 13068, -1000, 3307, -1000, -1000, -1000, -1000, 13068, 13068, 3046, - -1000, 52967, -1000, -1000, -1000, -1000, 29063, -1000, 15736, -1000, - -1000, -1000, -1000, 13068, 1668, 1668, 3302, 2010, 174, 174, - 174, 3281, 3271, 3258, 2008, 174, 3240, 3208, 3185, 3138, - 3115, 3106, 3094, 3090, 3083, 3057, 1991, -1000, 3280, -1000, - -1000, 174, 13068, 174, 13068, 174, 174, 13068, 2348, 14402, - 10394, -1000, 3670, 335, 1664, 2523, 2833, 134, -1000, 2163, - -1000, 2831, 52967, 52967, 1338, -1000, 52967, 3895, -1000, 3894, - 3892, -1000, -1000, 52967, 52967, 52967, -1000, -1000, -1000, 1270, - -1000, 2830, -1000, 417, 413, 2400, 2227, 2828, 385, 1486, - 19755, 3260, 3279, 3260, 206, 1951, 783, 43007, 916, -1000, - 52967, 2420, 2158, 3505, 882, 3657, 52967, 52967, 3275, 439, - 3274, 3266, 3735, 612, 58888, 52967, 1540, -1000, 1791, 377, - -1000, 52967, -1000, 2514, -1000, -1000, -1000, -1000, 52967, -1000, - 445, -1000, 1953, -1000, -1000, 3882, -1000, -1000, 13068, 13068, - 3882, 1953, 1953, -1000, 2101, -1000, 52967, -1000, -378, 612, - 58888, 3730, 5558, 894, 2846, -1000, 52967, -1000, -1000, -1000, - 1110, -1000, 1245, 1023, 52967, 2320, 1245, 2309, 3265, -1000, - -1000, 52967, 52967, 52967, 52967, -1000, -1000, 52967, -1000, 52967, - 52967, 52967, 52967, 52967, 44335, -1000, 52967, 52967, -1000, 52967, - 2307, 52967, 2305, 3737, -1000, 1951, 1951, 1212, -1000, -1000, - 716, -1000, 44335, 2513, 2510, 2503, 2502, 2826, 2821, 2810, - 1951, 1951, 2497, 2808, 43671, 2807, 1522, 2495, 2488, 2482, - 2486, 2806, 1131, -1000, 2805, 2476, 2459, 2457, 52967, 3264, - 2732, -1000, -1000, 2400, 2802, 3263, 2481, 2799, 1109, 445, - 2798, 3502, 206, 1951, 472, 52967, 2157, 2154, 783, 697, - 697, 668, 24, 26407, -1000, -1000, -1000, 52967, 40351, 40351, - 40351, 40351, 40351, 40351, -1000, 3582, 3564, 3262, -1000, 3565, - 3561, 3543, 3581, 3527, 52967, 40351, 3260, -1000, 43671, -1000, - -1000, -1000, 1940, 1990, 3529, 1231, 13068, 7717, -1000, -1000, - 92, 49, -1000, -1000, -1000, -1000, 43007, 2791, 634, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 3670, 52967, 52967, 1007, - 3008, 1656, -1000, -1000, -1000, 58888, 3247, 3247, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3247, 3247, 3256, - -1000, -1000, 3234, 3234, 3234, 3233, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 3249, 3249, 3255, 3255, - 3249, -1000, -1000, -1000, -1000, 3878, -1000, 1655, -1000, -1000, - 1786, -1000, 2224, -345, 17079, 2193, 1955, -1000, 13068, 17079, - 13068, -258, 454, -260, -1000, -1000, -1000, 2790, -1000, -1000, - -1000, 2479, -1000, 2475, -1000, 229, 280, 2282, -224, 10394, - 504, 52967, -224, 52967, 10394, -1000, 52967, 204, -386, -389, - 173, 2788, 470, -224, 3670, 147, -1000, -114, 13068, 3622, - -1000, -1000, 52967, 2474, -1000, -1000, -1000, 3891, 43007, 445, - 1910, 42343, -1000, 411, -1000, 299, 684, 2787, -1000, 1105, - 132, 2785, 2783, -1000, -1000, -1000, -1000, 15736, 1866, -1000, - -1000, -1000, 2243, 13068, 3007, -1000, 1253, 1253, 2706, 3006, - 3004, -1000, 3247, 3247, -1000, 3233, 3234, 3233, 1253, 1253, - 3003, -1000, 3230, -1000, 3704, -1000, 2547, 3038, -1000, 3031, - 3017, 13068, -1000, 3002, 3815, 1684, -29, -186, 174, 174, - -1000, -1000, -1000, -1000, 174, 174, 174, 174, -1000, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 986, -1000, 1544, -1000, 1512, -1000, -1000, 2970, -95, -288, - -97, -290, -1000, -1000, 2982, 1653, -1000, -1000, -1000, -1000, - -1000, 5343, 1646, 708, 708, 2783, 2775, -1000, 1066, 2774, - 1318, 52967, 2773, -302, 52967, 52967, 138, 2128, 2297, -1000, - 2771, -1000, -1000, 52967, 52967, 52967, 53631, 785, 52967, 52967, - 2769, -1000, -158, 3229, -87, 2768, 2981, 1636, -1000, -1000, - 52967, -1000, -1000, -1000, 2980, 3729, 20419, 3727, 2537, -1000, - -1000, -1000, 31719, 697, -1000, -1000, -1000, 795, 514, 2472, - 665, -1000, 52967, 620, 3608, 2152, 2764, 52967, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 3657, -1000, 1103, -378, - 582, 38359, 17753, -1000, 438, 52967, -1000, 52967, 20419, 20419, - 438, 596, 2122, -1000, 980, 1541, 143, 40351, 52967, -1000, - 39687, 2971, -1000, -1000, -1000, 1534, 3882, -1000, 2243, 2243, - -378, 3882, 3882, 1953, -1000, -1000, 596, -1000, 438, -1000, - 1601, 21747, 731, 554, 545, -1000, 765, -1000, -1000, 979, - 3635, 58888, -1000, 52967, -1000, 52967, -1000, 52967, 52967, 1023, - 13068, 3635, 52967, 1063, -1000, 1358, 625, 563, 1024, 1024, - 1629, -1000, 3704, -1000, -1000, 1627, -1000, -1000, -1000, -1000, - 52967, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 29063, 29063, - 3759, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2763, 2760, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3047, + 3042, 2829, 3834, 3041, 13027, -1000, -1000, 2016, 1996, 1995, + -1000, 2342, 11693, -1000, -1000, -1000, 3038, 1827, 3035, -1000, + -1000, -1000, 3028, 1994, 1451, 3027, 2118, 3023, 3022, 3021, + 3018, 1721, 13027, 13027, 13027, 13027, 3016, 1991, 1987, 13027, + 13027, 13027, 13027, 3015, 13027, 13027, 13027, 13027, 13027, 13027, + 13027, 13027, 13027, 13027, 52926, 162, 162, 162, 1928, 1800, + 3480, 3476, 1944, 1713, 1711, -1000, -1000, 1986, -1000, 2573, + -1000, -1000, 3798, -1000, 3266, 2480, 1705, -1000, -1000, -346, + 2782, 52926, 52926, 187, 52926, 2838, -307, 52926, -1000, -1000, + 2837, -1000, 52926, 52926, 52926, 52926, -110, 3635, 3633, -1000, + -1000, 1320, 1248, 1352, -1000, 52926, -1000, 2836, 3632, 3753, + 1042, -87, 52926, 3261, 3260, 980, 52926, 332, -1000, -1000, + 1549, -1000, 286, 6, 656, 1478, 3467, 955, -126, 52926, + 52926, 52926, 52926, 3670, 47614, -1000, 3259, 1976, -1000, 3768, + 52926, 376, -1000, 1804, 1804, 2573, 52926, 52926, 52926, 3463, + 52926, 52926, 3822, 3822, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 2145, 3822, 3822, 1664, 2012, 2145, -1000, -1000, 2145, + -373, -1000, 2145, -1000, -373, 1825, -373, 52926, -1000, -1000, + -1000, 3669, 52926, 3584, 42966, 3572, 1696, -1000, -1000, -1000, + 3803, 1673, 971, 971, 1191, 911, 3800, 21042, -1000, 2031, + 1497, 1033, 3603, 414, -1000, 2031, -160, 953, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 868, 860, 2031, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 1334, 2031, + 2031, 2031, 2031, 2031, -1000, 2031, 3258, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 918, 793, -1000, -1000, 292, 376, + 1031, 66, 64, 322, 3710, 456, -1000, 485, 1549, 719, + 3708, 524, 52926, 52926, 4037, 1482, -1000, -1000, -1000, -1000, + -1000, 30350, 30350, 25038, 30350, -1000, 197, 1998, 86, 40, + -1000, -1000, 1694, 7676, 1694, 7676, 2479, -1000, -1000, 1029, + -1000, -1000, 1478, -1000, 52926, 52926, -1000, -1000, 3248, 2086, + -1000, -1000, 18376, -1000, 7676, 7676, -1000, -1000, 32342, 52926, + -1000, 11, -1000, 24, 3798, -1000, -1000, 1460, -1000, -1000, + 1688, 1478, 3485, 52926, 1460, 1460, 1460, -1000, -1000, 19714, + 52926, 52926, -1000, -1000, -1000, -316, 3822, 11020, -1000, 40310, + -1000, -1000, 46950, -1000, 46286, 2116, -1000, 17038, 2489, 203, + -1000, 270, -340, 202, 2319, 200, 2573, -1000, -1000, 3014, + 3010, 1969, -1000, 1967, 3007, 1963, 1960, 2478, -1000, 107, + -1000, 3621, 1488, -1000, 3230, -1000, 1927, 3561, -1000, 1594, + -1000, 2084, 1926, -1000, -1000, -1000, 13027, 45622, 13027, 1199, + 1488, 1875, 3560, 1594, 3798, 2832, 3624, -214, 1583, -1000, + 2471, 1812, 233, -1000, -1000, -1000, 52926, 2828, 1852, 44958, + 1524, -1000, 1026, 1811, 1810, -1000, 42966, 400, 42966, -1000, + 42966, -1000, -1000, 421, -1000, 52926, 3631, -1000, -1000, -1000, + 2782, 2083, -372, 52926, -1000, -1000, -1000, -1000, -1000, 1847, + -1000, 1071, 1071, 3807, 3684, -1000, 15695, -1000, 15695, 3461, + -1000, 2114, -1000, 13027, 2408, 5616, 13027, 5616, 1430, 29022, + 36326, -112, 3629, 3414, 52926, -1000, -1000, 13027, 13027, -1000, + 3402, -1000, -1000, -1000, -1000, 13027, 13027, 2593, -1000, 52926, + -1000, -1000, -1000, -1000, 29022, -1000, 15695, -1000, -1000, -1000, + -1000, 13027, 1534, 1534, 3381, 1846, 162, 162, 162, 3356, + 3282, 3276, 1821, 162, 3272, 3264, 3251, 3226, 3193, 3155, + 3147, 3142, 3105, 3097, 1819, -1000, 3228, -1000, -1000, 162, + 13027, 162, 13027, 162, 162, 13027, 2269, 14361, 10353, -1000, + 3624, 315, 1570, 2476, 2825, 140, -1000, 2079, -1000, 2823, + 52926, 52926, 1293, -1000, 52926, 3833, -1000, 3832, 3831, -1000, + -1000, 52926, 52926, 52926, -1000, -1000, -1000, 1244, -1000, 2822, + -1000, 312, 281, 2348, 2120, 2820, 349, 1444, 19714, 52926, + 3208, 190, 2031, 697, 42966, 901, -1000, 52926, 2322, 2077, + 3482, 878, 3617, 52926, 52926, 3205, 533, 3204, 3203, 3667, + 614, 5888, 52926, 1538, -1000, 1802, 4425, -1000, 52926, -1000, + 2474, -1000, -1000, -1000, -1000, 52926, -1000, 376, -1000, 2012, + -1000, -1000, 3822, -1000, -1000, 13027, 13027, 3822, 2012, 2012, + -1000, 2145, -1000, 52926, -1000, -373, 614, 5888, 3166, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5318, 853, 3093, + -1000, 52926, -1000, -1000, -1000, 990, -1000, 1194, 980, 52926, + 2227, 1194, 2226, 3202, -1000, -1000, 52926, 52926, 52926, 52926, + -1000, -1000, 52926, -1000, 52926, 52926, 52926, 52926, 52926, 44294, + -1000, 52926, 52926, -1000, 52926, 2224, 52926, 2220, 3607, -1000, + 2031, 2031, 1170, -1000, -1000, 666, -1000, 44294, 2473, 2472, + 2469, 2467, 2819, 2814, 2806, 2031, 2031, 2465, 2805, 43630, + 2802, 1503, 2463, 2461, 2460, 2454, 2801, 1537, -1000, 2800, + 2424, 2419, 2411, 52926, 3201, 2710, -1000, -1000, 2348, 2796, + 3200, 2459, 2793, 1080, 376, 2792, 3481, 190, 2031, 454, + 52926, 2076, 2071, 697, 643, 643, 653, 3, 26366, -1000, + -1000, -1000, 52926, 40310, 40310, 40310, 40310, 40310, 40310, -1000, + 3547, 3518, 3199, -1000, 3531, 3512, 3537, 3546, 3479, 52926, + 40310, 3166, -1000, 43630, -1000, -1000, -1000, 2132, 1797, 4212, + 1192, 13027, 7676, -1000, -1000, 32, 51, -1000, -1000, -1000, + -1000, 42966, 2791, 628, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 3624, 52926, 52926, 1050, 3006, 1560, -1000, -1000, -1000, + 5888, 3189, 3189, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 3189, 3189, 3198, -1000, -1000, 3182, 3182, 3182, + 3181, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 3195, 3195, 3197, 3197, 3195, -1000, -1000, -1000, -1000, + 3819, -1000, 1547, -1000, -1000, 1791, -1000, 2153, -364, 17038, + 2109, 1754, -1000, 13027, 17038, 13027, -259, 425, -261, -1000, + -1000, -1000, 2788, -1000, -1000, -1000, 2458, -1000, 2455, -1000, + 199, 198, 2219, -236, 10353, 502, 52926, -236, 52926, 10353, + -1000, 52926, 176, -388, -392, 172, 2787, 462, -236, 3624, + 107, -1000, -130, 13027, 3597, -1000, -1000, 52926, 2453, -1000, + -1000, -1000, 3830, 42966, 376, 1970, 42302, -1000, 393, -1000, + 277, 683, 2786, -1000, 1069, 139, 2784, 2782, -1000, -1000, + -1000, -1000, 15695, 1804, -1000, -1000, -1000, 2573, 13027, 3005, + -1000, 1277, 1277, 2436, 3004, 2999, -1000, 3189, 3189, -1000, + 3181, 3182, 3181, 1277, 1277, 2998, -1000, 3180, -1000, 3629, + -1000, 2644, 3084, -1000, 3072, 2935, 13027, -1000, 2988, 3263, + 1830, -17, -197, 162, 162, -1000, -1000, -1000, -1000, 162, + 162, 162, 162, -1000, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 952, -1000, 1780, -1000, 1729, + -1000, -1000, 2931, -101, -293, -104, -294, -1000, -1000, 2987, + 1546, -1000, -1000, -1000, -1000, -1000, 5319, 1542, 680, 680, + 2782, 2779, -1000, 1023, 2778, 1311, 52926, 2776, -308, 52926, + 52926, 84, 2110, 2254, -1000, 2775, -1000, -1000, 52926, 52926, + 52926, 53590, 776, 52926, 52926, 2772, -1000, -168, 3168, -98, + 2769, 2986, 1540, -1000, -1000, 52926, -1000, -1000, -1000, 2984, + 3166, 20378, 2559, -1000, -1000, -1000, 31678, 643, -1000, -1000, + -1000, 891, 351, 2444, 677, -1000, 52926, 642, 3573, 2069, + 2766, 52926, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 3617, -1000, 1302, -373, 574, 38318, 17712, -1000, 415, 52926, + -1000, 52926, 20378, 20378, 415, 601, 2107, -1000, 949, 1489, + 150, 40310, 52926, -1000, 39646, 2982, -1000, -1000, -1000, 1478, + 3822, -1000, 2573, 2573, -373, 3822, 3822, 2012, -1000, -1000, + 601, -1000, 3665, -1000, 1720, 21706, 714, 564, 526, -1000, + 804, -1000, -1000, 947, 3595, 5888, -1000, 52926, -1000, 52926, + -1000, 52926, 52926, 980, 13027, 3595, 52926, 1015, -1000, 1346, + 593, 578, 967, 967, 1536, -1000, 3629, -1000, -1000, 1525, + -1000, -1000, -1000, -1000, 52926, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 29022, 29022, 3704, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2764, 2763, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 52967, 1989, -1000, 2151, 2759, - -87, 7050, -1000, -1000, 1060, -1000, 3501, 1104, 2537, 31719, - 2141, 2037, 2755, 2754, 697, -1000, 2753, 2750, -1000, 2420, - 2137, 1096, 52967, -1000, 1495, 52967, 52967, -1000, 1663, -1000, - 2135, 3482, 3500, 3482, -1000, 3482, -1000, -1000, -1000, -1000, - 3579, 2749, -1000, 3578, -1000, 3577, -1000, -1000, -1000, -1000, - 1663, -1000, -1000, -1000, -1000, -1000, 1231, -1000, 3826, 1245, - 1245, 1245, 2967, -1000, -1000, -1000, -1000, 1624, 2966, -1000, - -1000, 3825, -1000, -1000, -1000, -1000, -1000, -1000, 19755, 3654, - 3876, 3869, 41679, -1000, -345, 2038, -1000, 2439, 189, 2219, - 52967, -1000, -1000, -1000, 2964, 2961, -238, 213, 3867, 3865, - 1303, -1000, 2960, 1621, -224, -1000, -1000, 1552, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -390, -224, -1000, 1552, 3825, - 229, 407, -1000, -1000, 3687, -1000, -1000, 445, -1000, 290, - -1000, -1000, -1000, -1000, -1000, -1000, 308, -1000, 52967, -1000, - 1602, 131, -1000, 2243, -1000, -1000, -1000, -1000, -1000, 6113, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 52926, + 1796, -1000, 2068, 2762, -98, 7009, -1000, -1000, 1003, -1000, + 3477, 1068, 2559, 31678, 2067, 1998, 2758, 2751, 643, -1000, + 2749, 2746, -1000, 2322, 2065, 1065, 52926, -1000, 1462, 52926, + 52926, -1000, 1668, -1000, 2063, 3472, 3475, 3472, -1000, 3472, + -1000, -1000, -1000, -1000, 3544, 2744, -1000, 3532, -1000, 3504, + -1000, -1000, -1000, -1000, 1668, -1000, -1000, -1000, -1000, -1000, + 1192, -1000, 3740, 1194, 1194, 1194, 2980, -1000, -1000, -1000, + -1000, 1524, 2978, -1000, -1000, 3735, -1000, -1000, -1000, -1000, + -1000, -1000, 19714, 3610, 3769, 3797, 41638, -1000, -364, 2032, + -1000, 2364, 193, 2186, 52926, -1000, -1000, -1000, 2974, 2973, + -243, 222, 3796, 3794, 1216, -1000, 2972, 1507, -236, -1000, + -1000, 1488, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -409, + -236, -1000, 1488, 3735, 199, 386, -1000, -1000, 3585, -1000, + -1000, 376, -1000, 276, -1000, -1000, -1000, -1000, -1000, -1000, + 273, -1000, 52926, -1000, 1505, 134, -1000, 2573, -1000, -1000, + -1000, -1000, -1000, 5616, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2738, -1000, -1000, 13027, -1000, -1000, + -1000, 2890, -1000, -1000, 13027, 2970, 2736, 2966, 2733, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 2748, -1000, -1000, 13068, -1000, -1000, -1000, 2890, -1000, -1000, - 13068, 2958, 2743, 2957, 2742, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 3916, -1000, 3864, 174, 13068, 174, 13068, 174, - 1978, 2956, 2953, 1971, 2950, 2949, -1000, 13068, 2948, 5343, - 1204, 2741, 1204, -1000, -1000, 510, 31055, 52967, 3884, -1000, - 52967, 1047, -378, 616, 3220, -1000, 623, 2128, 1302, 3219, - 2738, -1000, -1000, 52967, 2400, 776, 2400, 835, 52967, -310, - -89, 2470, 7050, -1000, 2735, -1000, -96, 1486, 58888, 1142, - 438, 2944, 1558, -1000, -1000, -1000, -1000, 438, -1000, 2733, - 313, -1000, -1000, -1000, -1000, 2468, -1000, -1000, 2421, 1760, - 331, -1000, -1000, -1000, -1000, -1000, -1000, 2484, 52967, 41015, - 2500, 2109, -381, -1000, 3217, -1000, 1951, 1951, 1951, 1047, - 52967, 1969, -1000, 1951, 1951, 2942, -1000, -1000, 1047, 2941, - 2939, -115, 998, 2126, 2121, -1000, 2458, 30391, 40351, 39687, - 1516, -1000, 1783, -1000, -1000, -1000, -1000, -1000, -1000, 3882, - 998, -1000, 725, 2455, 15736, 3211, 15736, 3210, 752, 3188, - 1964, -1000, 52967, -1000, -1000, 52967, 4463, 3187, -1000, 3174, - 3488, 703, 3173, 3165, 52967, 2878, -1000, 3635, 52967, 896, - 3648, -1000, -1000, -1000, 522, -1000, -1000, -1000, 797, -1000, - 52967, -1000, 52967, -1000, 1858, -1000, 29063, -1000, -1000, 1961, - -1000, 2732, 2723, -1000, -1000, 2938, 2243, -1000, 1750, 445, - 1057, 52967, -1000, 313, 2720, 7717, -1000, -1000, -1000, -1000, - -1000, 3608, 2714, 2484, 52967, -1000, 52967, 1495, 1495, 3916, - 52967, 10394, -1000, -1000, 13068, 3164, -1000, 13068, -1000, -1000, - -1000, 2937, -1000, -1000, -1000, -1000, -1000, 3163, 3638, -1000, - -1000, -1000, -1000, -1000, -1000, 3907, -1000, 1962, -1000, 13068, - 13735, -1000, 1018, 17079, -265, 450, -1000, -1000, -1000, -240, - 2705, -1000, -1000, 3863, 2692, 2606, 52967, -1000, -1000, 1552, - -1000, 1552, -1000, -238, 13068, -1000, -1000, 1534, -1000, -1000, - 1365, 879, -1000, 2935, 311, -1000, 2841, -1000, 2837, 174, - -1000, 174, -1000, 363, 13068, -1000, 2824, -1000, 2772, -1000, - -1000, 2689, -1000, -1000, -1000, 2688, -1000, -1000, 2756, -1000, - 2928, -1000, 2685, -1000, -1000, 52967, -1000, -1000, 1300, 2684, - -1000, 506, 1047, -1000, 405, 52967, 704, -1000, 39023, 7050, - -384, -1000, 2683, 2400, 2682, 2400, 52967, 774, -1000, 3724, - 2668, -1000, 2922, -1000, 2667, 2666, -1000, -1000, 58888, -118, - -115, 20419, -118, -1000, -1000, 437, 484, -1000, -1000, 2414, - 740, -1000, -1000, 2659, 707, -1000, 1495, -1000, 2107, 2335, - 2629, 36367, 29063, 29727, 2654, -1000, -1000, -1000, 38359, 1962, - 1962, 4906, -1000, 465, 59044, -1000, 3160, 1350, 2115, -1000, - 2447, -1000, 2444, -1000, 3882, 1516, 139, -1000, -1000, 1905, - -1000, 1350, 2846, 3860, -1000, 3477, 52967, 2930, 52967, 3158, - 2083, 15736, -1000, 979, 3596, -1000, -1000, 4463, -1000, -1000, - 2338, 15736, -1000, -1000, 2653, 29727, 1136, 2069, 2062, 1157, - 3156, -1000, 812, 3904, -1000, -1000, -1000, 1203, 3155, -1000, - 2273, 2271, -1000, 52967, -1000, 36367, 36367, 1055, 1055, 36367, - 36367, 3142, 1024, -1000, -1000, 15736, -1000, -1000, 1951, -1000, - -1000, -1000, 1951, 1845, -1000, -1000, -1000, -1000, -1000, 52967, - 1779, -1000, -1000, -1000, 2500, -1000, -1000, 1476, -1000, 3840, - -1000, -1000, 2243, 52967, 2243, -1000, 37695, -1000, 3857, 3856, - -1000, -1000, 2243, 288, 262, 3140, 3128, -1000, -345, 52967, - 52967, -243, 2429, -1000, 2651, 275, -1000, -1000, 1462, -240, - 1456, -247, 140, 29063, 2060, -1000, 2921, 400, -138, -1000, - -1000, -1000, -1000, 2916, -1000, 1013, -1000, -1000, -1000, 1456, - 174, 174, 2914, 2912, -1000, -1000, -1000, -1000, 52967, -1000, - 52967, -1000, 52967, 2649, 2427, -1000, -1000, 1915, -1000, -1000, - -1000, 2265, 2262, 1914, 2911, 1750, 2625, -310, 2646, -310, - 2645, 768, 2400, -281, -1000, -1000, -1000, -1000, -101, -1000, - -1000, 501, -1000, -1000, -1000, 712, 2592, -1000, -1000, 462, - -1000, -1000, -1000, 2484, 2643, -1000, -1000, 120, -1000, 2013, - 1889, -1000, -1000, -1000, -1000, -1000, -1000, 964, -1000, 438, - 5711, -1000, 1475, -1000, 1365, 964, 35039, 770, 344, -1000, - 2425, -1000, -1000, 3916, -1000, 764, -1000, 750, -1000, 1864, - -1000, 1854, 37031, 2404, 2644, -1000, 58963, 1094, -1000, -1000, - 3900, -1000, -1000, -1000, -1000, -1000, -1000, 2641, 2640, -1000, - -1000, -1000, -1000, -1000, 2402, 3127, 61, 3757, 2637, -1000, - -1000, 3126, 1846, 1820, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1759, 1756, 36367, -1000, -1000, 3900, - 2401, 29063, 1951, 1776, 52967, -1000, -1000, 1754, 1752, -1000, - -1000, -1000, -1000, -1000, -323, 3109, 13068, 13068, -1000, -1000, - -1000, 3108, -1000, -1000, 3855, -243, -251, 2635, 196, 273, - -1000, 2632, -1000, -104, 3590, -143, -1000, -1000, 743, -225, - 194, 192, 190, -1000, -1000, -1000, 13068, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 52967, 2631, -1000, - -1000, 119, -1000, 1976, -1000, -310, -1000, -310, 2400, 2630, - -1000, 52967, 810, -1000, -1000, -1000, -1000, 306, -1000, -1000, - -1000, -1000, -1000, -1000, 2629, 2627, -1000, 685, 3854, -1000, - 59044, -1000, 1951, -1000, 685, 1673, -1000, 1951, 1951, -1000, - 608, -1000, 2073, -1000, 2396, -1000, 3840, -1000, 601, -1000, - 690, -1000, -1000, -1000, 1658, -1000, -1000, -1000, 58963, 742, - -1000, 958, 3104, -1000, -1000, 2910, 13068, 3103, 1951, 2904, - -94, 36367, 3485, 3484, 3483, 3479, 1649, -1000, -1000, 29063, - 52967, -1000, -1000, -1000, 35703, -1000, 3102, 1647, 1615, 52967, - 2606, -1000, -1000, 2626, -1000, 1033, 258, 273, -1000, 3853, - 243, 3851, 3850, 1425, 3589, -1000, -1000, 2261, -1000, 241, - 208, 203, -1000, -1000, -1000, -1000, 2274, 2274, -1000, 2625, - 2621, -1000, -1000, 2618, -310, 648, -1000, 384, -1000, -1000, - -1000, 784, -1000, 3848, 894, -1000, 29063, -1000, -1000, 35039, - 1962, 1962, -1000, -1000, 2394, -1000, -1000, -1000, -1000, 2389, - -1000, -1000, -1000, 1584, -1000, 52967, 1174, 9727, -1000, 2370, - -1000, 52967, -1000, 3498, -1000, 354, 1575, 784, 1055, 784, - 1055, 784, 1055, 784, 1055, 392, -1000, -1000, -1000, -1000, - 1567, 13068, -1000, -1000, 1566, -1000, -1000, -1000, 3099, 2377, - 213, 266, 3847, -1000, 2606, 3846, 2606, 2606, -1000, 217, - -122, 743, -1000, -1000, -1000, -1000, 2128, -1000, 2128, -1000, - -1000, -310, -1000, 2616, -1000, -1000, -1000, -1000, 1951, 1951, - 2615, 2611, 569, -1000, -1000, 1951, 1951, 1951, 1951, 34375, - 731, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 742, 59044, - -1000, 9727, 1559, -1000, 2243, -1000, 1024, -1000, -1000, 3415, - 3261, 3889, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 3098, 2895, -1000, 52967, 3753, 28399, 250, -1000, - -1000, -1000, 2609, -1000, 2606, -1000, -1000, 1944, -139, -1000, - -1000, -1000, -1000, -286, 2364, 2363, -1000, -1000, 52967, 2358, - 2353, 2345, 2603, -1000, 52967, 725, -1000, 59044, 1557, -1000, - 9727, -1000, -1000, 3902, -1000, 3890, 1116, 1116, 784, 784, - 784, 784, 13068, -1000, -1000, -1000, 52967, -1000, 1478, -1000, - -1000, -1000, 1773, -1000, -1000, -1000, -1000, 2596, -146, -1000, - -1000, 2594, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1436, - 2846, -1000, -1000, -1000, -1000, -1000, 2417, 820, -1000, 2777, - 1364, -1000, 1934, -1000, 33711, 52967, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 52967, 9060, -1000, 1366, -1000, - -1000, 2243, 52967, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 3857, -1000, 3790, 162, + 13027, 162, 13027, 162, 1789, 2954, 2953, 1781, 2951, 2950, + -1000, 13027, 2947, 5319, 1129, 2731, 1129, -1000, -1000, 523, + 31014, 52926, 3824, -1000, 52926, 1002, -373, 619, 3165, -1000, + 625, 2110, 1306, 3164, 2730, -1000, -1000, 52926, 2348, 775, + 2348, 858, 52926, -316, -100, 2442, 7009, -1000, 2715, -1000, + -118, 1444, 5888, 1073, 3664, 2942, 1491, -1000, -1000, -1000, + -1000, -1000, 2714, 284, -1000, -1000, -1000, -1000, 2439, -1000, + -1000, 2383, 1498, 301, -1000, -1000, -1000, -1000, -1000, -1000, + 2452, 52926, 40974, 2528, 2062, -374, -1000, 3163, -1000, 2031, + 2031, 2031, 1002, 52926, 1772, -1000, 2031, 2031, 2941, -1000, + -1000, 1002, 2939, 2938, -132, 956, 2029, 2028, -1000, 2417, + 30350, 40310, 39646, 1641, -1000, 1784, -1000, -1000, -1000, -1000, + -1000, -1000, 3822, 956, 415, 705, 2413, 15695, 3161, 15695, + 3158, 738, 3157, 1764, -1000, 52926, -1000, -1000, 52926, 4777, + 3150, -1000, 3149, 3416, 662, 3146, 3144, 52926, 2872, -1000, + 3595, 52926, 890, 3608, -1000, -1000, -1000, 497, -1000, -1000, + -1000, 807, -1000, 52926, -1000, 52926, -1000, 1793, -1000, 29022, + -1000, -1000, 1762, -1000, 2710, 2709, -1000, -1000, 2937, 2573, + -1000, 1733, 376, 1062, 52926, -1000, 284, 2699, 7676, -1000, + -1000, -1000, -1000, -1000, 3573, 2698, 2452, 52926, -1000, 52926, + 1462, 1462, 3857, 52926, 10353, -1000, -1000, 13027, 3141, -1000, + 13027, -1000, -1000, -1000, 2934, -1000, -1000, -1000, -1000, -1000, + 3138, 3601, -1000, -1000, -1000, -1000, -1000, -1000, 3847, -1000, + 1992, -1000, 13027, 13694, -1000, 976, 17038, -266, 422, -1000, + -1000, -1000, -246, 2696, -1000, -1000, 3789, 2695, 2606, 52926, + -1000, -1000, 1488, -1000, 1488, -1000, -243, 13027, -1000, -1000, + 1478, -1000, -1000, 1405, 870, -1000, 2932, 309, -1000, 2865, + -1000, 2834, 162, -1000, 162, -1000, 308, 13027, -1000, 2717, + -1000, 2628, -1000, -1000, 2694, -1000, -1000, -1000, 2691, -1000, + -1000, 2613, -1000, 2929, -1000, 2690, -1000, -1000, 52926, -1000, + -1000, 1279, 2689, -1000, 478, 1002, -1000, 436, 52926, 692, + -1000, 38982, 7009, -375, -1000, 2684, 2348, 2680, 2348, 52926, + 774, -1000, 3660, 2679, -1000, 2922, -1000, 2677, 2673, -1000, + -1000, 5888, 415, -132, 20378, -1000, -1000, 417, 473, -1000, + -1000, 2368, 722, -1000, -1000, 2672, 715, -1000, 1462, -1000, + 2060, 2234, 2627, 36326, 29022, 29686, 2670, -1000, -1000, -1000, + 38318, 1992, 1992, 58913, -1000, 394, 58989, -1000, 3132, 1348, + 2023, -1000, 2412, -1000, 2409, -1000, 3822, 1641, 148, -1000, + -1000, 1932, -1000, 1348, -1000, 3093, 3788, -1000, 3154, 52926, + 2668, 52926, 3130, 2056, 15695, -1000, 947, 3559, -1000, -1000, + 4777, -1000, -1000, 2242, 15695, -1000, -1000, 2664, 29686, 1122, + 2055, 2053, 1149, 3129, -1000, 830, 3845, -1000, -1000, -1000, + 1115, 3123, -1000, 2215, 2204, -1000, 52926, -1000, 36326, 36326, + 899, 899, 36326, 36326, 3122, 967, -1000, -1000, 15695, -1000, + -1000, 2031, -1000, -1000, -1000, 2031, 1768, -1000, -1000, -1000, + -1000, -1000, 52926, 1778, -1000, -1000, -1000, 2528, -1000, -1000, + 1460, -1000, 3766, -1000, -1000, 2573, 52926, 2573, -1000, 37654, + -1000, 3787, 3785, -1000, -1000, 2573, 274, 262, 3120, 3119, + -1000, -364, 52926, 52926, -248, 2386, -1000, 2662, 224, -1000, + -1000, 1450, -246, 1436, -250, 126, 29022, 2050, -1000, 2915, + 387, -144, -1000, -1000, -1000, -1000, 2913, -1000, 991, -1000, + -1000, -1000, 1436, 162, 162, 2912, 2910, -1000, -1000, -1000, + -1000, 52926, -1000, 52926, -1000, 52926, 2661, 2381, -1000, -1000, + 1753, -1000, -1000, -1000, 2197, 2192, 1752, 2908, 1733, 2622, + -316, 2659, -316, 2656, 753, 2348, -285, -1000, -1000, -1000, + -1000, -120, -1000, -135, -1000, -1000, 693, 2577, -1000, -1000, + 467, -1000, -1000, -1000, 2452, 2654, -1000, -1000, 124, -1000, + 2044, 1742, -1000, -1000, -1000, -1000, -1000, -1000, 946, -1000, + 415, 58951, -1000, 1497, -1000, 1405, 946, 34998, 769, 339, + -1000, 2375, -1000, -1000, 3857, -1000, 762, -1000, 726, -1000, + 1732, -1000, 1728, 36990, 2372, 2356, -1000, 5876, 1074, -1000, + -1000, 3807, -1000, -1000, -1000, -1000, -1000, -1000, 2648, 2646, + -1000, -1000, -1000, -1000, -1000, 2365, 3118, 52, 3701, 2643, + -1000, -1000, 3116, 1725, 1717, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1665, 1649, 36326, -1000, -1000, + 3807, 2350, 29022, 2031, 1761, 52926, -1000, -1000, 1646, 1632, + -1000, -1000, -1000, -1000, -1000, -330, 3111, 13027, 13027, -1000, + -1000, -1000, 3109, -1000, -1000, 3782, -248, -252, 2642, 178, + 250, -1000, 2640, -1000, -121, 3553, -156, -1000, -1000, 951, + -238, 157, 138, 128, -1000, -1000, -1000, 13027, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 52926, 2631, + -1000, -1000, 119, -1000, 2036, -1000, -316, -1000, -316, 2348, + 2629, -1000, 52926, -1000, 479, -1000, -1000, 254, -1000, -1000, + -1000, -1000, -1000, -1000, 2627, 2626, -1000, 687, 3778, -1000, + 58989, -1000, 2031, -1000, 687, 1623, -1000, 2031, 2031, -1000, + 610, -1000, 2017, -1000, 2347, -1000, 3766, -1000, 604, -1000, + 702, -1000, -1000, -1000, 1614, -1000, -1000, -1000, 5876, 712, + -1000, 939, 3108, -1000, -1000, 2896, 13027, 3107, 2031, 2891, + -102, 36326, 3383, 3265, 3253, 3099, 1610, -1000, -1000, 29022, + 52926, -1000, -1000, -1000, 35662, -1000, 3104, 1593, 1586, 52926, + 2606, -1000, -1000, 2624, -1000, 996, 220, 250, -1000, 3777, + 207, 3776, 3774, 1420, 3552, -1000, -1000, 2189, -1000, 204, + 195, 166, -1000, -1000, -1000, -1000, 2212, 2212, -1000, 2622, + 2621, -1000, -1000, 2620, -316, 621, -1000, 828, -1000, -1000, + -1000, -1000, -1000, 538, -1000, 3773, 853, -1000, 29022, -1000, + -1000, 34998, 1992, 1992, -1000, -1000, 2345, -1000, -1000, -1000, + -1000, 2335, -1000, -1000, -1000, 1585, -1000, 52926, 1158, 9686, + -1000, 2231, -1000, 52926, -1000, 3474, -1000, 357, 1568, 538, + 899, 538, 899, 538, 899, 538, 899, 361, -1000, -1000, + -1000, -1000, 1552, 13027, -1000, -1000, 1517, -1000, -1000, -1000, + 3096, 2328, 222, 191, 3771, -1000, 2606, 3770, 2606, 2606, + -1000, 171, -140, 951, -1000, -1000, -1000, -1000, 2110, -1000, + 2110, -1000, -1000, -316, -1000, 2614, -1000, -1000, 371, -1000, + 2031, 2031, 2612, 2610, 575, -1000, -1000, 2031, 2031, 2031, + 2031, 34334, 714, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 712, 58989, -1000, 9686, 1514, -1000, 2573, -1000, 967, -1000, + -1000, 3196, 3145, 3829, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 3094, 2889, -1000, 52926, 3686, 28358, + 213, -1000, -1000, -1000, 2609, -1000, 2606, -1000, -1000, 2030, + -146, -1000, -1000, -1000, -1000, -291, -1000, 2325, 2324, -1000, + -1000, 52926, 2303, 2302, 2281, 2604, -1000, 52926, 705, -1000, + 58989, 1481, -1000, 9686, -1000, -1000, 3844, -1000, 3842, 1187, + 1187, 538, 538, 538, 538, 13027, -1000, -1000, -1000, 52926, + -1000, 1472, -1000, -1000, -1000, 1751, -1000, -1000, -1000, -1000, + 2603, -157, -1000, -1000, 2601, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1434, 3093, -1000, -1000, -1000, -1000, -1000, 2310, + 835, -1000, 2839, 1388, -1000, 2004, -1000, 33670, 52926, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 52926, 9019, + -1000, 1734, -1000, -1000, 2573, 52926, -1000, } var yyPgo = [...]int{ - 0, 190, 54, 259, 187, 4563, 107, 260, 350, 336, - 255, 254, 4562, 4561, 4560, 3640, 3637, 4558, 4556, 4555, - 4554, 4553, 4552, 4551, 4550, 4549, 4548, 4547, 4545, 4544, - 4543, 4542, 4540, 4539, 4538, 4537, 4531, 4530, 4528, 4525, - 4523, 4522, 4520, 4519, 4501, 4500, 4499, 4498, 4497, 4496, - 4495, 4494, 253, 4491, 4489, 4488, 4487, 4485, 4483, 4482, - 4481, 4480, 4479, 4478, 4477, 4474, 4473, 4472, 4471, 4470, - 4469, 4468, 4466, 4463, 4460, 4457, 4456, 4455, 4454, 4453, - 4452, 4451, 4450, 4449, 4440, 4439, 4438, 4432, 4425, 4423, - 4420, 275, 4419, 3611, 4417, 4416, 4415, 4414, 4413, 4412, - 4411, 4410, 4407, 4405, 4404, 4403, 293, 4402, 4401, 4400, - 4399, 4398, 4397, 4391, 4389, 4388, 4386, 4382, 4381, 4380, - 286, 4379, 4375, 4373, 4372, 242, 4371, 261, 4370, 185, - 144, 4367, 4364, 4363, 4362, 4361, 4360, 105, 126, 4359, - 4358, 4357, 4355, 4354, 4353, 4352, 4351, 4350, 4349, 4348, - 4347, 4344, 4343, 248, 169, 80, 4341, 48, 4339, 4338, - 226, 4337, 167, 4336, 157, 4335, 4334, 4333, 4332, 4330, - 4329, 4327, 4326, 4324, 4318, 4313, 4311, 4310, 4308, 4307, - 4306, 4304, 4303, 4302, 4301, 4300, 4298, 4296, 4295, 49, - 4294, 267, 4293, 82, 4290, 189, 4289, 84, 4284, 4282, - 94, 25, 35, 4280, 56, 93, 269, 2755, 265, 4277, - 199, 4273, 4272, 262, 195, 4271, 4265, 270, 4263, 180, - 235, 172, 110, 136, 4262, 148, 4258, 272, 50, 41, - 247, 217, 164, 4257, 4256, 60, 177, 139, 4255, 223, - 109, 4254, 122, 4253, 4252, 120, 4251, 246, 192, 4249, - 119, 4247, 4246, 4243, 19, 4239, 4238, 205, 202, 4237, - 4234, 111, 4232, 4231, 70, 143, 4230, 87, 142, 179, - 141, 4225, 3119, 132, 100, 4224, 128, 114, 4223, 155, - 4222, 4221, 4216, 4214, 198, 4212, 4210, 156, 64, 4208, - 4207, 4205, 81, 4204, 83, 4203, 79, 4202, 62, 4201, - 4199, 4198, 4196, 4195, 4194, 4193, 4192, 4191, 4190, 4189, - 4188, 51, 4187, 4186, 4183, 4182, 7, 13, 15, 4181, - 32, 4179, 183, 4175, 4173, 181, 4171, 201, 4170, 4168, - 108, 98, 4167, 102, 176, 4165, 14, 27, 76, 4164, - 4160, 4159, 317, 4158, 4157, 4156, 278, 4155, 4151, 4149, - 173, 4148, 4146, 4145, 486, 4144, 4141, 4140, 4139, 4138, - 4137, 69, 4136, 1, 224, 40, 4135, 147, 151, 4134, - 44, 31, 4133, 52, 124, 211, 149, 113, 4132, 4131, - 4130, 297, 212, 116, 86, 0, 112, 227, 159, 4128, - 4127, 4126, 274, 4124, 240, 249, 233, 209, 266, 257, - 4123, 4122, 77, 4121, 174, 33, 58, 152, 218, 23, - 239, 4120, 1909, 10, 197, 4119, 206, 4118, 8, 17, - 324, 165, 4117, 4116, 37, 276, 4114, 4112, 4111, 145, - 4110, 4109, 204, 85, 4108, 4106, 4105, 4099, 4094, 43, - 4093, 194, 18, 4092, 135, 4089, 258, 106, 231, 150, - 193, 191, 171, 225, 238, 92, 91, 4088, 1939, 158, - 117, 22, 4087, 229, 4086, 203, 133, 4085, 96, 4081, - 252, 273, 214, 4080, 196, 11, 53, 39, 29, 45, - 9, 430, 71, 4078, 4076, 24, 57, 4074, 61, 4073, - 20, 4072, 4071, 46, 4070, 63, 5, 4069, 4068, 16, - 21, 4067, 38, 220, 184, 140, 104, 66, 4066, 4064, - 168, 160, 4063, 163, 170, 166, 4062, 88, 4061, 4060, - 4059, 4058, 3308, 263, 4057, 4056, 4054, 4053, 4039, 4034, - 4033, 4032, 222, 4030, 121, 42, 4029, 4028, 4027, 4026, - 89, 162, 4025, 4024, 4023, 4021, 34, 153, 4020, 12, - 4019, 28, 26, 36, 4018, 115, 4017, 3, 207, 4015, - 4014, 4, 4013, 4010, 2, 4009, 4007, 138, 4006, 103, - 30, 182, 131, 4005, 4004, 101, 221, 154, 4003, 4001, - 118, 251, 213, 3997, 99, 244, 268, 3996, 219, 3994, - 3991, 3989, 3988, 3987, 1394, 3986, 3985, 245, 72, 90, - 3984, 228, 127, 3983, 3981, 95, 175, 129, 125, 59, - 97, 3980, 123, 215, 3978, 210, 3977, 264, 3976, 3974, - 137, 3973, 3971, 3970, 3968, 216, 3953, 3951, 200, 230, - 3950, 3949, 277, 3948, 3946, 3945, 3942, 3941, 3940, 3938, - 3932, 3931, 3930, 241, 281, 3929, + 0, 195, 54, 265, 193, 4530, 101, 258, 302, 295, + 256, 253, 4529, 4528, 4523, 3617, 3603, 4521, 4520, 4519, + 4516, 4515, 4514, 4512, 4510, 4509, 4508, 4507, 4506, 4505, + 4504, 4503, 4500, 4499, 4498, 4497, 4495, 4494, 4493, 4491, + 4490, 4489, 4488, 4485, 4484, 4482, 4481, 4480, 4477, 4474, + 4473, 4472, 252, 4471, 4470, 4469, 4467, 4466, 4465, 4463, + 4462, 4461, 4460, 4459, 4458, 4456, 4455, 4454, 4453, 4452, + 4451, 4450, 4449, 4448, 4447, 4446, 4445, 4444, 4443, 4442, + 4437, 4436, 4435, 4417, 4412, 4411, 4410, 4409, 4408, 4406, + 4405, 285, 4404, 3583, 4403, 4402, 4401, 4400, 4399, 4397, + 4396, 4388, 4387, 4386, 4385, 4384, 349, 4383, 4382, 4381, + 4380, 4379, 4378, 4377, 4375, 4373, 4372, 4369, 4368, 4367, + 331, 4366, 4364, 4363, 4360, 255, 4357, 326, 4356, 191, + 155, 4354, 4353, 4350, 4348, 4347, 4346, 110, 128, 4345, + 4343, 4342, 4341, 4340, 4339, 4338, 4337, 4336, 4333, 4332, + 4331, 4330, 4323, 247, 165, 79, 4322, 53, 4320, 4319, + 225, 4317, 160, 4316, 167, 4315, 4313, 4312, 4308, 4307, + 4306, 4305, 4304, 4303, 4302, 4301, 4300, 4299, 4297, 4296, + 4295, 4294, 4289, 4276, 4275, 4274, 4272, 4271, 4266, 49, + 267, 4265, 4263, 4259, 4258, 200, 4257, 76, 4256, 4255, + 93, 26, 36, 4254, 111, 99, 261, 1776, 264, 4252, + 206, 4250, 4249, 266, 198, 4248, 4247, 272, 4246, 180, + 242, 172, 106, 138, 4245, 156, 4244, 268, 45, 40, + 246, 210, 163, 4242, 4241, 66, 147, 142, 4239, 220, + 105, 4238, 125, 4234, 4231, 121, 4230, 244, 187, 4229, + 119, 4226, 4225, 4224, 22, 4223, 4221, 209, 226, 4218, + 4217, 109, 4216, 4215, 77, 143, 4214, 82, 141, 183, + 136, 4211, 3087, 140, 91, 4209, 144, 114, 4208, 92, + 4206, 4204, 4202, 4200, 189, 4198, 4197, 151, 61, 4196, + 4195, 4194, 72, 4193, 85, 4189, 83, 4188, 69, 4187, + 4186, 4185, 4184, 4183, 4182, 4181, 4180, 4179, 4178, 4175, + 4174, 60, 4173, 4171, 4170, 4167, 7, 14, 17, 4166, + 29, 4165, 186, 4162, 4161, 181, 4159, 205, 4157, 4156, + 103, 98, 4155, 102, 179, 4151, 9, 30, 80, 4150, + 4149, 4148, 137, 4146, 4145, 4141, 275, 4140, 4138, 4137, + 173, 4136, 4135, 4134, 3023, 4130, 4129, 4128, 4127, 4126, + 4125, 120, 4124, 1, 224, 42, 4123, 149, 150, 4122, + 41, 32, 4121, 50, 129, 212, 153, 113, 4120, 4119, + 4117, 296, 231, 104, 52, 0, 112, 238, 171, 4114, + 4103, 4102, 259, 4101, 251, 249, 248, 277, 257, 190, + 4100, 4099, 62, 4098, 174, 33, 58, 154, 84, 23, + 262, 4096, 446, 10, 204, 4095, 218, 4089, 8, 16, + 124, 159, 4088, 4086, 37, 269, 4084, 4079, 4078, 148, + 4077, 4076, 203, 81, 4075, 4073, 4071, 4070, 4067, 43, + 4065, 201, 18, 4064, 133, 4063, 250, 97, 197, 166, + 199, 196, 177, 228, 230, 88, 87, 4058, 1909, 170, + 115, 15, 4057, 233, 4050, 188, 131, 4043, 132, 4042, + 245, 274, 214, 4041, 202, 11, 51, 39, 31, 48, + 12, 298, 70, 4039, 4038, 24, 57, 4037, 56, 4036, + 20, 4035, 4034, 46, 4033, 71, 5, 4030, 4027, 19, + 21, 4007, 38, 216, 184, 139, 100, 64, 4006, 4004, + 157, 176, 4001, 162, 169, 168, 4000, 86, 3998, 3997, + 3996, 3993, 2931, 260, 3992, 3991, 3990, 3989, 3988, 3987, + 3985, 3984, 223, 3983, 118, 44, 3980, 3979, 3977, 3976, + 90, 164, 3975, 3974, 3973, 3972, 35, 152, 3971, 13, + 3970, 27, 25, 34, 3968, 116, 3967, 3, 217, 3966, + 3965, 4, 3964, 3963, 2, 3961, 3960, 145, 3945, 108, + 28, 175, 122, 3942, 3940, 96, 222, 158, 3939, 3936, + 117, 241, 213, 3935, 107, 239, 263, 3934, 219, 3933, + 3932, 3931, 3927, 3923, 1446, 3922, 3921, 240, 63, 94, + 3906, 227, 127, 3903, 3902, 89, 182, 135, 130, 59, + 95, 3901, 126, 215, 3900, 207, 3899, 270, 3898, 3897, + 123, 3896, 3895, 3893, 3892, 221, 3890, 3889, 211, 229, + 3888, 3887, 273, 3886, 3885, 3883, 3880, 3879, 3877, 3876, + 3873, 3872, 3871, 276, 360, 3846, } -//line mysql_sql.y:13658 +//line mysql_sql.y:13663 type yySymType struct { union interface{} id int @@ -9517,96 +9514,96 @@ var yyR1 = [...]int{ 256, 257, 40, 258, 258, 259, 259, 260, 260, 261, 262, 263, 263, 263, 263, 437, 437, 38, 247, 247, 248, 248, 249, 249, 250, 251, 251, 251, 255, 252, - 253, 253, 640, 640, 639, 37, 37, 30, 190, 190, - 191, 191, 191, 193, 193, 307, 307, 307, 192, 192, - 194, 194, 194, 599, 601, 601, 603, 602, 602, 602, - 605, 605, 605, 605, 605, 606, 606, 606, 606, 607, - 607, 31, 172, 172, 197, 197, 177, 610, 610, 610, - 609, 609, 611, 611, 612, 612, 369, 369, 370, 370, - 188, 189, 189, 179, 174, 196, 196, 196, 196, 196, - 198, 198, 275, 275, 173, 178, 181, 183, 600, 608, - 608, 608, 454, 454, 451, 452, 452, 449, 448, 448, - 448, 614, 614, 613, 613, 613, 384, 384, 32, 444, - 444, 446, 447, 447, 447, 447, 447, 447, 447, 447, - 438, 438, 438, 438, 36, 442, 442, 443, 443, 443, - 443, 443, 443, 443, 443, 443, 443, 443, 439, 439, - 441, 441, 436, 436, 436, 436, 436, 436, 436, 436, - 35, 35, 195, 195, 435, 435, 432, 432, 254, 254, - 430, 430, 431, 431, 429, 429, 429, 433, 433, 43, - 84, 44, 45, 46, 42, 434, 434, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 241, 241, - 203, 203, 203, 203, 203, 203, 201, 201, 201, 201, - 202, 202, 200, 200, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 156, 155, 155, 155, 155, - 155, 158, 158, 368, 368, 367, 367, 157, 308, 308, - 41, 286, 286, 509, 509, 504, 504, 504, 504, 504, - 524, 524, 524, 505, 505, 505, 506, 506, 506, 508, - 508, 508, 507, 507, 507, 507, 507, 523, 523, 525, - 525, 525, 476, 476, 477, 477, 477, 480, 480, 496, - 496, 497, 497, 495, 495, 502, 502, 501, 501, 500, - 500, 499, 499, 498, 498, 498, 498, 491, 491, 490, - 490, 478, 478, 478, 478, 478, 479, 479, 479, 489, - 489, 494, 494, 339, 339, 338, 338, 294, 294, 295, - 295, 337, 337, 292, 292, 293, 293, 293, 336, 336, + 253, 253, 640, 640, 639, 37, 30, 190, 190, 191, + 191, 191, 193, 193, 307, 307, 307, 192, 192, 194, + 194, 194, 599, 601, 601, 603, 602, 602, 602, 605, + 605, 605, 605, 605, 606, 606, 606, 606, 607, 607, + 31, 172, 172, 197, 197, 177, 610, 610, 610, 609, + 609, 611, 611, 612, 612, 369, 369, 370, 370, 188, + 189, 189, 179, 174, 196, 196, 196, 196, 196, 198, + 198, 275, 275, 173, 178, 181, 183, 600, 608, 608, + 608, 454, 454, 451, 452, 452, 449, 448, 448, 448, + 614, 614, 613, 613, 613, 384, 384, 32, 444, 444, + 446, 447, 447, 447, 447, 447, 447, 447, 447, 438, + 438, 438, 438, 36, 442, 442, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 439, 439, 441, + 441, 436, 436, 436, 436, 436, 436, 436, 436, 35, + 35, 195, 195, 435, 435, 432, 432, 254, 254, 430, + 430, 431, 431, 429, 429, 429, 433, 433, 43, 84, + 44, 45, 46, 42, 434, 434, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 241, 241, 203, + 203, 203, 203, 203, 203, 201, 201, 201, 201, 202, + 202, 200, 200, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 156, 155, 155, 155, 155, 155, + 158, 158, 368, 368, 367, 367, 157, 308, 308, 41, + 286, 286, 509, 509, 504, 504, 504, 504, 504, 524, + 524, 524, 505, 505, 505, 506, 506, 506, 508, 508, + 508, 507, 507, 507, 507, 507, 523, 523, 525, 525, + 525, 476, 476, 477, 477, 477, 480, 480, 496, 496, + 497, 497, 495, 495, 502, 502, 501, 501, 500, 500, + 499, 499, 498, 498, 498, 498, 491, 491, 490, 490, + 478, 478, 478, 478, 478, 479, 479, 479, 489, 489, + 494, 494, 339, 339, 338, 338, 294, 294, 295, 295, + 337, 337, 292, 292, 293, 293, 293, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 574, 574, 575, 297, 297, 309, 309, - 309, 309, 309, 309, 296, 296, 298, 298, 274, 274, - 272, 272, 264, 264, 264, 264, 264, 264, 265, 265, - 266, 266, 267, 267, 267, 271, 271, 270, 270, 270, - 270, 268, 268, 269, 269, 269, 269, 269, 269, 462, - 462, 571, 571, 572, 572, 567, 567, 567, 570, 570, - 570, 570, 570, 570, 570, 570, 573, 573, 573, 569, - 569, 276, 362, 362, 362, 385, 385, 385, 385, 387, - 361, 361, 361, 291, 291, 290, 290, 288, 288, 288, + 336, 336, 574, 574, 575, 297, 297, 309, 309, 309, + 309, 309, 309, 296, 296, 298, 298, 274, 274, 272, + 272, 264, 264, 264, 264, 264, 264, 265, 265, 266, + 266, 267, 267, 267, 271, 271, 270, 270, 270, 270, + 268, 268, 269, 269, 269, 269, 269, 269, 462, 462, + 571, 571, 572, 572, 567, 567, 567, 570, 570, 570, + 570, 570, 570, 570, 570, 573, 573, 573, 569, 569, + 276, 362, 362, 362, 385, 385, 385, 385, 387, 361, + 361, 361, 291, 291, 290, 290, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 288, 288, 461, - 461, 401, 401, 402, 402, 320, 319, 319, 319, 319, - 319, 317, 318, 316, 316, 316, 316, 316, 313, 313, - 312, 312, 312, 314, 314, 314, 314, 314, 440, 440, - 310, 310, 300, 300, 300, 299, 299, 299, 503, 408, + 288, 288, 288, 288, 288, 288, 288, 288, 461, 461, + 401, 401, 402, 402, 320, 319, 319, 319, 319, 319, + 317, 318, 316, 316, 316, 316, 316, 313, 313, 312, + 312, 312, 314, 314, 314, 314, 314, 440, 440, 310, + 310, 300, 300, 300, 299, 299, 299, 503, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, - 408, 408, 410, 410, 410, 410, 410, 410, 410, 410, + 408, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 315, + 410, 410, 410, 410, 410, 410, 410, 410, 315, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, - 359, 359, 360, 360, 360, 360, 360, 360, 360, 360, - 411, 411, 417, 417, 583, 583, 582, 277, 277, 277, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 287, - 287, 287, 485, 485, 485, 485, 486, 486, 486, 486, - 487, 487, 487, 483, 483, 484, 484, 422, 423, 423, - 530, 530, 531, 531, 481, 481, 482, 358, 358, 358, - 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, + 359, 360, 360, 360, 360, 360, 360, 360, 360, 411, + 411, 417, 417, 583, 583, 582, 277, 277, 277, 278, + 278, 278, 278, 278, 278, 278, 278, 278, 287, 287, + 287, 485, 485, 485, 485, 486, 486, 486, 486, 487, + 487, 487, 483, 483, 484, 484, 422, 423, 423, 530, + 530, 531, 531, 481, 481, 482, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, - 538, 538, 538, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 593, - 593, 593, 579, 579, 579, 580, 580, 580, 580, 580, - 580, 580, 580, 580, 580, 580, 580, 581, 581, 581, + 358, 358, 358, 358, 358, 358, 358, 358, 358, 538, + 538, 538, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 593, 593, + 593, 579, 579, 579, 580, 580, 580, 580, 580, 580, + 580, 580, 580, 580, 580, 580, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, - 581, 581, 581, 581, 357, 357, 357, 356, 356, 356, + 581, 581, 581, 357, 357, 357, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 424, 424, 425, 425, 535, - 535, 535, 535, 535, 535, 536, 536, 537, 537, 537, - 537, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 356, 356, 356, 356, 424, 424, 425, 425, 535, 535, + 535, 535, 535, 535, 536, 536, 537, 537, 537, 537, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, - 529, 409, 354, 354, 354, 426, 418, 418, 419, 419, - 420, 420, 412, 412, 412, 412, 412, 412, 413, 413, + 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 409, 354, 354, 354, 426, 418, 418, 419, 419, 420, + 420, 412, 412, 412, 412, 412, 412, 413, 413, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 414, 414, 416, 416, 428, 428, 428, 427, - 427, 427, 427, 427, 427, 427, 289, 289, 289, 289, - 406, 406, 406, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 279, 279, 279, 279, 283, - 283, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 284, 284, 284, 284, 284, - 282, 282, 282, 282, 282, 280, 280, 280, 280, 280, + 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, + 407, 414, 414, 416, 416, 428, 428, 428, 427, 427, + 427, 427, 427, 427, 427, 289, 289, 289, 289, 406, + 406, 406, 405, 405, 405, 405, 405, 405, 405, 405, + 405, 405, 405, 405, 279, 279, 279, 279, 283, 283, + 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 284, 284, 284, 284, 284, 282, + 282, 282, 282, 282, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 128, 129, 129, 281, 364, 364, - 510, 510, 513, 513, 511, 511, 512, 514, 514, 514, - 515, 515, 515, 516, 516, 516, 520, 520, 373, 373, - 373, 381, 381, 380, 380, 380, 380, 380, 380, 380, + 280, 280, 280, 128, 129, 129, 281, 364, 364, 510, + 510, 513, 513, 511, 511, 512, 514, 514, 514, 515, + 515, 515, 516, 516, 516, 520, 520, 373, 373, 373, + 381, 381, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, @@ -9644,13 +9641,13 @@ var yyR1 = [...]int{ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 379, 379, 379, 379, 379, - 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, + 380, 380, 380, 380, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, + 378, 378, 378, 378, } var yyR2 = [...]int{ @@ -9698,7 +9695,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 6, 4, 1, 1, 0, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 10, 7, 4, 4, 3, + 1, 1, 1, 1, 1, 10, 8, 4, 4, 3, 1, 3, 3, 1, 3, 1, 6, 7, 4, 4, 7, 8, 6, 6, 8, 6, 11, 10, 3, 3, 3, 1, 1, 1, 3, 2, 4, 5, 5, 6, @@ -9762,96 +9759,96 @@ var yyR2 = [...]int{ 1, 1, 9, 1, 3, 0, 1, 1, 3, 1, 3, 0, 1, 1, 1, 0, 2, 14, 1, 3, 0, 1, 1, 3, 1, 1, 2, 4, 1, 1, - 1, 1, 0, 1, 2, 9, 9, 7, 1, 2, - 3, 3, 3, 0, 4, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, 4, 1, 1, 1, - 3, 3, 4, 3, 3, 0, 1, 1, 1, 0, - 2, 7, 8, 10, 2, 2, 8, 0, 3, 3, - 0, 3, 0, 3, 0, 5, 1, 3, 0, 3, - 3, 0, 2, 9, 8, 0, 2, 2, 3, 3, - 0, 2, 0, 2, 4, 4, 4, 5, 1, 0, - 2, 2, 1, 3, 2, 1, 3, 2, 1, 3, - 2, 0, 1, 3, 4, 3, 1, 1, 4, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 11, 0, 2, 3, 3, 2, - 2, 3, 1, 1, 3, 3, 3, 3, 1, 3, - 3, 4, 0, 2, 2, 2, 2, 2, 2, 2, - 6, 8, 0, 4, 1, 1, 0, 3, 0, 1, - 0, 1, 1, 2, 4, 4, 4, 0, 1, 8, - 2, 4, 4, 4, 9, 0, 2, 8, 9, 5, - 5, 8, 7, 8, 12, 12, 13, 13, 0, 4, - 0, 3, 3, 3, 2, 2, 0, 3, 3, 3, - 4, 4, 0, 3, 11, 9, 11, 8, 6, 9, - 7, 10, 7, 6, 8, 2, 2, 9, 4, 5, - 3, 0, 4, 1, 3, 0, 3, 6, 0, 2, - 10, 0, 2, 0, 2, 0, 3, 2, 4, 3, - 0, 2, 1, 0, 2, 3, 0, 2, 3, 0, - 2, 1, 0, 3, 2, 4, 3, 0, 1, 0, - 1, 1, 0, 6, 0, 3, 5, 0, 4, 0, - 3, 1, 3, 4, 5, 0, 3, 1, 3, 2, - 3, 1, 2, 0, 4, 6, 5, 0, 2, 0, - 2, 4, 5, 4, 5, 1, 5, 6, 5, 0, - 3, 0, 1, 1, 3, 3, 3, 0, 4, 1, - 3, 3, 3, 0, 1, 1, 3, 2, 3, 3, - 3, 4, 4, 3, 3, 3, 3, 4, 4, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 1, 5, 4, 1, 3, 3, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 4, 0, 5, 5, 5, 5, 6, 0, 1, - 1, 3, 1, 1, 1, 1, 1, 7, 9, 7, - 9, 2, 1, 7, 9, 7, 9, 8, 5, 0, - 1, 0, 1, 1, 1, 1, 3, 3, 1, 1, + 1, 1, 0, 1, 2, 10, 7, 0, 2, 3, + 3, 3, 0, 4, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, + 3, 4, 3, 3, 0, 1, 1, 1, 0, 2, + 7, 8, 10, 2, 2, 8, 0, 3, 3, 0, + 3, 0, 3, 0, 5, 1, 3, 0, 3, 3, + 0, 2, 9, 8, 0, 2, 2, 3, 3, 0, + 2, 0, 2, 4, 4, 4, 5, 1, 0, 2, + 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, + 0, 1, 3, 4, 3, 1, 1, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 3, 1, 3, 5, 1, 1, 1, 1, 1, - 1, 3, 5, 0, 1, 1, 2, 1, 2, 2, - 1, 1, 2, 2, 2, 3, 3, 2, 2, 1, - 5, 6, 4, 1, 1, 1, 5, 4, 1, 1, - 2, 0, 1, 1, 2, 5, 0, 1, 1, 2, - 2, 3, 3, 1, 1, 2, 2, 2, 0, 1, - 2, 2, 2, 0, 4, 7, 3, 3, 0, 3, - 0, 3, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 1, 1, 11, 0, 2, 3, 3, 2, 2, + 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, + 4, 0, 2, 2, 2, 2, 2, 2, 2, 6, + 8, 0, 4, 1, 1, 0, 3, 0, 1, 0, + 1, 1, 2, 4, 4, 4, 0, 1, 8, 2, + 4, 4, 4, 9, 0, 2, 8, 9, 5, 5, + 8, 7, 8, 12, 12, 13, 13, 0, 4, 0, + 3, 3, 3, 2, 2, 0, 3, 3, 3, 4, + 4, 0, 3, 11, 9, 11, 8, 6, 9, 7, + 10, 7, 6, 8, 2, 2, 9, 4, 5, 3, + 0, 4, 1, 3, 0, 3, 6, 0, 2, 10, + 0, 2, 0, 2, 0, 3, 2, 4, 3, 0, + 2, 1, 0, 2, 3, 0, 2, 3, 0, 2, + 1, 0, 3, 2, 4, 3, 0, 1, 0, 1, + 1, 0, 6, 0, 3, 5, 0, 4, 0, 3, + 1, 3, 4, 5, 0, 3, 1, 3, 2, 3, + 1, 2, 0, 4, 6, 5, 0, 2, 0, 2, + 4, 5, 4, 5, 1, 5, 6, 5, 0, 3, + 0, 1, 1, 3, 3, 3, 0, 4, 1, 3, + 3, 3, 0, 1, 1, 3, 2, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 3, 5, 2, 2, 2, - 2, 4, 1, 1, 2, 5, 6, 8, 6, 6, - 6, 1, 1, 1, 1, 1, 1, 3, 9, 1, - 4, 4, 4, 5, 7, 9, 5, 7, 9, 5, - 5, 7, 7, 9, 7, 7, 7, 9, 7, 7, - 0, 2, 0, 1, 1, 2, 4, 1, 2, 2, - 1, 2, 2, 1, 2, 2, 2, 2, 2, 0, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 1, 1, 1, 2, 5, 0, 1, 3, 0, 1, - 0, 2, 0, 2, 0, 1, 6, 8, 8, 6, - 6, 5, 5, 5, 6, 6, 6, 6, 5, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 1, 1, 1, 4, 4, 6, 8, 6, 4, 5, - 4, 4, 4, 3, 4, 6, 6, 7, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 5, 4, 1, 3, 3, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, + 4, 0, 5, 5, 5, 5, 6, 0, 1, 1, + 3, 1, 1, 1, 1, 1, 7, 9, 7, 9, + 2, 1, 7, 9, 7, 9, 8, 5, 0, 1, + 0, 1, 1, 1, 1, 3, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 3, 1, 3, 5, 1, 1, 1, 1, 1, 1, + 3, 5, 0, 1, 1, 2, 1, 2, 2, 1, + 1, 2, 2, 2, 3, 3, 2, 2, 1, 5, + 6, 4, 1, 1, 1, 5, 4, 1, 1, 2, + 0, 1, 1, 2, 5, 0, 1, 1, 2, 2, + 3, 3, 1, 1, 2, 2, 2, 0, 1, 2, + 2, 2, 0, 4, 7, 3, 3, 0, 3, 0, + 3, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 3, 5, 2, 2, 2, 2, + 4, 1, 1, 2, 5, 6, 8, 6, 6, 6, + 1, 1, 1, 1, 1, 1, 3, 9, 1, 4, + 4, 4, 5, 7, 9, 5, 7, 9, 5, 5, + 7, 7, 9, 7, 7, 7, 9, 7, 7, 0, + 2, 0, 1, 1, 2, 4, 1, 2, 2, 1, + 2, 2, 1, 2, 2, 2, 2, 2, 0, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, + 1, 1, 2, 5, 0, 1, 3, 0, 1, 0, + 2, 0, 2, 0, 1, 6, 8, 8, 6, 6, + 5, 5, 5, 6, 6, 6, 6, 5, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, + 1, 1, 4, 4, 6, 8, 6, 4, 5, 4, + 4, 4, 3, 4, 6, 6, 7, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 8, 4, 2, 3, - 2, 4, 2, 2, 4, 6, 2, 2, 4, 6, - 4, 2, 4, 4, 4, 0, 1, 2, 3, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 8, 4, 2, 3, 2, + 4, 2, 2, 4, 6, 2, 2, 4, 6, 4, + 2, 4, 4, 4, 0, 1, 2, 3, 1, 1, + 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 0, 1, 1, 3, 0, 1, 1, 3, - 1, 3, 3, 3, 3, 3, 2, 1, 1, 1, - 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, - 1, 3, 4, 4, 5, 4, 5, 3, 4, 5, - 6, 1, 0, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 3, 0, 1, 1, 3, 0, 1, 1, 3, 1, + 3, 3, 3, 3, 3, 2, 1, 1, 1, 3, + 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, + 3, 4, 4, 5, 4, 5, 3, 4, 5, 6, + 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 4, 4, 1, 2, 3, 5, 1, 1, 3, - 0, 1, 0, 3, 0, 3, 3, 0, 3, 5, - 0, 3, 5, 0, 1, 1, 0, 1, 1, 2, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 4, 4, 1, 2, 3, 5, 1, 1, 3, 0, + 1, 0, 3, 0, 3, 3, 0, 3, 5, 0, + 3, 5, 0, 1, 1, 0, 1, 1, 2, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -9895,7 +9892,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, + 1, 1, 1, 1, } var yyChk = [...]int{ @@ -9997,58 +9994,57 @@ var yyChk = [...]int{ -633, 6, 7, 8, 9, -634, 158, -623, 460, 576, 92, 321, 377, 17, 522, 672, 563, 672, 563, 335, 168, 165, -458, 168, 117, 174, 173, 250, 168, -458, - -385, 171, 672, 170, 669, 566, 331, -434, -190, 377, - 441, 350, 98, 277, -438, -435, 561, -523, 325, 321, - 297, 247, 114, -191, 257, 256, 112, 522, 245, 415, - 316, 57, 59, -594, -595, 234, 235, 236, -586, 555, - -585, -385, 672, 503, 566, 677, 498, 390, 100, 101, - 669, 670, 28, 246, 401, 273, 496, 494, 495, 499, - 500, 501, 502, -71, -539, -521, 491, 490, -398, 483, - 489, 481, 493, 484, 378, 352, 580, 351, 237, 663, - 562, 556, -373, 425, 461, 519, 520, 402, 462, 506, - 508, 485, 111, 198, 195, 247, 249, 246, 669, 566, - 277, 377, 522, 441, 98, 350, 246, -594, 677, 165, - 506, 508, 460, 277, 439, 42, -464, 451, -463, -465, - 507, 518, 90, 91, 505, -373, 111, 482, 482, -632, - -346, -205, -207, -130, -584, 563, 672, 566, 247, 377, - 441, 277, 248, 246, 558, 561, 249, 522, 245, 328, - 401, 273, 350, 98, 170, 669, -211, -212, -213, 230, - 231, 232, 70, 235, 233, 67, 33, 34, 35, -1, - 125, 687, -412, -412, -6, 690, -6, -412, -385, -385, - 160, -279, -283, -280, -282, -281, -285, -284, 195, 196, - 156, 199, 205, 201, 202, 203, 204, 206, 207, 208, - 209, 210, 213, 214, 211, 32, 212, 263, 191, 192, - 193, 194, 215, 177, 197, 573, 223, 178, 224, 179, - 225, 180, 226, 181, 182, 227, 183, 186, 187, 188, - 189, 185, 159, -246, 92, 33, 86, 159, 92, -237, - 269, -217, -272, -264, 159, 688, -237, -632, -227, -228, - 11, -272, -361, -385, 460, 128, -106, 78, -106, 459, - 78, -106, 459, 241, -587, -588, -589, -591, 241, 459, - 458, 242, -125, 159, 285, 17, -392, -392, -385, 84, - -272, -446, 277, -471, -444, 37, 83, 160, 250, 160, - 83, 86, 402, 377, 441, 403, 522, 246, 415, 249, - 277, 416, 377, 441, 246, 249, 522, 277, 377, 246, - 249, 441, 277, 416, 377, 481, 482, 249, 28, 407, - 410, 411, 482, -543, 518, 160, 117, 114, 115, 116, - -412, 135, -427, 128, 129, 130, 131, 132, 133, 134, - 142, 141, 152, 145, 146, 147, 148, 149, 150, 151, - 143, 144, 138, 118, 136, 140, 137, 120, 155, -207, - -412, -420, 62, -410, -410, -410, -410, -385, -503, -417, - -412, 86, 86, 86, 86, 86, 159, 105, 92, -412, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, -536, 86, 86, -424, -425, 86, 86, -405, - -361, 86, 92, 92, 86, 86, 86, 92, 86, 86, - 86, -425, -425, 86, 86, 86, 86, 86, 86, 86, + -385, 171, 672, 170, 669, 566, 331, -434, 377, 441, + 350, 98, 277, -438, -435, 561, -523, 325, 321, 297, + 247, 114, 257, 256, 112, 522, 245, 415, -594, -595, + 234, 235, 236, -586, 555, -585, -385, 672, 503, 566, + 677, 498, 390, 100, 101, 669, 670, 28, 246, 401, + 273, 496, 494, 495, 499, 500, 501, 502, -71, -539, + -521, 491, 490, -398, 483, 489, 481, 493, 484, 378, + 352, 580, 351, 237, 663, 562, 556, -373, 425, 461, + 519, 520, 402, 462, 506, 508, 485, 111, 198, 195, + 247, -190, 246, 669, 566, 277, 377, 522, 441, 98, + 350, 246, -594, 677, 165, 506, 508, 460, 277, 439, + 42, -464, 451, -463, -465, 507, 518, 90, 91, 505, + -373, 111, 482, 482, -632, -346, -205, -207, -130, -584, + 563, 672, 566, 247, 377, 441, 277, 248, 246, 558, + 561, 249, 522, 245, 328, 401, 273, 350, 98, 170, + 669, -211, -212, -213, 230, 231, 232, 70, 235, 233, + 67, 33, 34, 35, -1, 125, 687, -412, -412, -6, + 690, -6, -412, -385, -385, 160, -279, -283, -280, -282, + -281, -285, -284, 195, 196, 156, 199, 205, 201, 202, + 203, 204, 206, 207, 208, 209, 210, 213, 214, 211, + 32, 212, 263, 191, 192, 193, 194, 215, 177, 197, + 573, 223, 178, 224, 179, 225, 180, 226, 181, 182, + 227, 183, 186, 187, 188, 189, 185, 159, -246, 92, + 33, 86, 159, 92, -237, 269, -217, -272, -264, 159, + 688, -237, -632, -227, -228, 11, -272, -361, -385, 460, + 128, -106, 78, -106, 459, 78, -106, 459, 241, -587, + -588, -589, -591, 241, 459, 458, 242, -125, 159, 285, + 17, -392, -392, -385, 84, -272, -446, 277, -471, -444, + 37, 83, 160, 250, 160, 83, 86, 402, 377, 441, + 403, 522, 246, 415, 249, 277, 416, 377, 441, 246, + 249, 522, 277, 377, 246, 249, 441, 277, 416, 377, + 481, 482, 249, 28, 407, 410, 411, 482, -543, 518, + 160, 117, 114, 115, 116, -412, 135, -427, 128, 129, + 130, 131, 132, 133, 134, 142, 141, 152, 145, 146, + 147, 148, 149, 150, 151, 143, 144, 138, 118, 136, + 140, 137, 120, 155, -207, -412, -420, 62, -410, -410, + -410, -410, -385, -503, -417, -412, 86, 86, 86, 86, + 86, 159, 105, 92, -412, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, -536, 86, 86, + -424, -425, 86, 86, -405, -361, 86, 92, 92, 86, + 86, 86, 92, 86, 86, 86, -425, -425, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, -228, 160, -227, 86, -227, -228, - -208, -207, 33, 34, 33, 34, 33, 34, 33, 34, - -635, 660, 86, 102, 683, 228, 17, -385, 669, -385, - -617, 33, 566, 566, 566, 566, 237, 16, 339, 55, - 340, 511, 575, 172, 173, 174, -385, 171, 250, -385, - -432, 252, -432, -432, -432, -256, -385, 273, 401, 249, - 558, 249, -191, -432, -432, -432, -432, -432, 248, -432, - 24, 246, 246, 246, 246, -432, 529, 128, 128, 60, + 86, 86, 86, 86, 86, 86, 86, 86, 86, -228, + 160, -227, 86, -227, -228, -208, -207, 33, 34, 33, + 34, 33, 34, 33, 34, -635, 660, 86, 102, 683, + 228, 17, -385, 669, -385, -617, 33, 566, 566, 566, + 566, 237, 16, 339, 55, 340, 511, 575, 172, 173, + 174, -385, 171, 250, -385, -432, 252, -432, -432, -432, + -256, -385, 273, 401, -190, 558, -432, -432, -432, -432, + -432, 248, -432, 24, 246, 246, 246, 246, -432, 529, -596, 176, 160, -586, -236, 86, -617, 504, 678, 679, 680, 83, -397, 136, 140, -397, -342, 18, -342, 24, 24, 275, 275, 275, -397, 315, -643, -644, 17, 138, @@ -10056,252 +10052,252 @@ var yyChk = [...]int{ 275, -229, -230, 22, -229, 486, 482, -488, 487, 488, -399, -644, -398, -397, -397, -398, -397, -397, -397, 33, 246, 249, 522, 350, 664, -643, -643, 32, 32, -522, - -522, -272, -522, -385, 252, -447, -522, 556, -374, -385, - -522, -522, -522, -326, -327, -272, -597, 251, 680, -629, - -628, 509, -631, 511, 165, -465, 165, -465, 89, -446, - 277, 277, 160, 128, 24, -466, 128, 139, -465, -465, - -466, -466, -296, 42, -384, 156, -385, 92, -296, 42, - -626, -625, -272, -228, -208, -207, 87, 87, 87, 566, - -617, -522, -522, -522, -522, -522, -522, -523, -522, -522, - -522, -522, -522, -392, -247, -385, -258, 252, -522, -522, - -522, -522, -209, -210, 147, -412, -385, -213, -3, -161, - -160, 122, 123, 125, 654, 396, 653, 657, 651, -465, - 42, -516, 423, 422, -510, -512, 86, -511, 86, -511, - -511, -511, -511, -511, 86, 86, -513, 86, -513, -513, - -510, -514, 86, -514, -515, 86, -515, -514, -385, -492, - 575, -418, -420, -385, 40, -532, 62, -204, 86, 32, - 86, -237, -385, 192, 170, 668, 36, -533, 62, -204, - 86, 32, -228, -154, 40, -230, 21, 159, 102, 92, - -125, -106, 78, -125, -106, -106, 87, 160, -590, 108, - 109, -592, 210, 201, -385, -123, 92, -557, -7, -11, - -8, -9, -10, -52, -91, -204, 564, 567, -560, -558, - 86, 33, 450, 83, 17, -472, 246, 522, 401, 273, - 249, 377, -470, -453, -450, -448, -384, -446, -449, -448, - -475, -361, 482, -155, 465, 464, 327, -412, -412, -412, - -412, -412, 107, 118, 368, 108, 109, -407, -428, 33, - 323, 324, -408, -408, -408, -408, -408, -408, -408, -408, - -408, -408, -408, -408, -416, -426, -503, 86, 138, 136, - 140, 137, 120, -410, -410, -408, -408, -298, -384, 156, - 87, 160, -412, -583, -582, 122, -412, -412, -412, -412, - -439, -441, -361, 86, -385, -580, -581, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 392, 387, - 393, 391, 380, 399, 394, 395, 194, 553, 554, 547, - 548, 549, 550, 551, 552, -418, -418, -412, -580, -418, - -354, 34, 33, -420, -420, -420, 87, -412, -593, 366, - 365, 367, -232, -385, -418, 87, 87, 87, 102, -420, - -420, -418, -408, -418, -418, -418, -418, -581, -354, -354, - -354, -354, 147, -420, -420, -354, -354, -354, -354, 147, - -354, -354, -354, -354, -354, -354, -354, -354, -354, -354, - -354, 87, 87, 87, -412, -412, -412, -412, -412, 147, - -420, -229, -153, -541, -540, -412, 42, -154, -230, -636, - 661, 86, -361, -624, 92, 92, 688, 170, 669, 17, - 522, -385, 17, 246, -385, 102, -385, 102, 246, 522, - 246, 522, -272, -272, -272, 512, 513, 169, 173, 172, - -385, 171, -385, -385, 118, -385, -385, -385, 36, -258, - -247, -432, -432, -432, -601, -385, 93, -454, -451, -448, - -385, -385, -444, -385, -374, -272, -432, -432, -432, -432, - -272, -307, 54, 55, 56, -448, -192, 57, 58, -597, - -585, 36, -235, -385, -140, 24, 277, -342, -410, -410, - -412, 377, 522, 246, -448, 277, -643, -397, -397, -375, - -374, -399, -394, -399, -399, -342, -395, -397, -397, -412, - -399, -395, -342, -385, 482, -342, -342, -488, -397, -396, - -385, -396, -432, -374, -375, -375, -272, -272, -321, -328, - -322, -329, 269, 243, 385, 386, 240, 238, 11, 239, - -336, 316, -433, 530, -302, -303, 78, 43, -305, 267, - 427, 420, 279, 283, 96, 284, 460, 285, 248, 287, - 288, 289, 304, 306, 259, 290, 291, 292, 451, 293, - 164, 305, 294, 295, 296, 403, -297, 6, 353, 42, - 52, 53, 474, 473, 578, 575, 280, -385, 430, 567, - 32, 37, 240, 243, 239, -601, -599, 32, -385, 32, - -454, -448, -385, -385, 160, 250, -220, -222, -219, -215, - -216, -221, -345, -347, -218, 86, -272, -207, -385, -465, - 160, 510, 512, 513, -629, -466, -629, -466, 250, 33, - 450, -469, 450, 33, -444, -463, 506, 508, -459, 92, - 451, -449, -468, 83, 156, -540, -466, -466, -468, -468, - 155, 160, -627, 511, 512, 234, -229, 102, -385, -274, - -272, -601, -453, -444, -385, -522, -274, -274, -274, -387, - -387, 86, 159, 37, -385, -385, -385, -385, -341, 160, - -340, 17, -386, -385, 36, 92, 159, -162, -160, 124, - -412, -6, 653, -412, -6, -6, -412, -6, -412, -520, - 424, 102, 102, -364, 92, -364, 102, 102, 102, 581, - 87, 92, -457, 83, -534, -421, -578, 642, -239, 87, - -232, -576, -577, -232, -238, -385, -532, -264, 128, 128, - 128, 25, -534, -239, 87, -576, -229, 643, -231, 21, - -226, -225, -412, -385, 24, -125, -106, -588, 159, 160, - -235, -472, -452, -449, -474, 147, -385, -460, 160, 575, - 691, 90, 250, -614, -613, 442, 87, 160, -544, 251, - 529, 92, 688, 458, 228, 229, 107, 368, 108, 109, - -503, -420, -416, -410, -410, -408, -408, -414, 264, -414, - 117, -412, 689, -411, -582, 124, -412, 36, 160, 36, - 160, 84, 160, 87, -510, -412, 159, 87, 87, 17, - 17, 87, -412, 87, 87, 87, 87, 17, 17, -412, - 87, 159, 87, 87, 87, 87, 84, 87, 160, 87, - 87, 87, 87, 160, -420, -420, -412, -420, 87, 87, - 87, -412, -412, -412, -420, 87, -412, -412, -412, -412, - -412, -412, -412, -412, -412, -412, -235, -482, 477, -482, - -482, 87, 160, 87, 160, 87, 87, 160, 160, 160, - 160, 87, -231, 86, 102, 160, 684, -368, -367, 92, - -385, -385, 170, 669, -385, 92, 669, -385, 92, -272, - -374, -272, -374, 572, 40, 40, 170, 174, 174, 173, - -385, 92, 37, 24, 24, 314, -135, 568, -257, 86, - 86, -272, -272, -272, -603, 428, -615, 160, 42, -613, - 522, -188, 327, -436, 84, -195, 334, 17, 575, -272, - -272, -272, -272, -286, 36, 17, -214, -273, -385, 86, - 87, 160, -142, 22, -385, -447, -385, -385, -385, -445, - 84, -385, -375, -342, -342, -399, -342, -342, 160, 23, - -397, -399, -399, -264, -395, -264, 159, -264, -374, -509, - 36, -236, 160, 21, 269, -271, -382, -268, -270, 254, - -402, -269, 257, -572, 255, 253, 112, 258, 312, 113, - 248, -382, -382, 254, -306, 250, 36, -382, -324, 248, - 371, 312, 255, 21, 269, -323, 248, 113, -385, 254, - 258, 255, 253, -381, 128, -373, 155, 250, 44, 403, - -381, 579, 269, -381, -381, -381, -381, -381, -381, -381, - 286, 286, -381, -381, -381, -381, -381, -381, -381, -381, - -381, -381, -381, 165, -381, -381, -381, -381, -381, -381, - 86, 281, 282, 314, 568, 122, 581, 570, -447, 250, - 497, 497, -604, 428, 32, 383, 383, 384, -615, 379, - 43, 32, -196, 377, -327, -325, -396, 32, -348, -349, - -350, -351, -353, -352, 69, 73, 75, 79, 70, 71, - 72, 76, 81, 74, 32, 160, -383, -388, 36, -385, - 92, -383, -207, -222, -220, -383, 86, -466, -628, -630, - 514, 511, 517, -468, -468, 102, 250, 86, 128, -468, - -468, 42, -384, -625, 518, 512, -231, 160, 83, -274, - -248, -249, -250, -251, -279, -361, 196, 199, 201, 202, - 203, 204, 206, 207, 208, 209, 210, 213, 214, 211, - 212, 263, 191, 192, 193, 194, 215, 177, 197, 573, - 178, 179, 180, 181, 182, 183, 186, 187, 188, 189, - 185, -385, -258, -254, 671, -342, -210, -222, -385, 92, - -385, 147, 125, -6, 123, -166, -165, -164, 126, 651, - 657, 125, 125, 125, 87, 87, 87, 160, 87, 87, - 87, 160, 87, 160, 102, -547, 487, 41, 160, 86, - 87, 160, 62, 160, 128, 87, 160, -412, -385, 92, - -412, 192, 87, 62, -231, 92, -154, 623, 160, -223, - 38, 39, 159, 460, -385, -558, 87, -474, 160, 250, - 159, 159, -450, 406, -384, -452, 21, 575, -361, 40, - -368, 128, 688, -385, 87, -414, -414, 117, -410, -407, - 87, 125, -412, 123, -277, -279, 422, 423, -412, -277, - -278, -284, 156, 195, 263, 194, 193, 191, 422, 423, - -296, -441, 572, -223, 87, -385, -412, -412, 87, -412, - -412, 17, -385, -296, -408, -412, -228, -228, 87, 87, - -481, -482, -481, -481, 87, 87, 87, 87, -481, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 86, -482, -412, -482, -412, -482, -482, -412, 102, 104, - 102, 104, -540, -154, -637, 64, 659, 63, 450, 107, - 317, 160, 102, 92, 689, 160, 128, 92, -385, -385, - 17, 246, -385, 17, 17, 17, -272, -272, -272, 174, - 92, -616, 321, 377, 522, 246, 377, 321, 522, 246, - -493, 102, -136, 122, 92, 414, -259, -260, -261, -262, - -263, 138, 161, 162, -248, -236, 86, -236, -606, 489, - 430, 440, -381, -404, -403, 379, 43, -527, 451, 436, - 437, -451, 277, -374, -612, 99, 128, 83, 357, 361, - 363, 362, 358, 359, 360, -430, -431, -429, -433, -374, - -599, 86, 86, -204, 36, 136, -195, 334, 86, 86, - 36, -504, 347, -279, -272, -214, -385, 17, 160, -598, - 159, -1, -385, 102, -385, -444, -397, -342, -412, -412, - -342, -397, -397, -399, -385, -264, -504, -279, 36, -322, - 243, 239, -478, 314, 315, -479, -494, 317, -496, 86, - -276, -361, -269, -571, -572, -432, -385, 113, -571, 113, - 86, -276, -361, -361, -325, -361, -385, -385, -385, -385, - -332, -331, -361, -334, 33, -335, -385, -385, -385, -385, - 113, -385, 113, -301, 42, 49, 50, 51, -381, -381, - 198, -304, 42, 450, 452, 453, -334, 102, 102, 102, - 102, 92, 92, 92, -381, -381, 102, 92, -388, 92, - -573, 173, 46, 47, 102, 102, 102, 102, 42, 92, - -309, 42, 297, 301, 298, 299, 300, 92, 102, 42, - 102, 42, 102, 42, -385, 86, -574, -575, 92, -493, - 92, 86, 102, 92, 240, -447, 92, 83, -606, -381, - 383, -465, 128, 128, -404, -608, 96, 431, -608, -611, - 327, -198, 522, 33, -240, 243, 239, -599, -456, -455, - -361, -219, -219, -219, -219, -219, -219, 69, 80, 69, - -233, 86, 69, 74, 69, 74, 69, -350, 69, 80, - -456, -221, -236, -388, 87, -622, -621, -620, -618, 77, - 251, 78, -418, -468, 511, 515, 516, -452, -400, 92, - -459, -154, -272, -272, -525, 307, 308, 87, 160, -279, - -344, 19, 159, 121, -6, -162, -164, -412, -6, -412, - 653, 396, 654, 92, 102, 102, -555, 471, 466, 468, - 113, -421, -542, -541, 62, -204, -232, -534, -577, -540, - -385, 689, 689, 689, 689, 92, 62, -204, -534, -154, - -547, 575, -225, -224, 45, -385, 102, 17, -449, -444, - 147, 147, -385, 407, -460, 92, 429, 92, 246, 689, - 92, -368, -407, -412, 87, -287, 182, 181, -287, 36, - 87, 87, -511, -511, -510, -513, -510, -287, -287, 87, - 86, -223, 87, 24, 87, 87, 87, -412, 87, 87, - 160, -530, 531, -531, 608, -481, -481, -481, -481, -481, + 249, -191, 316, 57, 59, -272, -522, -385, 252, -447, + -522, 556, -374, -385, -522, -522, -522, -326, -327, -272, + -597, 251, 680, -629, -628, 509, -631, 511, 165, -465, + 165, -465, 89, -446, 277, 277, 160, 128, 24, -466, + 128, 139, -465, -465, -466, -466, -296, 42, -384, 156, + -385, 92, -296, 42, -626, -625, -272, -228, -208, -207, + 87, 87, 87, 566, -617, -522, -522, -522, -522, -522, + -522, -523, -522, -522, -522, -522, -522, -392, -247, -385, + -258, 252, -522, -522, -522, -522, -209, -210, 147, -412, + -385, -213, -3, -161, -160, 122, 123, 125, 654, 396, + 653, 657, 651, -465, 42, -516, 423, 422, -510, -512, + 86, -511, 86, -511, -511, -511, -511, -511, 86, 86, + -513, 86, -513, -513, -510, -514, 86, -514, -515, 86, + -515, -514, -385, -492, 575, -418, -420, -385, 40, -532, + 62, -204, 86, 32, 86, -237, -385, 192, 170, 668, + 36, -533, 62, -204, 86, 32, -228, -154, 40, -230, + 21, 159, 102, 92, -125, -106, 78, -125, -106, -106, + 87, 160, -590, 108, 109, -592, 210, 201, -385, -123, + 92, -557, -7, -11, -8, -9, -10, -52, -91, -204, + 564, 567, -560, -558, 86, 33, 450, 83, 17, -472, + 246, 522, 401, 273, 249, 377, -470, -453, -450, -448, + -384, -446, -449, -448, -475, -361, 482, -155, 465, 464, + 327, -412, -412, -412, -412, -412, 107, 118, 368, 108, + 109, -407, -428, 33, 323, 324, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -416, -426, + -503, 86, 138, 136, 140, 137, 120, -410, -410, -408, + -408, -298, -384, 156, 87, 160, -412, -583, -582, 122, + -412, -412, -412, -412, -439, -441, -361, 86, -385, -580, + -581, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 392, 387, 393, 391, 380, 399, 394, 395, + 194, 553, 554, 547, 548, 549, 550, 551, 552, -418, + -418, -412, -580, -418, -354, 34, 33, -420, -420, -420, + 87, -412, -593, 366, 365, 367, -232, -385, -418, 87, + 87, 87, 102, -420, -420, -418, -408, -418, -418, -418, + -418, -581, -354, -354, -354, -354, 147, -420, -420, -354, + -354, -354, -354, 147, -354, -354, -354, -354, -354, -354, + -354, -354, -354, -354, -354, 87, 87, 87, -412, -412, + -412, -412, -412, 147, -420, -229, -153, -541, -540, -412, + 42, -154, -230, -636, 661, 86, -361, -624, 92, 92, + 688, 170, 669, 17, 522, -385, 17, 246, -385, 102, + -385, 102, 246, 522, 246, 522, -272, -272, -272, 512, + 513, 169, 173, 172, -385, 171, -385, -385, 118, -385, + -385, -385, 36, -258, -247, 249, -432, -601, -385, 93, + -454, -451, -448, -385, -385, -444, -385, -374, -272, -432, + -432, -432, -432, -272, -597, -585, 36, -235, -385, -140, + 24, 277, -342, -410, -410, -412, 377, 522, 246, -448, + 277, -643, -397, -397, -375, -374, -399, -394, -399, -399, + -342, -395, -397, -397, -412, -399, -395, -342, -385, 482, + -342, -342, -488, -397, -396, -385, -396, -432, -374, -375, + -375, -272, -522, 128, 128, 60, -321, -328, -322, -329, + 269, 243, 385, 386, 240, 238, 11, 239, -336, 316, + -433, 530, -302, -303, 78, 43, -305, 267, 427, 420, + 279, 283, 96, 284, 460, 285, 248, 287, 288, 289, + 304, 306, 259, 290, 291, 292, 451, 293, 164, 305, + 294, 295, 296, 403, -297, 6, 353, 42, 52, 53, + 474, 473, 578, 575, 280, -385, 430, 567, 32, 37, + 240, 243, 239, -601, -599, 32, -385, 32, -454, -448, + -385, -385, 160, 250, -220, -222, -219, -215, -216, -221, + -345, -347, -218, 86, -272, -207, -385, -465, 160, 510, + 512, 513, -629, -466, -629, -466, 250, 33, 450, -469, + 450, 33, -444, -463, 506, 508, -459, 92, 451, -449, + -468, 83, 156, -540, -466, -466, -468, -468, 155, 160, + -627, 511, 512, 234, -229, 102, -385, -274, -272, -601, + -453, -444, -385, -522, -274, -274, -274, -387, -387, 86, + 159, 37, -385, -385, -385, -385, -341, 160, -340, 17, + -386, -385, 36, 92, 159, -162, -160, 124, -412, -6, + 653, -412, -6, -6, -412, -6, -412, -520, 424, 102, + 102, -364, 92, -364, 102, 102, 102, 581, 87, 92, + -457, 83, -534, -421, -578, 642, -239, 87, -232, -576, + -577, -232, -238, -385, -532, -264, 128, 128, 128, 25, + -534, -239, 87, -576, -229, 643, -231, 21, -226, -225, + -412, -385, 24, -125, -106, -588, 159, 160, -235, -472, + -452, -449, -474, 147, -385, -460, 160, 575, 691, 90, + 250, -614, -613, 442, 87, 160, -544, 251, 529, 92, + 688, 458, 228, 229, 107, 368, 108, 109, -503, -420, + -416, -410, -410, -408, -408, -414, 264, -414, 117, -412, + 689, -411, -582, 124, -412, 36, 160, 36, 160, 84, + 160, 87, -510, -412, 159, 87, 87, 17, 17, 87, + -412, 87, 87, 87, 87, 17, 17, -412, 87, 159, + 87, 87, 87, 87, 84, 87, 160, 87, 87, 87, + 87, 160, -420, -420, -412, -420, 87, 87, 87, -412, + -412, -412, -420, 87, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -235, -482, 477, -482, -482, 87, + 160, 87, 160, 87, 87, 160, 160, 160, 160, 87, + -231, 86, 102, 160, 684, -368, -367, 92, -385, -385, + 170, 669, -385, 92, 669, -385, 92, -272, -374, -272, + -374, 572, 40, 40, 170, 174, 174, 173, -385, 92, + 37, 24, 24, 314, -135, 568, -257, 86, 86, -432, + -272, -603, 428, -615, 160, 42, -613, 522, -188, 327, + -436, 84, -195, 334, 17, 575, -272, -272, -272, -272, + -286, 36, 17, -214, -273, -385, 86, 87, 160, -142, + 22, -385, -447, -385, -385, -385, -445, 84, -385, -375, + -342, -342, -399, -342, -342, 160, 23, -397, -399, -399, + -264, -395, -264, 159, -264, -374, -509, 36, -272, -307, + 54, 55, 56, -448, -192, 57, 58, 160, 21, 269, + -271, -382, -268, -270, 254, -402, -269, 257, -572, 255, + 253, 112, 258, 312, 113, 248, -382, -382, 254, -306, + 250, 36, -382, -324, 248, 371, 312, 255, 21, 269, + -323, 248, 113, -385, 254, 258, 255, 253, -381, 128, + -373, 155, 250, 44, 403, -381, 579, 269, -381, -381, + -381, -381, -381, -381, -381, 286, 286, -381, -381, -381, + -381, -381, -381, -381, -381, -381, -381, -381, 165, -381, + -381, -381, -381, -381, -381, 86, 281, 282, 314, 568, + 122, 581, 570, -447, 250, 497, 497, -604, 428, 32, + 383, 383, 384, -615, 379, 43, 32, -196, 377, -327, + -325, -396, 32, -348, -349, -350, -351, -353, -352, 69, + 73, 75, 79, 70, 71, 72, 76, 81, 74, 32, + 160, -383, -388, 36, -385, 92, -383, -207, -222, -220, + -383, 86, -466, -628, -630, 514, 511, 517, -468, -468, + 102, 250, 86, 128, -468, -468, 42, -384, -625, 518, + 512, -231, 160, 83, -274, -248, -249, -250, -251, -279, + -361, 196, 199, 201, 202, 203, 204, 206, 207, 208, + 209, 210, 213, 214, 211, 212, 263, 191, 192, 193, + 194, 215, 177, 197, 573, 178, 179, 180, 181, 182, + 183, 186, 187, 188, 189, 185, -385, -258, -254, 671, + -342, -210, -222, -385, 92, -385, 147, 125, -6, 123, + -166, -165, -164, 126, 651, 657, 125, 125, 125, 87, + 87, 87, 160, 87, 87, 87, 160, 87, 160, 102, + -547, 487, 41, 160, 86, 87, 160, 62, 160, 128, + 87, 160, -412, -385, 92, -412, 192, 87, 62, -231, + 92, -154, 623, 160, -223, 38, 39, 159, 460, -385, + -558, 87, -474, 160, 250, 159, 159, -450, 406, -384, + -452, 21, 575, -361, 40, -368, 128, 688, -385, 87, + -414, -414, 117, -410, -407, 87, 125, -412, 123, -277, + -279, 422, 423, -412, -277, -278, -284, 156, 195, 263, + 194, 193, 191, 422, 423, -296, -441, 572, -223, 87, + -385, -412, -412, 87, -412, -412, 17, -385, -296, -408, + -412, -228, -228, 87, 87, -481, -482, -481, -481, 87, + 87, 87, 87, -481, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 86, -482, -412, -482, -412, + -482, -482, -412, 102, 104, 102, 104, -540, -154, -637, + 64, 659, 63, 450, 107, 317, 160, 102, 92, 689, + 160, 128, 92, -385, -385, 17, 246, -385, 17, 17, + 17, -272, -272, -272, 174, 92, -616, 321, 377, 522, + 246, 377, 321, 522, 246, -493, 102, -136, 122, 92, + 414, -259, -260, -261, -262, -263, 138, 161, 162, -248, + -272, 86, -606, 489, 430, 440, -381, -404, -403, 379, + 43, -527, 451, 436, 437, -451, 277, -374, -612, 99, + 128, 83, 357, 361, 363, 362, 358, 359, 360, -430, + -431, -429, -433, -374, -599, 86, 86, -204, 36, 136, + -195, 334, 86, 86, 36, -504, 347, -279, -272, -214, + -385, 17, 160, -598, 159, -1, -385, 102, -385, -444, + -397, -342, -412, -412, -342, -397, -397, -399, -385, -264, + -504, -279, -236, -322, 243, 239, -478, 314, 315, -479, + -494, 317, -496, 86, -276, -361, -269, -571, -572, -432, + -385, 113, -571, 113, 86, -276, -361, -361, -325, -361, + -385, -385, -385, -385, -332, -331, -361, -334, 33, -335, + -385, -385, -385, -385, 113, -385, 113, -301, 42, 49, + 50, 51, -381, -381, 198, -304, 42, 450, 452, 453, + -334, 102, 102, 102, 102, 92, 92, 92, -381, -381, + 102, 92, -388, 92, -573, 173, 46, 47, 102, 102, + 102, 102, 42, 92, -309, 42, 297, 301, 298, 299, + 300, 92, 102, 42, 102, 42, 102, 42, -385, 86, + -574, -575, 92, -493, 92, 86, 102, 92, 240, -447, + 92, 83, -606, -381, 383, -465, 128, 128, -404, -608, + 96, 431, -608, -611, 327, -198, 522, 33, -240, 243, + 239, -599, -456, -455, -361, -219, -219, -219, -219, -219, + -219, 69, 80, 69, -233, 86, 69, 74, 69, 74, + 69, -350, 69, 80, -456, -221, -236, -388, 87, -622, + -621, -620, -618, 77, 251, 78, -418, -468, 511, 515, + 516, -452, -400, 92, -459, -154, -272, -272, -525, 307, + 308, 87, 160, -279, -344, 19, 159, 121, -6, -162, + -164, -412, -6, -412, 653, 396, 654, 92, 102, 102, + -555, 471, 466, 468, 113, -421, -542, -541, 62, -204, + -232, -534, -577, -540, -385, 689, 689, 689, 689, 92, + 62, -204, -534, -154, -547, 575, -225, -224, 45, -385, + 102, 17, -449, -444, 147, 147, -385, 407, -460, 92, + 429, 92, 246, 689, 92, -368, -407, -412, 87, -287, + 182, 181, -287, 36, 87, 87, -511, -511, -510, -513, + -510, -287, -287, 87, 86, -223, 87, 24, 87, 87, + 87, -412, 87, 87, 160, -530, 531, -531, 608, -481, -481, -481, -481, -481, -481, -481, -481, -481, -481, -481, - -481, -481, -423, -422, 269, 87, 160, 87, 160, 87, - 472, 666, 666, 472, 666, 666, 87, 160, -580, 160, - -376, 322, -376, -367, 92, 250, 92, 170, -385, 92, - 669, -272, -374, -241, 488, -201, 122, -202, 120, 44, - 92, -385, -385, -385, 314, -385, 314, -385, -385, 92, - -141, 581, 86, -138, 569, 92, 87, 160, -361, 87, - 36, -265, -266, -267, -276, -268, -270, 36, -607, 96, - -602, 92, -385, 93, -608, 158, 381, 42, 432, 433, - 448, 376, 102, 102, 438, -600, -385, -197, 246, 377, - -610, 53, 128, 92, -272, -429, -373, 155, 288, -264, - 350, -339, -338, -385, 92, -265, -204, -272, -272, -265, - -265, -204, -505, 349, 21, 102, 146, -237, 84, 159, - -222, -273, -385, 147, 87, -342, -264, -342, -342, -397, - -505, -204, -490, 318, 86, -488, 86, -488, 113, 358, - -497, -495, 269, -330, 46, 48, -279, -569, -385, -567, - -569, -385, -567, -567, -432, -412, -330, -276, 250, 32, - 239, -333, 355, 356, 361, 363, -461, 313, 118, -461, - 160, -223, 160, -385, -296, -296, 32, 92, 92, -274, - 87, 160, 128, 92, -138, -137, -412, -204, -207, 250, - 83, 246, -607, -602, 128, -466, 92, 92, -608, 92, - 92, -612, 128, -275, 246, -374, 160, -240, -240, -342, - 160, 128, -243, -242, 83, 84, -244, 83, -242, -242, - 69, -234, 92, 69, 69, -342, -620, -619, 24, -572, - -572, -572, 87, 87, -245, 24, -250, 42, -343, 20, - 21, 147, 125, 123, 125, 125, -385, 87, 87, -517, - 644, -551, -553, 466, 21, 21, 15, 251, 87, -534, - 689, -534, -245, -555, 407, 46, 47, -444, -460, 451, - -272, 160, 689, -277, -315, 92, -412, 87, -412, 87, - 92, 87, 92, -228, 21, -482, -412, -482, -412, -482, - 87, 160, 87, 87, 87, 160, 87, 87, -412, 87, - -580, -377, 192, 92, -377, 377, -386, -385, 17, -385, - -200, 250, -264, -203, 345, 86, 341, -201, 170, 86, - 92, -385, -493, 314, -493, 314, 246, -385, -254, -139, - 570, 102, -137, 92, -437, 574, -261, -279, 244, -204, - 87, 160, -204, 92, -605, 442, 102, 42, 102, 158, - 434, -528, -189, 96, -274, 33, -240, -609, 96, 128, - 688, 86, -381, -381, -381, -200, -385, 87, 160, -381, - -381, 87, -200, 87, 87, -294, 575, -506, 268, 102, - 146, 102, 146, 102, -383, -222, -385, -342, -598, 159, - -342, -506, -480, 319, 102, -408, 86, -408, 86, -489, - 316, 86, 87, 160, -385, -361, -291, -290, -288, 107, - 118, 42, 420, -289, 96, 155, 302, 305, 304, 280, - 303, -320, -401, 83, 426, 355, 356, -433, 644, 560, - 253, 112, 113, 408, -402, 86, 86, 84, 322, 86, - 86, -569, 87, -330, -361, 42, -333, 42, 369, 313, - -331, -385, 155, -296, 87, -575, 92, 87, -447, 246, - -385, -605, 92, -468, -610, 92, -189, -274, -599, -228, - -455, -540, -412, 86, -412, 87, 86, 69, 11, 19, - 15, -405, -412, -420, 673, 675, 676, 252, -6, 654, - 396, -311, 645, 92, 21, 92, -549, 92, -456, -517, - -420, -157, -308, -373, 285, 87, -314, 138, 575, 87, - 87, -481, -481, -484, -483, -487, 472, 314, 480, -420, - 87, 87, 92, 92, 87, 87, 92, -385, 170, 92, - 377, -200, 36, 414, 22, 587, 346, -235, 342, 343, - 344, -385, 92, -420, -205, -207, 688, 92, -493, 92, - -493, -385, 314, 36, 92, 87, 92, 92, -252, -279, - -193, 575, -294, -267, -193, 21, 575, 380, 42, 102, - 42, 435, 92, -197, 128, 108, 109, -369, -370, 92, - -439, -296, -298, 92, -338, -405, -405, -292, -204, 36, - -293, -336, -433, -156, -155, -292, 86, -507, 164, 102, - 146, 102, 102, -342, -342, -507, -496, 21, 87, -475, - 87, -475, 86, 128, -408, -495, -498, 62, -288, 107, - -408, 92, -298, -299, 42, 301, 297, 128, 128, -300, - 42, 281, 282, -310, 86, 312, 15, 198, 86, 113, - 113, -272, -439, -439, -570, 357, 358, 359, 364, 361, - 362, 360, 363, -570, -439, -439, 86, -462, -461, -408, - -381, -381, 155, -385, 159, -609, -229, -235, -568, -385, - 253, 21, 21, -526, 575, 674, 86, 86, -385, -385, - -365, 646, 102, 92, 468, -311, -518, 647, -545, -488, - -296, 128, 87, 76, 573, 576, 87, -486, 120, 434, - 438, -406, -409, 102, 104, 190, 158, -482, -482, 87, - 87, -385, -385, -272, 92, 102, 87, 117, 117, 87, - 87, -372, -371, 92, -254, 92, -254, 92, 314, -493, - -2, 574, -194, 61, 518, 92, 93, 429, 92, 93, + -481, -481, -481, -481, -481, -481, -423, -422, 269, 87, + 160, 87, 160, 87, 472, 666, 666, 472, 666, 666, + 87, 160, -580, 160, -376, 322, -376, -367, 92, 250, + 92, 170, -385, 92, 669, -272, -374, -241, 488, -201, + 122, -202, 120, 44, 92, -385, -385, -385, 314, -385, + 314, -385, -385, 92, -141, 581, 86, -138, 569, 92, + 87, 160, -361, 87, -236, -265, -266, -267, -276, -268, + -270, -607, 96, -602, 92, -385, 93, -608, 158, 381, + 42, 432, 433, 448, 376, 102, 102, 438, -600, -385, + -197, 246, 377, -610, 53, 128, 92, -272, -429, -373, + 155, 288, -264, 350, -339, -338, -385, 92, -265, -204, + -272, -272, -265, -265, -204, -505, 349, 21, 102, 146, + -237, 84, 159, -222, -273, -385, 147, 87, -342, -264, + -342, -342, -397, -505, 36, -490, 318, 86, -488, 86, + -488, 113, 358, -497, -495, 269, -330, 46, 48, -279, + -569, -385, -567, -569, -385, -567, -567, -432, -412, -330, + -276, 250, 32, 239, -333, 355, 356, 361, 363, -461, + 313, 118, -461, 160, -223, 160, -385, -296, -296, 32, + 92, 92, -274, 87, 160, 128, 92, -138, -137, -412, + -204, -207, 250, 83, 246, -607, -602, 128, -466, 92, + 92, -608, 92, 92, -612, 128, -275, 246, -374, 160, + -240, -240, -342, 160, 128, -243, -242, 83, 84, -244, + 83, -242, -242, 69, -234, 92, 69, 69, -342, -620, + -619, 24, -572, -572, -572, 87, 87, -245, 24, -250, + 42, -343, 20, 21, 147, 125, 123, 125, 125, -385, + 87, 87, -517, 644, -551, -553, 466, 21, 21, 15, + 251, 87, -534, 689, -534, -245, -555, 407, 46, 47, + -444, -460, 451, -272, 160, 689, -277, -315, 92, -412, + 87, -412, 87, 92, 87, 92, -228, 21, -482, -412, + -482, -412, -482, 87, 160, 87, 87, 87, 160, 87, + 87, -412, 87, -580, -377, 192, 92, -377, 377, -386, + -385, 17, -385, -200, 250, -264, -203, 345, 86, 341, + -201, 170, 86, 92, -385, -493, 314, -493, 314, 246, + -385, -254, -139, 570, 102, -137, 92, -437, 574, -261, + -279, 244, 36, 87, 160, 92, -605, 442, 102, 42, + 102, 158, 434, -528, -189, 96, -274, 33, -240, -609, + 96, 128, 688, 86, -381, -381, -381, -200, -385, 87, + 160, -381, -381, 87, -200, 87, 87, -294, 575, -506, + 268, 102, 146, 102, 146, 102, -383, -222, -385, -342, + -598, 159, -342, -506, -204, -480, 319, 102, -408, 86, + -408, 86, -489, 316, 86, 87, 160, -385, -361, -291, + -290, -288, 107, 118, 42, 420, -289, 96, 155, 302, + 305, 304, 280, 303, -320, -401, 83, 426, 355, 356, + -433, 644, 560, 253, 112, 113, 408, -402, 86, 86, + 84, 322, 86, 86, -569, 87, -330, -361, 42, -333, + 42, 369, 313, -331, -385, 155, -296, 87, -575, 92, + 87, -447, 246, -385, -605, 92, -468, -610, 92, -189, + -274, -599, -228, -455, -540, -412, 86, -412, 87, 86, + 69, 11, 19, 15, -405, -412, -420, 673, 675, 676, + 252, -6, 654, 396, -311, 645, 92, 21, 92, -549, + 92, -456, -517, -420, -157, -308, -373, 285, 87, -314, + 138, 575, 87, 87, -481, -481, -484, -483, -487, 472, + 314, 480, -420, 87, 87, 92, 92, 87, 87, 92, + -385, 170, 92, 377, -200, 36, 414, 22, 587, 346, + -235, 342, 343, 344, -385, 92, -420, -205, -207, 688, + 92, -493, 92, -493, -385, 314, 36, 92, 87, 92, + 92, -252, -279, -204, -294, -267, 21, 575, 380, 42, + 102, 42, 435, 92, -197, 128, 108, 109, -369, -370, + 92, -439, -296, -298, 92, -338, -405, -405, -292, -204, + 36, -293, -336, -433, -156, -155, -292, 86, -507, 164, + 102, 146, 102, 102, -342, -342, -507, -496, 21, 87, + -475, 87, -475, 86, 128, -408, -495, -498, 62, -288, + 107, -408, 92, -298, -299, 42, 301, 297, 128, 128, + -300, 42, 281, 282, -310, 86, 312, 15, 198, 86, + 113, 113, -272, -439, -439, -570, 357, 358, 359, 364, + 361, 362, 360, 363, -570, -439, -439, 86, -462, -461, + -408, -381, -381, 155, -385, 159, -609, -229, -235, -568, + -385, 253, 21, 21, -526, 575, 674, 86, 86, -385, + -385, -365, 646, 102, 92, 468, -311, -518, 647, -545, + -488, -296, 128, 87, 76, 573, 576, 87, -486, 120, + 434, 438, -406, -409, 102, 104, 190, 158, -482, -482, + 87, 87, -385, -385, -272, 92, 102, 87, 117, 117, + 87, 87, -372, -371, 92, -254, 92, -254, 92, 314, + -493, -2, 574, -193, 575, 92, 93, 429, 92, 93, 380, -189, 92, 689, 160, 128, 87, -476, 269, -204, 160, -336, -373, -157, -476, -295, -337, -385, 92, -524, 173, 348, 575, 102, 146, 102, -228, -508, 173, 348, @@ -10312,32 +10308,32 @@ var yyChk = [...]int{ 21, -365, -519, 648, 92, -554, 471, -548, -546, 466, 467, 468, 469, 92, 574, 66, 577, -485, -486, 438, -406, -409, 642, 478, 478, 478, -385, 92, 689, 160, - 128, -254, -254, -493, 92, -255, -385, 312, 451, -370, - 92, -442, -477, 321, 21, -336, -381, -477, 87, 160, - -381, -381, 348, 102, 146, 102, -229, 348, -491, 320, - 87, -502, -336, -501, -500, 319, 272, 86, 87, -412, - -424, -381, 87, -313, -312, 571, -439, -442, 84, -442, - 84, -442, 84, -442, 84, 87, -296, -385, -385, 253, - -152, 86, 87, 87, -366, -385, -549, 92, -556, 251, - -552, -553, 470, -546, 21, 468, 21, 21, -158, 160, - 66, 117, 479, 479, 479, -201, -202, -201, -202, -371, - 92, 92, -254, -253, 36, 473, 407, -443, 259, 369, - 370, 96, 575, 355, 356, 374, 373, 372, 375, 21, - -478, -296, -337, -405, -405, 102, 102, 87, 160, -385, - 268, 86, -419, -413, -412, 268, 87, -385, -319, -317, - -318, 83, 485, 310, 311, 87, -570, -570, -570, -570, - -320, 87, 160, -418, 87, 160, -563, 86, 102, -551, - -550, -552, 21, -549, 21, -549, -549, 475, 575, -485, - -201, -201, -254, 92, -381, -381, 92, 92, 354, -381, - -381, -381, -381, -361, 86, -490, -500, -499, -419, 87, - 160, -461, -318, 83, -317, 83, 16, 15, -442, -442, - -442, -442, 86, 87, -385, -566, 32, 87, -562, -561, - -362, -557, -385, 471, 472, 92, -549, 128, 576, -640, - -639, 665, 102, 102, -385, 102, 102, 102, 92, -475, - -480, 87, -413, -316, 307, 308, 32, 173, -316, -418, - -565, -564, -363, 87, 160, 159, 92, 577, 92, 87, - -496, 107, 42, 309, 87, 160, 128, -561, -385, -564, - 42, -412, 159, -385, + 128, -254, -254, -493, 92, -255, -385, -194, 61, 518, + 451, -370, 92, -442, -477, 321, 21, -336, -381, -477, + 87, 160, -381, -381, 348, 102, 146, 102, -229, 348, + -491, 320, 87, -502, -336, -501, -500, 319, 272, 86, + 87, -412, -424, -381, 87, -313, -312, 571, -439, -442, + 84, -442, 84, -442, 84, -442, 84, 87, -296, -385, + -385, 253, -152, 86, 87, 87, -366, -385, -549, 92, + -556, 251, -552, -553, 470, -546, 21, 468, 21, 21, + -158, 160, 66, 117, 479, 479, 479, -201, -202, -201, + -202, -371, 92, 92, -254, -253, 36, 473, 312, -443, + 259, 369, 370, 96, 575, 355, 356, 374, 373, 372, + 375, 21, -478, -296, -337, -405, -405, 102, 102, 87, + 160, -385, 268, 86, -419, -413, -412, 268, 87, -385, + -319, -317, -318, 83, 485, 310, 311, 87, -570, -570, + -570, -570, -320, 87, 160, -418, 87, 160, -563, 86, + 102, -551, -550, -552, 21, -549, 21, -549, -549, 475, + 575, -485, -201, -201, -254, 92, 407, -381, -381, 92, + 92, 354, -381, -381, -381, -381, -361, 86, -490, -500, + -499, -419, 87, 160, -461, -318, 83, -317, 83, 16, + 15, -442, -442, -442, -442, 86, 87, -385, -566, 32, + 87, -562, -561, -362, -557, -385, 471, 472, 92, -549, + 128, 576, -640, -639, 665, 102, 102, -385, 102, 102, + 102, 92, -475, -480, 87, -413, -316, 307, 308, 32, + 173, -316, -418, -565, -564, -363, 87, 160, 159, 92, + 577, 92, 87, -496, 107, 42, 309, 87, 160, 128, + -561, -385, -564, 42, -412, 159, -385, } var yyDef = [...]int{ @@ -10361,425 +10357,424 @@ var yyDef = [...]int{ 1031, 1032, 1033, 1034, 1035, -2, 761, 0, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 417, 418, 419, 413, - 414, 416, 415, -2, 0, 0, 761, 0, 0, 0, + 414, 416, 415, -2, 1087, 0, 761, 0, 0, 0, 839, 0, 0, 0, 884, 902, 23, 0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, - 0, 19, 0, 19, 0, 0, 0, 1495, 1496, 1497, - 1498, 2321, 2291, -2, 2049, 2023, 2215, 2216, 2109, 2124, - 2016, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, - 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, - 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, - 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, - 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, - 2414, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, - 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, - 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, - 2012, 2013, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022, - 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, - 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, - 2044, 2045, 2046, 2047, 2048, 2050, 2051, 2052, 2053, 2054, - 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, - 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, - 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, - 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, - 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, - 2105, 2106, 2107, 2108, 2110, 2111, 2112, 2113, 2114, 2115, - 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2126, 2127, - 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, - 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, - 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, - 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, - 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, - 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, - 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, - 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, - 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2217, 2218, 2219, - 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, - 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, - 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, -2, 2249, - 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, - 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, - 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, - 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, - 2290, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, - 2301, 2302, 2303, 2304, 2305, 2306, -2, -2, -2, 2310, - 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, - 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, - 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, - 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, - 2352, 2353, 2354, 0, 315, 313, 1988, 2016, 2023, 2049, - 2109, 2124, 2125, 2163, 2215, 2216, 2248, 2291, 2307, 2308, - 2309, 2321, 0, 0, 1053, 0, 809, 0, 0, 814, - 1442, 809, 352, 750, 751, 839, 867, 708, 0, 391, - 0, 2039, 395, 2298, 0, 0, 0, 0, 705, 385, + 0, 19, 0, 19, 0, 0, 0, 1494, 1495, 1496, + 1497, 2320, 2290, -2, 2048, 2022, 2214, 2215, 2108, 2123, + 2015, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, + 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, + 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, + 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, + 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, + 2413, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, + 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, + 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, + 2011, 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020, 2021, + 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, + 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, + 2043, 2044, 2045, 2046, 2047, 2049, 2050, 2051, 2052, 2053, + 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, + 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, + 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, + 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, + 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, + 2104, 2105, 2106, 2107, 2109, 2110, 2111, 2112, 2113, 2114, + 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2125, 2126, + 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, + 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, + 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, + 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, + 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, + 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, + 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, + 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, + 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2216, 2217, 2218, + 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, + 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, + 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, -2, 2248, + 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, + 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, + 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, + 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, + 2289, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, + 2300, 2301, 2302, 2303, 2304, 2305, -2, -2, -2, 2309, + 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, + 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, + 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, + 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, + 2351, 2352, 2353, 0, 315, 313, 1987, 2015, 2022, 2048, + 2108, 2123, 2124, 2162, 2214, 2215, 2247, 2290, 2306, 2307, + 2308, 2320, 0, 0, 1053, 0, 809, 0, 0, 814, + 1441, 809, 352, 750, 751, 839, 867, 708, 0, 391, + 0, 2038, 395, 2297, 0, 0, 0, 0, 705, 385, 386, 387, 388, 389, 390, 0, 0, 1012, 0, 0, - 2354, 381, 0, 346, 2112, 2320, 1499, 0, 0, 0, - 0, 0, 202, 1179, 204, 1181, 208, 216, 0, 0, + 2353, 381, 0, 346, 2111, 2319, 1498, 0, 0, 0, + 0, 0, 202, 1178, 204, 1180, 208, 216, 0, 0, 0, 221, 222, 225, 226, 227, 228, 229, 0, 233, 0, 235, 238, 0, 240, 241, 0, 244, 245, 246, - 0, 256, 257, 258, 1182, 1183, 1184, 1185, 1186, 1187, - 1188, 1189, -2, 131, 1051, 1944, 1830, 0, 1837, 1850, - 1861, 1581, 1582, 1583, 1584, 0, 0, 0, 0, 0, - 0, 1592, 1593, 0, 1632, 2369, 2410, 2411, 0, 1601, - 1602, 1603, 1604, 1605, 1606, 0, 142, 154, 155, 1883, - 1884, 1885, 1886, 1887, 1888, 1889, 0, 1891, 1892, 1893, - 1801, 1568, 1495, 0, 2378, 0, 2400, 2405, 2406, 2407, - 2408, 2399, 0, 0, 1785, 0, 1775, 0, 0, -2, - -2, 0, 0, 2188, -2, 2412, 2413, 2414, 2375, 2396, - 2404, 2379, 2380, 2403, 2371, 2372, 2373, 2366, 2367, 2368, - 2370, 2382, 2384, 2395, 0, 2391, 2401, 2402, 2296, 0, - 0, 2343, 0, 0, 0, 2349, 2350, 2351, 2352, 2353, - 2338, 156, 157, -2, -2, -2, -2, -2, -2, -2, + 0, 256, 257, 258, 1181, 1182, 1183, 1184, 1185, 1186, + 1187, 1188, -2, 131, 1051, 1943, 1829, 0, 1836, 1849, + 1860, 1580, 1581, 1582, 1583, 0, 0, 0, 0, 0, + 0, 1591, 1592, 0, 1631, 2368, 2409, 2410, 0, 1600, + 1601, 1602, 1603, 1604, 1605, 0, 142, 154, 155, 1882, + 1883, 1884, 1885, 1886, 1887, 1888, 0, 1890, 1891, 1892, + 1800, 1567, 1494, 0, 2377, 0, 2399, 2404, 2405, 2406, + 2407, 2398, 0, 0, 1784, 0, 1774, 0, 0, -2, + -2, 0, 0, 2187, -2, 2411, 2412, 2413, 2374, 2395, + 2403, 2378, 2379, 2402, 2370, 2371, 2372, 2365, 2366, 2367, + 2369, 2381, 2383, 2394, 0, 2390, 2400, 2401, 2295, 0, + 0, 2342, 0, 0, 0, 2348, 2349, 2350, 2351, 2352, + 2337, 156, 157, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - 1796, -2, 1798, -2, 1800, -2, 1803, -2, -2, -2, - -2, 1808, 1809, -2, 1811, -2, -2, -2, -2, -2, - -2, -2, 1787, 1788, 1789, 1790, 1779, 1780, 1781, 1782, - 1783, 1784, -2, -2, -2, 867, 960, 0, 867, 0, + 1795, -2, 1797, -2, 1799, -2, 1802, -2, -2, -2, + -2, 1807, 1808, -2, 1810, -2, -2, -2, -2, -2, + -2, -2, 1786, 1787, 1788, 1789, 1778, 1779, 1780, 1781, + 1782, 1783, -2, -2, -2, 867, 960, 0, 867, 0, 840, 889, 892, 895, 898, 843, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, 342, 330, 332, 0, 336, 0, 0, 332, 329, - 323, 0, 1226, 1226, 1226, 1226, 0, 0, 0, 1226, - 1226, 1226, 1226, 1226, 0, 1226, 0, 0, 0, 0, - 0, 1226, 0, 1088, 1191, 1192, 1193, 1224, 1225, 1328, - 0, 0, 0, 766, 762, 763, 764, 765, 853, 0, - 855, 858, 0, 613, 0, 0, 0, 685, 685, 927, - 927, 0, 631, 0, 0, 0, 685, 0, 645, 637, - 0, 0, 0, 685, 0, 0, 860, 860, 0, 688, - 695, 685, 685, -2, 685, 685, 682, 685, 0, 0, - 1240, 651, 652, 653, 637, 637, 656, 657, 658, 668, - 669, 696, 1968, 0, 0, 549, 549, 0, 549, 0, - 0, 549, 0, 549, 549, 549, 0, 768, 2065, 2158, - 2046, 2130, 1998, 2112, 2320, 0, 288, 2188, 293, 0, - 2048, 2068, 0, 0, 2087, 0, -2, 0, 368, 867, - 0, 0, 839, 0, 0, 0, 0, 549, 549, 549, - 549, 549, 549, 1327, 549, 549, 549, 549, 549, 0, - 0, 0, 549, 549, 549, 549, 0, 903, 904, 906, - 907, 908, 909, 910, 911, 912, 913, 914, 915, 5, - 6, 19, 0, 0, 0, 0, 0, 0, 110, 109, - 0, 1945, 1963, 1896, 1897, 1898, 1950, 1900, 1954, 1954, - 1954, 1954, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, - 1937, 1938, 1954, 1954, 0, 0, 1943, 1920, 1952, 1952, - 1952, 1950, 1947, 1901, 1902, 1903, 1904, 1905, 1906, 1907, - 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1957, 1957, 1960, - 1960, 1957, 0, 431, 429, 430, 1826, 0, 0, 0, - 0, 809, 813, 1440, 0, 0, 0, 867, -2, 0, - 0, 709, 392, 1500, 0, 0, 396, 0, 397, 0, - 0, 399, 0, 0, 0, 420, 0, 423, 407, 408, - 409, 410, 403, 0, 182, 0, 383, 384, 380, 0, - 0, 348, 0, 0, 0, 550, 0, 0, 0, 0, - 0, 0, 213, 209, 217, 220, 230, 237, 0, 249, - 251, 254, 210, 218, 223, 224, 231, 252, 211, 214, - 215, 219, 253, 255, 212, 232, 236, 250, 234, 239, - 242, 243, 248, 0, 183, 0, 0, 0, 0, 0, - 1836, 0, 0, 1869, 1870, 1871, 1872, 1873, 1874, 1875, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, - 1830, 0, 0, 1587, 1588, 1589, 1590, 0, 1594, 0, - 1633, 0, 0, 0, 0, 0, 0, 1890, 1894, 0, - 1826, 1826, 0, 1826, 1822, 0, 0, 0, 0, 0, - 0, 1826, 1758, 0, 0, 1760, 1776, 0, 0, 1762, - 1763, 0, 1766, 1767, 1826, 0, 1826, 1771, 1826, 1826, - 1826, 1754, 1755, 0, 1822, 1822, 1822, 1822, 0, 0, - 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, - 1822, 1822, 1822, 1822, 1822, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 860, 0, 868, 0, -2, 0, - 886, 888, 890, 891, 893, 894, 896, 897, 899, 900, - 845, 0, 0, 106, 0, 0, 0, 0, 0, 0, - 72, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 0, 339, 325, 2151, 0, 324, - 0, 0, 0, 0, 0, 0, 1050, 0, 0, 1226, - 1226, 1226, 1089, 0, 0, 0, 0, 0, 0, 0, - 0, 1226, 1226, 1226, 1226, 0, 1246, 0, 0, 0, + 323, 0, 1225, 1225, 1225, 1225, 0, 1087, 1225, 1225, + 1225, 1225, 1225, 0, 1225, 0, 0, 0, 0, 0, + 1225, 0, 1190, 1191, 1192, 1223, 1224, 1327, 766, 762, + 763, 764, 765, 853, 0, 855, 858, 0, 613, 0, + 0, 0, 685, 685, 927, 927, 0, 631, 0, 0, + 0, 685, 0, 645, 637, 0, 0, 0, 685, 0, + 0, 860, 860, 0, 688, 695, 685, 685, -2, 685, + 685, 682, 685, 0, 0, 1239, 651, 652, 653, 637, + 637, 656, 657, 658, 668, 669, 696, 1967, 0, 0, + 549, 0, 0, 549, 0, 0, 549, 0, 549, 549, + 549, 0, 768, 2064, 2157, 2045, 2129, 1997, 2111, 2319, + 0, 288, 2187, 293, 0, 2047, 2067, 0, 0, 2086, + 0, -2, 0, 368, 867, 0, 0, 839, 0, 0, + 0, 0, 549, 549, 549, 549, 549, 549, 1326, 549, + 549, 549, 549, 549, 0, 0, 0, 549, 549, 549, + 549, 0, 903, 904, 906, 907, 908, 909, 910, 911, + 912, 913, 914, 915, 5, 6, 19, 0, 0, 0, + 0, 0, 0, 110, 109, 0, 1944, 1962, 1895, 1896, + 1897, 1949, 1899, 1953, 1953, 1953, 1953, 1928, 1929, 1930, + 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1953, 1953, 0, + 0, 1942, 1919, 1951, 1951, 1951, 1949, 1946, 1900, 1901, + 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, + 1912, 1913, 1956, 1956, 1959, 1959, 1956, 0, 431, 429, + 430, 1825, 0, 0, 0, 0, 809, 813, 1439, 0, + 0, 0, 867, -2, 0, 0, 709, 392, 1499, 0, + 0, 396, 0, 397, 0, 0, 399, 0, 0, 0, + 420, 0, 423, 407, 408, 409, 410, 403, 0, 182, + 0, 383, 384, 380, 0, 0, 348, 0, 0, 0, + 550, 0, 0, 0, 0, 0, 0, 213, 209, 217, + 220, 230, 237, 0, 249, 251, 254, 210, 218, 223, + 224, 231, 252, 211, 214, 215, 219, 253, 255, 212, + 232, 236, 250, 234, 239, 242, 243, 248, 0, 183, + 0, 0, 0, 0, 0, 1835, 0, 0, 1868, 1869, + 1870, 1871, 1872, 1873, 1874, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 1829, 0, 0, 1586, 1587, + 1588, 1589, 0, 1593, 0, 1632, 0, 0, 0, 0, + 0, 0, 1889, 1893, 0, 1825, 1825, 0, 1825, 1821, + 0, 0, 0, 0, 0, 0, 1825, 1757, 0, 0, + 1759, 1775, 0, 0, 1761, 1762, 0, 1765, 1766, 1825, + 0, 1825, 1770, 1825, 1825, 1825, 1753, 1754, 0, 1821, + 1821, 1821, 1821, 0, 0, 1821, 1821, 1821, 1821, 1821, + 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 860, + 0, 868, 0, -2, 0, 886, 888, 890, 891, 893, + 894, 896, 897, 899, 900, 845, 0, 0, 106, 0, + 0, 0, 0, 0, 0, 72, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, + 339, 325, 2150, 0, 324, 0, 0, 0, 0, 0, + 0, 1050, 0, 0, 0, 1225, 0, 0, 0, 0, + 0, 0, 0, 0, 1225, 1225, 1225, 1225, 0, 1245, 768, 767, 0, 854, 0, 0, 71, 615, 619, 620, 621, 0, 927, 0, 0, 624, 625, 0, 626, 0, 0, 637, 685, 685, 643, 644, 639, 638, 691, 692, 688, 0, 688, 688, 927, 0, 662, 663, 664, 685, 685, 670, 861, 0, 671, 672, 688, 0, 693, 694, 927, 0, 0, 927, 927, 0, 680, 681, 683, 685, - 0, 0, 1226, 0, 701, 639, 639, 1969, 1970, 0, - 0, 1237, 0, 0, 0, 0, 0, 0, 0, 704, - 0, 0, 0, 449, 450, 0, 0, 769, 0, 267, - 271, 0, 274, 0, 2158, 0, 2158, 0, 0, 281, - 0, 0, 0, 0, 0, 0, 311, 312, 0, 0, - 0, 0, 302, 305, 1434, 1435, 1176, 1177, 306, 307, - 360, 361, 0, 860, 885, 887, 881, 882, 883, 0, - 73, 0, 0, 0, 0, 0, 0, 549, 0, 0, - 0, 0, 0, 744, 0, 1068, 746, 0, 0, 0, - 0, 0, 935, 929, 931, 1007, 142, 905, 8, 127, - 124, 0, 19, 0, 0, 19, 19, 0, 19, 316, - 0, 1966, 1964, 1965, 1899, 1951, 0, 1925, 0, 1926, - 1927, 1928, 1939, 1940, 0, 0, 1921, 0, 1922, 1923, - 1924, 1915, 0, 1916, 1917, 0, 1918, 1919, 314, 428, - 0, 0, 1827, 1054, 0, 787, 801, 782, 0, 790, - 0, 0, 1442, 0, 0, 0, 0, 770, 801, 772, - 0, 790, 860, 837, 0, 865, 0, 0, 393, 0, - 404, 398, 0, 405, 400, 401, 0, 0, 422, 424, - 425, 426, 411, 412, 706, 377, 378, 379, 369, 370, - 371, 372, 373, 374, 375, 376, 0, 0, 382, 152, - 0, 349, 350, 0, 0, 0, 196, 197, 198, 199, - 200, 201, 203, 187, 733, 735, 1168, 1180, 0, 1171, - 0, 206, 247, 179, 0, 0, 0, 1831, 1832, 1833, - 1834, 1835, 1840, 0, 1842, 1844, 1846, 1848, 0, 1866, - -2, -2, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, - 1577, 1578, 1579, 1580, 1851, 1864, 1865, 0, 0, 0, - 0, 0, 0, 1862, 1862, 1857, 0, 1607, 1436, 1437, - 1585, 0, 0, 1630, 1634, 0, 0, 0, 0, 0, - 0, 1208, 1950, 0, 143, 1821, 1725, 1726, 1727, 1728, - 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, - 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, - 1749, 1750, 1751, 1752, 1753, 0, 0, 1830, 0, 0, - 0, 1823, 1824, 0, 0, 0, 1713, 0, 0, 1719, - 1720, 1721, 0, 796, 0, 1786, 1759, 1777, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 959, 961, 0, 805, 807, 808, 834, 865, 841, - 0, 0, 0, 102, 107, 0, 1295, 0, 0, 0, - 0, 0, 0, 0, 75, 1241, 76, 1243, 0, 0, - 0, 0, 0, 0, 0, 343, 344, 0, 0, 338, - 326, 2151, 328, 0, 0, 0, 0, 1037, 0, 0, - 0, 0, 0, 0, 0, 1104, 1105, 547, 1162, 0, - 0, 0, 1178, 1212, 1222, 0, 0, 0, 0, 0, - 1301, 1090, 1095, 1096, 1097, 1091, 1092, 1098, 1099, 0, - 856, 0, 0, 976, 617, 0, 0, 623, 686, 687, - 928, 627, 0, 0, 634, 2112, 639, 927, 927, 646, - 640, 647, 690, 648, 649, 650, 688, 927, 927, 862, - 685, 688, 673, 689, 688, 1442, 677, 0, 684, 1442, - 702, 1442, 0, 700, 654, 655, 1303, 858, 447, 448, - 453, 455, 0, 514, 514, 514, 497, 514, 0, 0, - 485, 1971, 0, 0, 0, 0, 494, 1971, 0, 0, - 1971, 1971, 1971, 1971, 1971, 1971, 1971, 0, 0, 1971, - 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, - 0, 1971, 1971, 1971, 1971, 1971, 1420, 1971, 0, 1238, - 504, 505, 506, 507, 512, 513, 0, 0, 458, 459, - 0, 0, 0, 0, 0, 542, 0, 0, 1103, 0, - 547, 0, 0, 1145, 0, 0, 940, 0, 941, 942, - 943, 938, 978, 1002, 1002, 0, 1002, 982, 1442, 0, - 0, 0, 279, 280, 268, 0, 269, 0, 0, 282, - 283, 0, 285, 286, 287, 294, 2046, 2130, 289, 291, - 0, 0, 295, 308, 309, 310, 0, 0, 300, 301, - 0, 0, 363, 364, 366, 0, 865, 1242, 729, 730, - 1438, 731, 732, 736, 0, 0, 739, 740, 741, 742, - 743, 1070, 0, 0, 1154, 1155, 1156, 1228, 927, 0, - 936, 0, 932, 1008, 0, 1010, 0, 0, 125, 19, - 0, 118, 115, 0, 0, 0, 0, 0, 1946, 1895, - 1967, 0, 0, 0, 1948, 0, 0, 0, 0, 0, - 108, 817, 777, 0, 781, 798, 0, 802, 0, 0, - 794, 786, 791, 0, 0, 811, 778, 1441, 0, 0, - 0, 0, 771, 0, 0, 776, 865, 0, 815, 0, - 869, 870, 873, 1501, 0, 406, 402, 421, 0, 0, - 0, 0, 190, 1165, 0, 191, 195, 185, 0, 0, - 0, 1170, 0, 1167, 1172, 0, 205, 0, 0, 180, - 181, 1286, 1295, 0, 0, 0, 1841, 1843, 1845, 1847, - 1849, 0, 1852, 1862, 1862, 1858, 0, 1853, 0, 1855, - 0, 1831, 1591, 0, 1635, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 873, 0, 0, 1703, 1704, 0, - 0, 1708, 0, 1710, 1711, 1712, 1714, 0, 0, 0, - 1718, 0, 1757, 1778, 1761, 1764, 0, 1768, 0, 1770, - 1772, 1773, 1774, 0, 867, 867, 0, 0, 1674, 1674, - 1674, 0, 0, 0, 0, 1674, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1610, 0, 1611, - 1612, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 962, 815, 0, 0, 0, 0, 0, 1293, 0, - 92, 0, 0, 0, 0, 97, 0, 0, 77, 0, - 0, 1249, 1250, 0, 0, 0, 345, 333, 335, 0, - 327, 0, 1227, 0, 0, 0, 1041, 0, 0, -2, - 1070, 858, 0, 858, 1115, 1971, 551, 0, 0, 1164, - 0, 1134, 0, 0, 0, -2, 0, 0, 0, 1222, - 0, 0, 0, 1305, 0, 0, 0, 755, 759, 23, - 859, 0, 614, 0, 616, 622, 630, 628, 0, 632, - 0, 633, 685, 641, 642, 927, 665, 666, 0, 0, - 927, 685, 685, 676, 688, 697, 0, 698, 1442, 1305, - 0, 0, 1237, 1371, 1339, 475, 0, 1455, 1456, 515, - 0, 1462, 1471, 1226, 1533, 0, 1471, 0, 0, 1473, - 1474, 0, 0, 0, 0, 498, 499, 0, 484, 0, - 0, 0, 0, 0, 0, 483, 0, 0, 525, 0, - 0, 0, 0, 0, 1972, 1971, 1971, 0, 492, 493, - 0, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 1971, 1971, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1411, 0, 0, 0, 0, 0, 0, - 0, 1426, 1427, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1115, 1971, 0, 0, 0, 0, 551, 1159, - 1159, 1132, 1150, 0, 451, 452, 522, 0, 0, 0, - 0, 0, 0, 0, 968, 0, 0, 0, 967, 0, - 0, 0, 0, 0, 0, 0, 858, 1003, 0, 1005, - 1006, 980, -2, 0, 940, 985, 1826, 0, 272, 273, - 0, 0, 278, 296, 298, 270, 0, 0, 0, 297, - 299, 303, 304, 362, 365, 367, 815, 0, 0, 1329, - 0, 1071, 1072, 1074, 1075, 0, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, 2030, + 0, 0, 1225, 0, 701, 639, 639, 1968, 1969, 0, + 549, 1088, 0, 0, 0, 1236, 0, 0, 0, 0, + 0, 0, 0, 704, 0, 0, 0, 449, 450, 0, + 0, 769, 0, 267, 271, 0, 274, 0, 2157, 0, + 2157, 0, 0, 281, 0, 0, 0, 0, 0, 0, + 311, 312, 0, 0, 0, 0, 302, 305, 1433, 1434, + 1175, 1176, 306, 307, 360, 361, 0, 860, 885, 887, + 881, 882, 883, 0, 73, 0, 0, 0, 0, 0, + 0, 549, 0, 0, 0, 0, 0, 744, 0, 1068, + 746, 0, 0, 0, 0, 0, 935, 929, 931, 1007, + 142, 905, 8, 127, 124, 0, 19, 0, 0, 19, + 19, 0, 19, 316, 0, 1965, 1963, 1964, 1898, 1950, + 0, 1924, 0, 1925, 1926, 1927, 1938, 1939, 0, 0, + 1920, 0, 1921, 1922, 1923, 1914, 0, 1915, 1916, 0, + 1917, 1918, 314, 428, 0, 0, 1826, 1054, 0, 787, + 801, 782, 0, 790, 0, 0, 1441, 0, 0, 0, + 0, 770, 801, 772, 0, 790, 860, 837, 0, 865, + 0, 0, 393, 0, 404, 398, 0, 405, 400, 401, + 0, 0, 422, 424, 425, 426, 411, 412, 706, 377, + 378, 379, 369, 370, 371, 372, 373, 374, 375, 376, + 0, 0, 382, 152, 0, 349, 350, 0, 0, 0, + 196, 197, 198, 199, 200, 201, 203, 187, 733, 735, + 1167, 1179, 0, 1170, 0, 206, 247, 179, 0, 0, + 0, 1830, 1831, 1832, 1833, 1834, 1839, 0, 1841, 1843, + 1845, 1847, 0, 1865, -2, -2, 1568, 1569, 1570, 1571, + 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1850, 1863, + 1864, 0, 0, 0, 0, 0, 0, 1861, 1861, 1856, + 0, 1606, 1435, 1436, 1584, 0, 0, 1629, 1633, 0, + 0, 0, 0, 0, 0, 1207, 1949, 0, 143, 1820, + 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, + 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, + 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 0, + 0, 1829, 0, 0, 0, 1822, 1823, 0, 0, 0, + 1712, 0, 0, 1718, 1719, 1720, 0, 796, 0, 1785, + 1758, 1776, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 959, 961, 0, 805, 807, + 808, 834, 865, 841, 0, 0, 0, 102, 107, 0, + 1294, 0, 0, 0, 0, 0, 0, 0, 75, 1240, + 76, 1242, 0, 0, 0, 0, 0, 0, 0, 343, + 344, 0, 0, 338, 326, 2150, 328, 0, 0, 0, + 0, 1037, 0, 0, 0, 1225, 0, 0, 1103, 1104, + 547, 1161, 0, 0, 0, 1177, 1211, 1221, 0, 0, + 0, 0, 0, 1300, 0, 856, 0, 0, 976, 617, + 0, 0, 623, 686, 687, 928, 627, 0, 0, 634, + 2111, 639, 927, 927, 646, 640, 647, 690, 648, 649, + 650, 688, 927, 927, 862, 685, 688, 673, 689, 688, + 1441, 677, 0, 684, 1441, 702, 1441, 0, 700, 654, + 655, 1302, 0, 0, 0, 0, 447, 448, 453, 455, + 0, 514, 514, 514, 497, 514, 0, 0, 485, 1970, + 0, 0, 0, 0, 494, 1970, 0, 0, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 0, 0, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 0, 1970, + 1970, 1970, 1970, 1970, 1419, 1970, 0, 1237, 504, 505, + 506, 507, 512, 513, 0, 0, 458, 459, 0, 0, + 0, 0, 0, 542, 0, 0, 1102, 0, 547, 0, + 0, 1144, 0, 0, 940, 0, 941, 942, 943, 938, + 978, 1002, 1002, 0, 1002, 982, 1441, 0, 0, 0, + 279, 280, 268, 0, 269, 0, 0, 282, 283, 0, + 285, 286, 287, 294, 2045, 2129, 289, 291, 0, 0, + 295, 308, 309, 310, 0, 0, 300, 301, 0, 0, + 363, 364, 366, 0, 865, 1241, 729, 730, 1437, 731, + 732, 736, 0, 0, 739, 740, 741, 742, 743, 1070, + 0, 0, 1153, 1154, 1155, 1227, 927, 0, 936, 0, + 932, 1008, 0, 1010, 0, 0, 125, 19, 0, 118, + 115, 0, 0, 0, 0, 0, 1945, 1894, 1966, 0, + 0, 0, 1947, 0, 0, 0, 0, 0, 108, 817, + 777, 0, 781, 798, 0, 802, 0, 0, 794, 786, + 791, 0, 0, 811, 778, 1440, 0, 0, 0, 0, + 771, 0, 0, 776, 865, 0, 815, 0, 869, 870, + 873, 1500, 0, 406, 402, 421, 0, 0, 0, 0, + 190, 1164, 0, 191, 195, 185, 0, 0, 0, 1169, + 0, 1166, 1171, 0, 205, 0, 0, 180, 181, 1285, + 1294, 0, 0, 0, 1840, 1842, 1844, 1846, 1848, 0, + 1851, 1861, 1861, 1857, 0, 1852, 0, 1854, 0, 1830, + 1590, 0, 1634, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 873, 0, 0, 1702, 1703, 0, 0, 1707, + 0, 1709, 1710, 1711, 1713, 0, 0, 0, 1717, 0, + 1756, 1777, 1760, 1763, 0, 1767, 0, 1769, 1771, 1772, + 1773, 0, 867, 867, 0, 0, 1673, 1673, 1673, 0, + 0, 0, 0, 1673, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1609, 0, 1610, 1611, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 962, + 815, 0, 0, 0, 0, 0, 1292, 0, 92, 0, + 0, 0, 0, 97, 0, 0, 77, 0, 0, 1248, + 1249, 0, 0, 0, 345, 333, 335, 0, 327, 0, + 1226, 0, 0, 0, 1041, 0, 0, -2, 1070, 0, + 0, 1114, 1970, 551, 0, 0, 1163, 0, 1133, 0, + 0, 0, -2, 0, 0, 0, 1221, 0, 0, 0, + 1304, 0, 0, 0, 755, 759, 23, 859, 0, 614, + 0, 616, 622, 630, 628, 0, 632, 0, 633, 685, + 641, 642, 927, 665, 666, 0, 0, 927, 685, 685, + 676, 688, 697, 0, 698, 1441, 1304, 0, 858, 1089, + 1094, 1095, 1096, 1090, 1091, 1097, 1098, 1236, 1370, 1338, + 475, 0, 1454, 1455, 515, 0, 1461, 1470, 1225, 1532, + 0, 1470, 0, 0, 1472, 1473, 0, 0, 0, 0, + 498, 499, 0, 484, 0, 0, 0, 0, 0, 0, + 483, 0, 0, 525, 0, 0, 0, 0, 0, 1971, + 1970, 1970, 0, 492, 493, 0, 496, 0, 0, 0, + 0, 0, 0, 0, 0, 1970, 1970, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1410, 0, + 0, 0, 0, 0, 0, 0, 1425, 1426, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1114, 1970, 0, + 0, 0, 0, 551, 1158, 1158, 1131, 1149, 0, 451, + 452, 522, 0, 0, 0, 0, 0, 0, 0, 968, + 0, 0, 0, 967, 0, 0, 0, 0, 0, 0, + 0, 858, 1003, 0, 1005, 1006, 980, -2, 0, 940, + 985, 1825, 0, 272, 273, 0, 0, 278, 296, 298, + 270, 0, 0, 0, 297, 299, 303, 304, 362, 365, + 367, 815, 0, 0, 1328, 0, 1071, 1072, 1074, 1075, + 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, 2029, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, 1069, 747, 1157, 1229, 918, 930, 937, 1009, 1011, - 143, 933, 0, 128, 19, 127, 119, 120, 0, 19, - 0, 0, 0, 0, 1956, 1955, 1941, 0, 1942, 1953, - 1958, 0, 1961, 0, 432, 821, 0, 0, 801, 803, - 0, 0, 801, 0, 0, 810, 0, 0, 0, 0, - 0, 0, 0, 801, 815, 817, 838, 0, 0, 876, - 874, 875, 0, 0, 707, 153, 427, 0, 0, 0, - 0, 0, 734, 0, 1169, 187, 0, 0, 207, 0, - 0, 0, 1295, 1290, 1825, 1854, 1856, 0, 1863, 1859, - 1586, 1595, 1631, 0, 0, 1637, 1649, 1649, 0, 0, - 0, 1640, 1954, 1954, 1643, 1950, 1952, 1950, 1649, 1649, - 0, 1209, 0, 1210, 873, 144, 0, 0, 1709, 0, - 0, 0, 797, 0, 0, 0, 1670, 1672, 1674, 1674, - 1681, 1675, 1682, 1683, 1674, 1674, 1674, 1674, 1688, 1674, - 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, - 1668, 1613, 0, 1616, 0, 1619, 1620, 0, 0, 0, - 1884, 1885, 806, 835, 0, 0, 848, 849, 850, 851, - 852, 0, 0, 62, 62, 1295, 0, 101, 93, 0, - 0, 0, 0, 0, 0, 0, 1258, 1266, 0, 337, - 0, 78, 79, 81, 0, 0, 0, 0, 0, 0, - 0, 91, 1045, 0, 1039, 0, 0, 1056, 1057, 1059, - 0, 1062, 1063, 1064, 0, 0, 1448, 0, 1119, 1116, - 1117, 1118, 0, 1159, 552, 553, 554, 555, 0, 0, - 0, 1163, 0, 0, 1127, 0, 0, 0, 1213, 1214, - 1215, 1216, 1217, 1218, 1219, 1220, -2, 1232, 0, 1442, - 0, 0, 1448, 1278, 0, 0, 1283, 0, 1448, 1448, - 0, 1313, 0, 1302, 809, 0, -2, 0, 0, 757, - 0, 0, 977, 618, 629, 635, 927, 659, 863, 864, - 1442, 927, 927, 685, 703, 699, 1313, 1304, 0, 454, - 514, 0, 1359, 0, 0, 1365, 0, 1372, 468, 0, - 516, 0, 1461, 1489, 1472, 1489, 1534, 1489, 1489, 1226, - 0, 516, 0, 0, 486, 0, 0, 0, 0, 0, - 482, 519, 873, 469, 471, 472, 473, 523, 524, 526, - 0, 528, 529, 488, 500, 501, 502, 503, 0, 0, - 0, 495, 508, 509, 510, 511, 470, 1388, 1389, 1390, - 1393, 1394, 1395, 1396, 0, 0, 1399, 1400, 1401, 1402, - 1403, 1486, 1487, 1488, 1404, 1405, 1406, 1407, 1408, 1409, - 1410, 1428, 1429, 1430, 1431, 1432, 1433, 1412, 1413, 1414, - 1415, 1416, 1417, 1418, 1419, 0, 0, 1423, 0, 0, - 1039, 0, 462, 463, 0, 465, 0, 0, 1119, 0, - 0, 0, 0, 0, 1159, 545, 0, 0, 546, 1134, - 0, 1152, 0, 1146, 1147, 0, 0, 779, 927, 355, - 0, 972, 963, 0, 947, 0, 949, 969, 950, 970, - 0, 0, 954, 0, 956, 0, 952, 953, 958, 951, - 927, 939, 979, 1004, 981, 984, 986, 987, 993, 0, - 0, 0, 0, 266, 275, 276, 277, 284, 0, 571, - 290, 879, 1439, 737, 738, 1330, 1331, 745, 0, 1076, - 916, 0, 0, 123, 126, 0, 121, 0, 0, 0, - 0, 113, 111, 1949, 0, 0, 823, 167, 0, 0, - 0, 799, 0, 804, 801, 785, 795, 784, 792, 793, - 812, 1443, 1444, 1445, 1446, 0, 801, 775, 774, 879, - 821, 0, 871, 872, 0, 1502, 394, 0, 1166, 187, - 192, 193, 194, 188, 186, 1173, 0, 1175, 0, 1288, - 0, 0, 1860, 1636, 1596, 1638, 1650, 1651, 1639, 0, - 1598, 1599, 1641, 1642, 1644, 1645, 1646, 1647, 1648, 1600, - 0, 1211, 1705, 0, 1707, 1715, 1716, 0, 1765, 1769, - 0, 0, 0, 0, 0, 1679, 1680, 1684, 1685, 1686, - 1687, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, - 1698, 1699, 867, 1669, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 846, 0, 0, 0, - 64, 0, 64, 1294, 1296, 0, 1007, 0, 0, 98, - 0, 1272, 1442, 1260, 0, 1252, 0, 1266, 0, 0, - 0, 80, 82, 0, 2115, 0, 0, 0, 0, 1228, - 1047, 0, 0, 1038, 0, 1049, 1065, 1061, 0, 0, - 0, 0, 1449, 1450, 1452, 1453, 1454, 0, 1087, 0, - 0, 1107, 1108, 1109, 1121, 0, 557, 558, 0, 0, - 0, 570, 566, 567, 568, 548, 1158, 1141, 0, 0, - 1130, 0, 0, 1140, 0, 1233, 1971, 1971, 1971, 1272, - 0, 0, 1373, 1971, 1971, 0, 1280, 1282, 1272, 0, - 0, 1377, 1316, 0, 0, 1307, 0, 1002, 0, 0, - 927, 756, 759, 760, 857, 636, 674, 678, 675, 927, - 1316, 446, 1337, 0, 0, 0, 0, 0, 1369, 0, - 0, 1341, 0, 487, 517, 0, -2, 0, 1490, 0, - 1475, 1490, 0, 0, 1489, 0, 476, 516, 0, 0, - 0, 530, 535, 536, 0, 532, 533, 1529, 0, 534, - 0, 521, 0, 527, 1391, 1392, 0, 1397, 1398, 0, - 1422, 0, 0, 457, 460, 0, 1043, 1044, -2, 0, - 0, 0, 537, 0, 0, 0, 538, 539, 544, 1160, - 1161, 1127, 0, 1141, 0, 1151, 0, 1148, 1149, 867, - 0, 0, 944, 973, 0, 0, 945, 0, 946, 948, - 971, 0, 965, 955, 957, 354, 988, 0, 0, 990, - 991, 992, 983, 292, 833, 0, 1073, 0, 901, 0, - 0, 934, 0, 19, 0, 0, 116, 1959, 1962, 825, - 0, 822, 168, 0, 0, 0, 0, 789, 800, 783, - 1447, 773, 836, 823, 0, 877, 878, 189, 184, 1174, - 1298, 0, 1289, 0, 1553, 1609, 0, 1717, 0, 1674, - 1671, 1674, 1673, 1665, 0, 1614, 0, 1617, 0, 1621, - 1622, 0, 1624, 1625, 1626, 0, 1628, 1629, 0, 844, - 0, 60, 0, 63, 61, 0, 100, 94, 0, 0, - 1247, 0, 1272, 1251, 0, 0, 0, 1253, 0, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 89, 0, - 0, 1046, 0, 1040, 0, 0, 1058, 1060, 0, 1093, - 1377, 0, 1093, 1120, 1106, 0, 0, 559, 560, 0, - 563, 569, 1122, 0, 0, 1124, 1125, 1126, 0, 0, - 1138, 0, 0, 0, 0, 1221, 1223, 1239, 0, 0, - 0, -2, 1284, 0, -2, 1277, 0, 1322, 0, 1314, - 0, 1306, 0, 1309, 927, 927, -2, 753, 758, 0, - 679, 1322, 1339, 0, 1360, 0, 0, 0, 0, 0, - 0, 0, 1340, 0, 1353, 518, 1491, -2, 1505, 1507, - 0, 1238, 1510, 1511, 0, 0, 0, 0, 0, 0, - 1560, 1519, 0, 0, 1523, 1524, 1525, 0, 0, 1528, - 0, 1878, 1879, 0, 1532, 0, 0, 0, 0, 0, - 0, 0, 1469, 477, 478, 0, 480, 481, 1971, 1530, - 520, 474, 1971, 490, 1421, 1424, 1425, 461, 464, 0, - 0, 543, 540, 541, 1130, 1133, 1144, 1153, 780, 860, - 356, 357, 974, 0, 964, 966, 997, 994, 0, 0, - 880, 1077, 917, 925, 2343, 2345, 2342, 117, 122, 0, - 0, 827, 0, 824, 0, 818, 820, 178, 788, 825, - 866, 138, 170, 0, 0, 1597, 0, 0, 0, 1706, - 1756, 1677, 1678, 0, 1666, 0, 1660, 1661, 1662, 1667, - 0, 0, 0, 0, 847, 842, 65, 96, 0, 99, - 0, 1248, 0, 0, 0, 1264, 1265, 0, 1267, 1268, - 1269, 0, 0, 0, 0, -2, 69, 1228, 0, 1228, - 0, 0, 0, 0, 1048, 1042, 1052, 1066, 0, 1079, - 1086, 1100, 1244, 1451, 1085, 0, 0, 556, 561, 0, - 564, 565, 1142, 1141, 0, 1128, 1129, 0, 1136, 0, - 0, 1234, 1235, 1236, 1374, 1375, 1376, 1332, 1279, 0, - -2, 1385, 0, 1275, 1298, 1332, 0, 1310, 0, 1317, - 0, 1315, 1308, 867, 754, 1319, 456, 1371, 1361, 0, - 1363, 0, 0, 0, 0, 1342, -2, 0, 1506, 1508, - 1509, 1512, 1513, 1514, 1565, 1566, 1567, 0, 0, 1517, - 1562, 1563, 1564, 1518, 0, 0, 0, 0, 0, 1876, - 1877, 1558, 0, 0, 1476, 1478, 1479, 1480, 1481, 1482, - 1483, 1484, 1485, 1477, 0, 0, 0, 1468, 1470, 479, - 0, 0, 1971, 0, 0, 1143, 353, 0, 0, 998, - 1000, 995, 996, 919, 0, 0, 0, 0, 112, 114, - 129, 0, 826, 169, 0, 827, 140, 0, 161, 0, - 1299, 0, 1608, 0, 0, 0, 1676, 1663, 0, 0, - 0, 0, 0, 1880, 1881, 1882, 0, 1615, 1618, 1623, - 1627, 95, 1273, 1261, 1262, 1263, 1259, 0, 0, 1270, - 1271, 0, 67, 0, 84, 1228, 85, 1228, 0, 0, - 1036, 0, 0, 1101, 1102, 1110, 1111, 0, 1113, 1114, - 562, 1123, 1131, 1135, 1138, 0, 1195, 1334, 0, 1281, - 1237, 1387, 1971, 1285, 1334, 0, 1379, 1971, 1971, 1300, - 0, 1312, 0, 1324, 0, 1318, 860, 445, 0, 1321, - 1357, 1362, 1364, 1366, 0, 1370, 1368, 1343, -2, 0, - 1351, 0, 0, 1515, 1516, 0, 0, 1775, 1971, 0, - 1548, 0, 1195, 1195, 1195, 1195, 0, 531, 489, 0, + -2, -2, -2, -2, -2, -2, 1069, 747, 1156, 1228, + 918, 930, 937, 1009, 1011, 143, 933, 0, 128, 19, + 127, 119, 120, 0, 19, 0, 0, 0, 0, 1955, + 1954, 1940, 0, 1941, 1952, 1957, 0, 1960, 0, 432, + 821, 0, 0, 801, 803, 0, 0, 801, 0, 0, + 810, 0, 0, 0, 0, 0, 0, 0, 801, 815, + 817, 838, 0, 0, 876, 874, 875, 0, 0, 707, + 153, 427, 0, 0, 0, 0, 0, 734, 0, 1168, + 187, 0, 0, 207, 0, 0, 0, 1294, 1289, 1824, + 1853, 1855, 0, 1862, 1858, 1585, 1594, 1630, 0, 0, + 1636, 1648, 1648, 0, 0, 0, 1639, 1953, 1953, 1642, + 1949, 1951, 1949, 1648, 1648, 0, 1208, 0, 1209, 873, + 144, 0, 0, 1708, 0, 0, 0, 797, 0, 0, + 0, 1669, 1671, 1673, 1673, 1680, 1674, 1681, 1682, 1673, + 1673, 1673, 1673, 1687, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1667, 1612, 0, 1615, 0, + 1618, 1619, 0, 0, 0, 1883, 1884, 806, 835, 0, + 0, 848, 849, 850, 851, 852, 0, 0, 62, 62, + 1294, 0, 101, 93, 0, 0, 0, 0, 0, 0, + 0, 1257, 1265, 0, 337, 0, 78, 79, 81, 0, + 0, 0, 0, 0, 0, 0, 91, 1045, 0, 1039, + 0, 0, 1056, 1057, 1059, 0, 1062, 1063, 1064, 0, + 858, 1447, 1118, 1115, 1116, 1117, 0, 1158, 552, 553, + 554, 555, 0, 0, 0, 1162, 0, 0, 1126, 0, + 0, 0, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, + -2, 1231, 0, 1441, 0, 0, 1447, 1277, 0, 0, + 1282, 0, 1447, 1447, 0, 1312, 0, 1301, 809, 0, + -2, 0, 0, 757, 0, 0, 977, 618, 629, 635, + 927, 659, 863, 864, 1441, 927, 927, 685, 703, 699, + 1312, 1303, 0, 454, 514, 0, 1358, 0, 0, 1364, + 0, 1371, 468, 0, 516, 0, 1460, 1488, 1471, 1488, + 1533, 1488, 1488, 1225, 0, 516, 0, 0, 486, 0, + 0, 0, 0, 0, 482, 519, 873, 469, 471, 472, + 473, 523, 524, 526, 0, 528, 529, 488, 500, 501, + 502, 503, 0, 0, 0, 495, 508, 509, 510, 511, + 470, 1387, 1388, 1389, 1392, 1393, 1394, 1395, 0, 0, + 1398, 1399, 1400, 1401, 1402, 1485, 1486, 1487, 1403, 1404, + 1405, 1406, 1407, 1408, 1409, 1427, 1428, 1429, 1430, 1431, + 1432, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 0, + 0, 1422, 0, 0, 1039, 0, 462, 463, 0, 465, + 0, 0, 1118, 0, 0, 0, 0, 0, 1158, 545, + 0, 0, 546, 1133, 0, 1151, 0, 1145, 1146, 0, + 0, 779, 927, 355, 0, 972, 963, 0, 947, 0, + 949, 969, 950, 970, 0, 0, 954, 0, 956, 0, + 952, 953, 958, 951, 927, 939, 979, 1004, 981, 984, + 986, 987, 993, 0, 0, 0, 0, 266, 275, 276, + 277, 284, 0, 571, 290, 879, 1438, 737, 738, 1329, + 1330, 745, 0, 1076, 916, 0, 0, 123, 126, 0, + 121, 0, 0, 0, 0, 113, 111, 1948, 0, 0, + 823, 167, 0, 0, 0, 799, 0, 804, 801, 785, + 795, 784, 792, 793, 812, 1442, 1443, 1444, 1445, 0, + 801, 775, 774, 879, 821, 0, 871, 872, 0, 1501, + 394, 0, 1165, 187, 192, 193, 194, 188, 186, 1172, + 0, 1174, 0, 1287, 0, 0, 1859, 1635, 1595, 1637, + 1649, 1650, 1638, 0, 1597, 1598, 1640, 1641, 1643, 1644, + 1645, 1646, 1647, 1599, 0, 1210, 1704, 0, 1706, 1714, + 1715, 0, 1764, 1768, 0, 0, 0, 0, 0, 1678, + 1679, 1683, 1684, 1685, 1686, 1688, 1689, 1690, 1691, 1692, + 1693, 1694, 1695, 1696, 1697, 1698, 867, 1668, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 846, 0, 0, 0, 64, 0, 64, 1293, 1295, 0, + 1007, 0, 0, 98, 0, 1271, 1441, 1259, 0, 1251, + 0, 1265, 0, 0, 0, 80, 82, 0, 2114, 0, + 0, 0, 0, 1227, 1047, 0, 0, 1038, 0, 1049, + 1065, 1061, 0, 0, 0, 0, 1448, 1449, 1451, 1452, + 1453, 1086, 0, 0, 1106, 1107, 1108, 1120, 0, 557, + 558, 0, 0, 0, 570, 566, 567, 568, 548, 1157, + 1140, 0, 0, 1129, 0, 0, 1139, 0, 1232, 1970, + 1970, 1970, 1271, 0, 0, 1372, 1970, 1970, 0, 1279, + 1281, 1271, 0, 0, 1376, 1315, 0, 0, 1306, 0, + 1002, 0, 0, 927, 756, 759, 760, 857, 636, 674, + 678, 675, 927, 1315, 0, 1336, 0, 0, 0, 0, + 0, 1368, 0, 0, 1340, 0, 487, 517, 0, -2, + 0, 1489, 0, 1474, 1489, 0, 0, 1488, 0, 476, + 516, 0, 0, 0, 530, 535, 536, 0, 532, 533, + 1528, 0, 534, 0, 521, 0, 527, 1390, 1391, 0, + 1396, 1397, 0, 1421, 0, 0, 457, 460, 0, 1043, + 1044, -2, 0, 0, 0, 537, 0, 0, 0, 538, + 539, 544, 1159, 1160, 1126, 0, 1140, 0, 1150, 0, + 1147, 1148, 867, 0, 0, 944, 973, 0, 0, 945, + 0, 946, 948, 971, 0, 965, 955, 957, 354, 988, + 0, 0, 990, 991, 992, 983, 292, 833, 0, 1073, + 0, 901, 0, 0, 934, 0, 19, 0, 0, 116, + 1958, 1961, 825, 0, 822, 168, 0, 0, 0, 0, + 789, 800, 783, 1446, 773, 836, 823, 0, 877, 878, + 189, 184, 1173, 1297, 0, 1288, 0, 1552, 1608, 0, + 1716, 0, 1673, 1670, 1673, 1672, 1664, 0, 1613, 0, + 1616, 0, 1620, 1621, 0, 1623, 1624, 1625, 0, 1627, + 1628, 0, 844, 0, 60, 0, 63, 61, 0, 100, + 94, 0, 0, 1246, 0, 1271, 1250, 0, 0, 0, + 1252, 0, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 89, 0, 0, 1046, 0, 1040, 0, 0, 1058, + 1060, 0, 0, 1376, 0, 1119, 1105, 0, 0, 559, + 560, 0, 563, 569, 1121, 0, 0, 1123, 1124, 1125, + 0, 0, 1137, 0, 0, 0, 0, 1220, 1222, 1238, + 0, 0, 0, -2, 1283, 0, -2, 1276, 0, 1321, + 0, 1313, 0, 1305, 0, 1308, 927, 927, -2, 753, + 758, 0, 679, 1321, 446, 1338, 0, 1359, 0, 0, + 0, 0, 0, 0, 0, 1339, 0, 1352, 518, 1490, + -2, 1504, 1506, 0, 1237, 1509, 1510, 0, 0, 0, + 0, 0, 0, 1559, 1518, 0, 0, 1522, 1523, 1524, + 0, 0, 1527, 0, 1877, 1878, 0, 1531, 0, 0, + 0, 0, 0, 0, 0, 1468, 477, 478, 0, 480, + 481, 1970, 1529, 520, 474, 1970, 490, 1420, 1423, 1424, + 461, 464, 0, 0, 543, 540, 541, 1129, 1132, 1143, + 1152, 780, 860, 356, 357, 974, 0, 964, 966, 997, + 994, 0, 0, 880, 1077, 917, 925, 2342, 2344, 2341, + 117, 122, 0, 0, 827, 0, 824, 0, 818, 820, + 178, 788, 825, 866, 138, 170, 0, 0, 1596, 0, + 0, 0, 1705, 1755, 1676, 1677, 0, 1665, 0, 1659, + 1660, 1661, 1666, 0, 0, 0, 0, 847, 842, 65, + 96, 0, 99, 0, 1247, 0, 0, 0, 1263, 1264, + 0, 1266, 1267, 1268, 0, 0, 0, 0, -2, 69, + 1227, 0, 1227, 0, 0, 0, 0, 1048, 1042, 1052, + 1066, 0, 1079, 1092, 1243, 1450, 0, 0, 556, 561, + 0, 564, 565, 1141, 1140, 0, 1127, 1128, 0, 1135, + 0, 0, 1233, 1234, 1235, 1373, 1374, 1375, 1331, 1278, + 0, -2, 1384, 0, 1274, 1297, 1331, 0, 1309, 0, + 1316, 0, 1314, 1307, 867, 754, 1318, 456, 1370, 1360, + 0, 1362, 0, 0, 0, 0, 1341, -2, 0, 1505, + 1507, 1508, 1511, 1512, 1513, 1564, 1565, 1566, 0, 0, + 1516, 1561, 1562, 1563, 1517, 0, 0, 0, 0, 0, + 1875, 1876, 1557, 0, 0, 1475, 1477, 1478, 1479, 1480, + 1481, 1482, 1483, 1484, 1476, 0, 0, 0, 1467, 1469, + 479, 0, 0, 1970, 0, 0, 1142, 353, 0, 0, + 998, 1000, 995, 996, 919, 0, 0, 0, 0, 112, + 114, 129, 0, 826, 169, 0, 827, 140, 0, 161, + 0, 1298, 0, 1607, 0, 0, 0, 1675, 1662, 0, + 0, 0, 0, 0, 1879, 1880, 1881, 0, 1614, 1617, + 1622, 1626, 95, 1272, 1260, 1261, 1262, 1258, 0, 0, + 1269, 1270, 0, 67, 0, 84, 1227, 85, 1227, 0, + 0, 1036, 0, 1085, 1099, 1109, 1110, 0, 1112, 1113, + 562, 1122, 1130, 1134, 1137, 0, 1194, 1333, 0, 1280, + 1236, 1386, 1970, 1284, 1333, 0, 1378, 1970, 1970, 1299, + 0, 1311, 0, 1323, 0, 1317, 860, 445, 0, 1320, + 1356, 1361, 1363, 1365, 0, 1369, 1367, 1342, -2, 0, + 1350, 0, 0, 1514, 1515, 0, 0, 1774, 1970, 0, + 1547, 0, 1194, 1194, 1194, 1194, 0, 531, 489, 0, 0, 467, 975, 989, 0, 926, 0, 0, 0, 0, 0, 816, 130, 0, 139, 158, 0, 171, 172, 0, - 0, 0, 0, 1291, 0, 1556, 1557, 0, 1652, 0, - 0, 0, 1656, 1657, 1658, 1659, 1266, 1266, 66, 69, - 0, 86, 87, 0, 1228, 0, 1078, 0, 1112, 1137, - 1139, 1194, 1274, 0, 1371, 1386, 0, 1276, 1378, 0, - 0, 0, 1311, 1323, 0, 1326, 752, 1320, 1338, 0, - 1367, 1344, 1352, 0, 1347, 0, 0, 0, 1561, 0, - 1522, 0, 1527, 1536, 1549, 0, 0, 1457, 0, 1459, - 0, 1463, 0, 1465, 0, 0, 491, 466, 999, 1001, - 0, 1826, 921, 922, 0, 829, 819, 141, 145, 0, - 167, 164, 0, 173, 0, 0, 0, 0, 1287, 0, - 1554, 0, 1653, 1654, 1655, 1254, 1266, 1255, 1266, 68, - 70, 1228, 88, 0, 1080, 1081, 1094, 1196, 1971, 1971, - 0, 0, 0, 1202, 1203, 1971, 1971, 1971, 1971, 0, - 1359, 1391, 1380, 1381, 1382, 1325, 1358, 1346, 0, -2, - 1354, 0, 0, 1828, 1838, 1839, 1520, 1526, 1535, 1537, - 1538, 0, 1550, 1551, 1552, 1559, 1195, 1195, 1195, 1195, - 1467, 920, 0, 0, 828, 0, 132, 0, 0, 162, - 163, 165, 0, 174, 0, 176, 177, 0, 0, 1664, - 1256, 1257, 90, 1082, 0, 0, 1199, 1200, 0, 0, - 0, 0, 0, 1335, 0, 1337, 1348, -2, 0, 1356, - 0, 1521, 1539, 0, 1540, 0, 0, 0, 1458, 1460, - 1464, 1466, 1826, 923, 830, 1297, 0, 146, 0, 148, - 150, 151, 1492, 159, 160, 166, 175, 0, 0, 1067, - 1083, 0, 1197, 1198, 1201, 1204, 1205, 1206, 1207, 0, - 1339, 1355, 1829, 1541, 1543, 1544, 0, 0, 1542, 0, - 133, 134, 0, 147, 0, 0, 1292, 1555, 1084, 1336, - 1333, 1545, 1547, 1546, 924, 0, 0, 149, 1493, 135, - 136, 137, 0, 1494, + 0, 0, 0, 1290, 0, 1555, 1556, 0, 1651, 0, + 0, 0, 1655, 1656, 1657, 1658, 1265, 1265, 66, 69, + 0, 86, 87, 0, 1227, 0, 1078, 0, 1100, 1101, + 1111, 1136, 1138, 1193, 1273, 0, 1370, 1385, 0, 1275, + 1377, 0, 0, 0, 1310, 1322, 0, 1325, 752, 1319, + 1337, 0, 1366, 1343, 1351, 0, 1346, 0, 0, 0, + 1560, 0, 1521, 0, 1526, 1535, 1548, 0, 0, 1456, + 0, 1458, 0, 1462, 0, 1464, 0, 0, 491, 466, + 999, 1001, 0, 1825, 921, 922, 0, 829, 819, 141, + 145, 0, 167, 164, 0, 173, 0, 0, 0, 0, + 1286, 0, 1553, 0, 1652, 1653, 1654, 1253, 1265, 1254, + 1265, 68, 70, 1227, 88, 0, 1080, 1081, 0, 1195, + 1970, 1970, 0, 0, 0, 1201, 1202, 1970, 1970, 1970, + 1970, 0, 1358, 1390, 1379, 1380, 1381, 1324, 1357, 1345, + 0, -2, 1353, 0, 0, 1827, 1837, 1838, 1519, 1525, + 1534, 1536, 1537, 0, 1549, 1550, 1551, 1558, 1194, 1194, + 1194, 1194, 1466, 920, 0, 0, 828, 0, 132, 0, + 0, 162, 163, 165, 0, 174, 0, 176, 177, 0, + 0, 1663, 1255, 1256, 90, 1082, 1093, 0, 0, 1198, + 1199, 0, 0, 0, 0, 0, 1334, 0, 1336, 1347, + -2, 0, 1355, 0, 1520, 1538, 0, 1539, 0, 0, + 0, 1457, 1459, 1463, 1465, 1825, 923, 830, 1296, 0, + 146, 0, 148, 150, 151, 1491, 159, 160, 166, 175, + 0, 0, 1067, 1083, 0, 1196, 1197, 1200, 1203, 1204, + 1205, 1206, 0, 1338, 1354, 1828, 1540, 1542, 1543, 0, + 0, 1541, 0, 133, 134, 0, 147, 0, 0, 1291, + 1554, 1084, 1335, 1332, 1544, 1546, 1545, 924, 0, 0, + 149, 1492, 135, 136, 137, 0, 1493, } var yyTok1 = [...]int{ @@ -14693,21 +14688,28 @@ yydefault: } yyVAL.union = yyLOCAL case 446: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement //line mysql_sql.y:3412 { - var ifExists = yyDollar[3].boolValUnion() - var name = yyDollar[4].tableNameUnion() - var colNames = yyDollar[5].identifierListUnion() - var asSource = yyDollar[7].selectUnion() - yyLOCAL = tree.NewAlterView(ifExists, name, colNames, asSource) + var ifExists = yyDollar[4].boolValUnion() + var name = yyDollar[5].tableNameUnion() + var colNames = yyDollar[6].identifierListUnion() + var asSource = yyDollar[8].selectUnion() + secType := "" + viewListStr := strings.ToUpper(yyDollar[2].str) + if strings.Contains(viewListStr, "SQL SECURITY INVOKER") { + secType = "INVOKER" + } else if strings.Contains(viewListStr, "SQL SECURITY DEFINER") { + secType = "DEFINER" + } + yyLOCAL = tree.NewAlterView(ifExists, name, colNames, asSource, secType) } yyVAL.union = yyLOCAL case 447: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3422 +//line mysql_sql.y:3429 { var table = yyDollar[3].tableNameUnion() alterTable := tree.NewAlterTable(table) @@ -14718,7 +14720,7 @@ yydefault: case 448: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3429 +//line mysql_sql.y:3436 { var table = yyDollar[3].tableNameUnion() alterTable := tree.NewAlterTable(table) @@ -14729,7 +14731,7 @@ yydefault: case 449: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3438 +//line mysql_sql.y:3445 { alterTables := yyDollar[3].renameTableOptionsUnion() renameTables := tree.NewRenameTable(alterTables) @@ -14739,7 +14741,7 @@ yydefault: case 450: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.AlterTable -//line mysql_sql.y:3446 +//line mysql_sql.y:3453 { yyLOCAL = []*tree.AlterTable{yyDollar[1].renameTableOptionUnion()} } @@ -14747,7 +14749,7 @@ yydefault: case 451: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.AlterTable -//line mysql_sql.y:3450 +//line mysql_sql.y:3457 { yyLOCAL = append(yyDollar[1].renameTableOptionsUnion(), yyDollar[3].renameTableOptionUnion()) } @@ -14755,7 +14757,7 @@ yydefault: case 452: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AlterTable -//line mysql_sql.y:3456 +//line mysql_sql.y:3463 { var table = yyDollar[1].tableNameUnion() alterTable := tree.NewAlterTable(table) @@ -14767,7 +14769,7 @@ yydefault: case 453: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOptions -//line mysql_sql.y:3467 +//line mysql_sql.y:3474 { yyLOCAL = []tree.AlterTableOption{yyDollar[1].alterTableOptionUnion()} } @@ -14775,7 +14777,7 @@ yydefault: case 454: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOptions -//line mysql_sql.y:3471 +//line mysql_sql.y:3478 { yyLOCAL = append(yyDollar[1].alterTableOptionsUnion(), yyDollar[3].alterTableOptionUnion()) } @@ -14783,7 +14785,7 @@ yydefault: case 455: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3477 +//line mysql_sql.y:3484 { yyLOCAL = yyDollar[1].alterPartitionOptionUnion() } @@ -14791,7 +14793,7 @@ yydefault: case 456: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3481 +//line mysql_sql.y:3488 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -14817,7 +14819,7 @@ yydefault: case 457: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3505 +//line mysql_sql.y:3512 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -14829,7 +14831,7 @@ yydefault: case 458: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3515 +//line mysql_sql.y:3522 { yyLOCAL = &tree.AlterSQLTask{ Name: tree.Identifier(yyDollar[3].cstrUnion().Compare()), @@ -14840,7 +14842,7 @@ yydefault: case 459: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3522 +//line mysql_sql.y:3529 { yyLOCAL = &tree.AlterSQLTask{ Name: tree.Identifier(yyDollar[3].cstrUnion().Compare()), @@ -14851,7 +14853,7 @@ yydefault: case 460: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3529 +//line mysql_sql.y:3536 { yyLOCAL = &tree.AlterSQLTask{ Name: tree.Identifier(yyDollar[3].cstrUnion().Compare()), @@ -14864,7 +14866,7 @@ yydefault: case 461: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3538 +//line mysql_sql.y:3545 { yyLOCAL = &tree.AlterSQLTask{ Name: tree.Identifier(yyDollar[3].cstrUnion().Compare()), @@ -14876,7 +14878,7 @@ yydefault: case 462: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3546 +//line mysql_sql.y:3553 { yyLOCAL = &tree.AlterSQLTask{ Name: tree.Identifier(yyDollar[3].cstrUnion().Compare()), @@ -14888,7 +14890,7 @@ yydefault: case 463: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3554 +//line mysql_sql.y:3561 { yyLOCAL = &tree.AlterSQLTask{ Name: tree.Identifier(yyDollar[3].cstrUnion().Compare()), @@ -14900,7 +14902,7 @@ yydefault: case 464: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3564 +//line mysql_sql.y:3571 { var oldName = yyDollar[5].cstrUnion().Compare() var newName = yyDollar[8].cstrUnion().Compare() @@ -14910,7 +14912,7 @@ yydefault: case 465: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3570 +//line mysql_sql.y:3577 { var oldName = yyDollar[3].cstrUnion().Compare() var newName = yyDollar[6].cstrUnion().Compare() @@ -14920,7 +14922,7 @@ yydefault: case 466: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3576 +//line mysql_sql.y:3583 { var roleName = yyDollar[3].cstrUnion().Compare() var ruleSQL = yyDollar[6].str @@ -14933,7 +14935,7 @@ yydefault: case 467: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3585 +//line mysql_sql.y:3592 { var roleName = yyDollar[3].cstrUnion().Compare() var dbName = yyDollar[8].cstrUnion().Compare() @@ -14944,7 +14946,7 @@ yydefault: case 468: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3594 +//line mysql_sql.y:3601 { var typ = tree.AlterPartitionAddPartition var partitions = yyDollar[3].partitionsUnion() @@ -14958,7 +14960,7 @@ yydefault: case 469: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3604 +//line mysql_sql.y:3611 { var typ = tree.AlterPartitionDropPartition var partitionNames = yyDollar[3].PartitionNamesUnion() @@ -14978,7 +14980,7 @@ yydefault: case 470: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterPartitionOption -//line mysql_sql.y:3620 +//line mysql_sql.y:3627 { var typ = tree.AlterPartitionTruncatePartition var partitionNames = yyDollar[3].PartitionNamesUnion() @@ -14998,7 +15000,7 @@ yydefault: case 471: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3638 +//line mysql_sql.y:3645 { yyLOCAL = nil } @@ -15006,7 +15008,7 @@ yydefault: case 472: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3642 +//line mysql_sql.y:3649 { yyLOCAL = yyDollar[1].PartitionNamesUnion() } @@ -15014,7 +15016,7 @@ yydefault: case 473: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3648 +//line mysql_sql.y:3655 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } @@ -15022,7 +15024,7 @@ yydefault: case 474: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:3652 +//line mysql_sql.y:3659 { yyLOCAL = append(yyDollar[1].PartitionNamesUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } @@ -15030,7 +15032,7 @@ yydefault: case 475: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3658 +//line mysql_sql.y:3665 { var def = yyDollar[2].tableDefUnion() opt := tree.NewAlterOptionAdd(def) @@ -15040,7 +15042,7 @@ yydefault: case 476: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3664 +//line mysql_sql.y:3671 { var typ = tree.AlterTableModifyColumn var newColumn = yyDollar[3].columnTableDefUnion() @@ -15052,7 +15054,7 @@ yydefault: case 477: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3672 +//line mysql_sql.y:3679 { // Type OldColumnName NewColumn Position var typ = tree.AlterTableChangeColumn @@ -15066,7 +15068,7 @@ yydefault: case 478: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3682 +//line mysql_sql.y:3689 { var typ = tree.AlterTableRenameColumn var oldColumnName = yyDollar[3].unresolvedNameUnion() @@ -15078,7 +15080,7 @@ yydefault: case 479: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3690 +//line mysql_sql.y:3697 { var typ = tree.AlterTableAlterColumn var columnName = yyDollar[3].unresolvedNameUnion() @@ -15092,7 +15094,7 @@ yydefault: case 480: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3700 +//line mysql_sql.y:3707 { var typ = tree.AlterTableAlterColumn var columnName = yyDollar[3].unresolvedNameUnion() @@ -15106,7 +15108,7 @@ yydefault: case 481: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3710 +//line mysql_sql.y:3717 { var typ = tree.AlterTableAlterColumn var columnName = yyDollar[3].unresolvedNameUnion() @@ -15120,7 +15122,7 @@ yydefault: case 482: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3720 +//line mysql_sql.y:3727 { var orderByClauseType = tree.AlterTableOrderByColumn var orderByColumnList = yyDollar[3].alterColumnOrderByUnion() @@ -15131,7 +15133,7 @@ yydefault: case 483: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3727 +//line mysql_sql.y:3734 { yyLOCAL = tree.AlterTableOption(yyDollar[2].alterTableOptionUnion()) } @@ -15139,7 +15141,7 @@ yydefault: case 484: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3731 +//line mysql_sql.y:3738 { yyLOCAL = tree.AlterTableOption(yyDollar[2].alterTableOptionUnion()) } @@ -15147,7 +15149,7 @@ yydefault: case 485: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3735 +//line mysql_sql.y:3742 { yyLOCAL = tree.AlterTableOption(yyDollar[1].tableOptionUnion()) } @@ -15155,7 +15157,7 @@ yydefault: case 486: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3739 +//line mysql_sql.y:3746 { yyLOCAL = tree.AlterTableOption(yyDollar[3].alterTableOptionUnion()) } @@ -15163,7 +15165,7 @@ yydefault: case 487: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3743 +//line mysql_sql.y:3750 { var column = yyDollar[3].columnTableDefUnion() var position = yyDollar[4].alterColPositionUnion() @@ -15174,7 +15176,7 @@ yydefault: case 488: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3750 +//line mysql_sql.y:3757 { var checkType = yyDollar[1].str var enforce bool @@ -15184,7 +15186,7 @@ yydefault: case 489: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3756 +//line mysql_sql.y:3763 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } @@ -15192,7 +15194,7 @@ yydefault: case 490: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3760 +//line mysql_sql.y:3767 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[5].str) } @@ -15200,7 +15202,7 @@ yydefault: case 491: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3764 +//line mysql_sql.y:3771 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[5].str) } @@ -15208,7 +15210,7 @@ yydefault: case 492: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3768 +//line mysql_sql.y:3775 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -15216,7 +15218,7 @@ yydefault: case 493: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3772 +//line mysql_sql.y:3779 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -15224,7 +15226,7 @@ yydefault: case 494: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3776 +//line mysql_sql.y:3783 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -15232,7 +15234,7 @@ yydefault: case 495: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3780 +//line mysql_sql.y:3787 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } @@ -15240,33 +15242,33 @@ yydefault: case 496: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3784 +//line mysql_sql.y:3791 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[1].str) } yyVAL.union = yyLOCAL case 497: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:3789 +//line mysql_sql.y:3796 { yyVAL.str = "" } case 514: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:3820 +//line mysql_sql.y:3827 { yyVAL.str = "" } case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:3824 +//line mysql_sql.y:3831 { yyVAL.str = string("COLUMN") } case 516: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ColumnPosition -//line mysql_sql.y:3829 +//line mysql_sql.y:3836 { var typ = tree.ColumnPositionNone var relativeColumn *tree.UnresolvedName @@ -15276,7 +15278,7 @@ yydefault: case 517: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ColumnPosition -//line mysql_sql.y:3835 +//line mysql_sql.y:3842 { var typ = tree.ColumnPositionFirst var relativeColumn *tree.UnresolvedName @@ -15286,7 +15288,7 @@ yydefault: case 518: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ColumnPosition -//line mysql_sql.y:3841 +//line mysql_sql.y:3848 { var typ = tree.ColumnPositionAfter var relativeColumn = yyDollar[2].unresolvedNameUnion() @@ -15296,7 +15298,7 @@ yydefault: case 519: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.AlterColumnOrder -//line mysql_sql.y:3849 +//line mysql_sql.y:3856 { yyLOCAL = []*tree.AlterColumnOrder{yyDollar[1].alterColumnOrderUnion()} } @@ -15304,7 +15306,7 @@ yydefault: case 520: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.AlterColumnOrder -//line mysql_sql.y:3853 +//line mysql_sql.y:3860 { yyLOCAL = append(yyDollar[1].alterColumnOrderByUnion(), yyDollar[3].alterColumnOrderUnion()) } @@ -15312,7 +15314,7 @@ yydefault: case 521: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AlterColumnOrder -//line mysql_sql.y:3859 +//line mysql_sql.y:3866 { var column = yyDollar[1].unresolvedNameUnion() var direction = yyDollar[2].directionUnion() @@ -15322,7 +15324,7 @@ yydefault: case 522: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3867 +//line mysql_sql.y:3874 { var name = yyDollar[1].unresolvedObjectNameUnion() yyLOCAL = tree.NewAlterOptionTableName(name) @@ -15331,7 +15333,7 @@ yydefault: case 523: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3874 +//line mysql_sql.y:3881 { var dropType = tree.AlterTableDropIndex var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) @@ -15341,7 +15343,7 @@ yydefault: case 524: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3880 +//line mysql_sql.y:3887 { var dropType = tree.AlterTableDropKey var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) @@ -15351,7 +15353,7 @@ yydefault: case 525: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3886 +//line mysql_sql.y:3893 { var dropType = tree.AlterTableDropColumn var name = tree.Identifier(yyDollar[1].cstrUnion().Compare()) @@ -15361,7 +15363,7 @@ yydefault: case 526: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3892 +//line mysql_sql.y:3899 { var dropType = tree.AlterTableDropColumn var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) @@ -15371,7 +15373,7 @@ yydefault: case 527: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3898 +//line mysql_sql.y:3905 { var dropType = tree.AlterTableDropForeignKey var name = tree.Identifier(yyDollar[3].cstrUnion().Compare()) @@ -15382,7 +15384,7 @@ yydefault: case 528: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3905 +//line mysql_sql.y:3912 { yyLOCAL = &tree.AlterOptionDrop{ Typ: tree.AlterTableDropForeignKey, @@ -15393,7 +15395,7 @@ yydefault: case 529: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3912 +//line mysql_sql.y:3919 { var dropType = tree.AlterTableDropPrimaryKey var name = tree.Identifier("") @@ -15403,7 +15405,7 @@ yydefault: case 530: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3920 +//line mysql_sql.y:3927 { var indexName = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var visibility = yyDollar[3].indexVisibilityUnion() @@ -15413,7 +15415,7 @@ yydefault: case 531: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3926 +//line mysql_sql.y:3933 { val := int64(yyDollar[6].item.(int64)) if val <= 0 { @@ -15429,7 +15431,7 @@ yydefault: case 532: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3938 +//line mysql_sql.y:3945 { var keyType = tree.INDEX_TYPE_HNSW var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) @@ -15439,7 +15441,7 @@ yydefault: case 533: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3944 +//line mysql_sql.y:3951 { var checkType = yyDollar[1].str var enforce = yyDollar[3].boolValUnion() @@ -15449,7 +15451,7 @@ yydefault: case 534: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3950 +//line mysql_sql.y:3957 { var checkType = yyDollar[1].str var enforce = yyDollar[3].boolValUnion() @@ -15459,7 +15461,7 @@ yydefault: case 535: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.VisibleType -//line mysql_sql.y:3958 +//line mysql_sql.y:3965 { yyLOCAL = tree.VISIBLE_TYPE_VISIBLE } @@ -15467,7 +15469,7 @@ yydefault: case 536: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.VisibleType -//line mysql_sql.y:3962 +//line mysql_sql.y:3969 { yyLOCAL = tree.VISIBLE_TYPE_INVISIBLE } @@ -15475,7 +15477,7 @@ yydefault: case 537: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3969 +//line mysql_sql.y:3976 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].exprUnion() @@ -15495,7 +15497,7 @@ yydefault: case 538: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3987 +//line mysql_sql.y:3994 { var accountName = "" var dbName = yyDollar[3].str @@ -15514,7 +15516,7 @@ yydefault: case 539: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4002 +//line mysql_sql.y:4009 { var accountName = "" var dbName = yyDollar[3].str @@ -15533,7 +15535,7 @@ yydefault: case 540: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4017 +//line mysql_sql.y:4024 { var accountName = yyDollar[4].str var dbName = "" @@ -15552,7 +15554,7 @@ yydefault: case 541: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4032 +//line mysql_sql.y:4039 { assignments := []*tree.VarAssignmentExpr{ { @@ -15568,7 +15570,7 @@ yydefault: case 542: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AlterAccountAuthOption -//line mysql_sql.y:4045 +//line mysql_sql.y:4052 { yyLOCAL = tree.AlterAccountAuthOption{ Exist: false, @@ -15578,7 +15580,7 @@ yydefault: case 543: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterAccountAuthOption -//line mysql_sql.y:4051 +//line mysql_sql.y:4058 { yyLOCAL = tree.AlterAccountAuthOption{ Exist: true, @@ -15591,7 +15593,7 @@ yydefault: case 544: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4062 +//line mysql_sql.y:4069 { // Create temporary variables with meaningful names ifExists := yyDollar[3].boolValUnion() @@ -15607,7 +15609,7 @@ yydefault: case 545: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4074 +//line mysql_sql.y:4081 { ifExists := yyDollar[3].boolValUnion() var Username = yyDollar[4].usernameRecordUnion().Username @@ -15622,7 +15624,7 @@ yydefault: case 546: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4085 +//line mysql_sql.y:4092 { ifExists := yyDollar[3].boolValUnion() var Username = yyDollar[4].usernameRecordUnion().Username @@ -15637,7 +15639,7 @@ yydefault: case 547: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:4098 +//line mysql_sql.y:4105 { yyLOCAL = nil } @@ -15645,7 +15647,7 @@ yydefault: case 548: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:4102 +//line mysql_sql.y:4109 { var UserName = yyDollar[3].str yyLOCAL = tree.NewRole( @@ -15656,7 +15658,7 @@ yydefault: case 549: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4110 +//line mysql_sql.y:4117 { yyLOCAL = false } @@ -15664,7 +15666,7 @@ yydefault: case 550: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4114 +//line mysql_sql.y:4121 { yyLOCAL = true } @@ -15672,7 +15674,7 @@ yydefault: case 551: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4119 +//line mysql_sql.y:4126 { yyLOCAL = nil } @@ -15680,7 +15682,7 @@ yydefault: case 552: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4123 +//line mysql_sql.y:4130 { yyLOCAL = yyDollar[1].userMiscOptionUnion() } @@ -15688,7 +15690,7 @@ yydefault: case 553: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4139 +//line mysql_sql.y:4146 { yyLOCAL = tree.NewUserMiscOptionAccountUnlock() } @@ -15696,7 +15698,7 @@ yydefault: case 554: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4143 +//line mysql_sql.y:4150 { yyLOCAL = tree.NewUserMiscOptionAccountLock() } @@ -15704,7 +15706,7 @@ yydefault: case 555: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4147 +//line mysql_sql.y:4154 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireNone() } @@ -15712,7 +15714,7 @@ yydefault: case 556: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4151 +//line mysql_sql.y:4158 { var Value = yyDollar[3].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordExpireInterval( @@ -15723,7 +15725,7 @@ yydefault: case 557: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4158 +//line mysql_sql.y:4165 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireNever() } @@ -15731,7 +15733,7 @@ yydefault: case 558: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4162 +//line mysql_sql.y:4169 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireDefault() } @@ -15739,7 +15741,7 @@ yydefault: case 559: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4166 +//line mysql_sql.y:4173 { yyLOCAL = tree.NewUserMiscOptionPasswordHistoryDefault() } @@ -15747,7 +15749,7 @@ yydefault: case 560: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4170 +//line mysql_sql.y:4177 { var Value = yyDollar[3].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordHistoryCount( @@ -15758,7 +15760,7 @@ yydefault: case 561: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4177 +//line mysql_sql.y:4184 { yyLOCAL = tree.NewUserMiscOptionPasswordReuseIntervalDefault() } @@ -15766,7 +15768,7 @@ yydefault: case 562: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4181 +//line mysql_sql.y:4188 { var Value = yyDollar[4].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordReuseIntervalCount( @@ -15777,7 +15779,7 @@ yydefault: case 563: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4188 +//line mysql_sql.y:4195 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentNone() } @@ -15785,7 +15787,7 @@ yydefault: case 564: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4192 +//line mysql_sql.y:4199 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentDefault() } @@ -15793,7 +15795,7 @@ yydefault: case 565: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4196 +//line mysql_sql.y:4203 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentOptional() } @@ -15801,7 +15803,7 @@ yydefault: case 566: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4200 +//line mysql_sql.y:4207 { var Value = yyDollar[2].item.(int64) yyLOCAL = tree.NewUserMiscOptionFailedLoginAttempts( @@ -15812,7 +15814,7 @@ yydefault: case 567: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4207 +//line mysql_sql.y:4214 { var Value = yyDollar[2].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordLockTimeCount( @@ -15823,27 +15825,27 @@ yydefault: case 568: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4214 +//line mysql_sql.y:4221 { yyLOCAL = tree.NewUserMiscOptionPasswordLockTimeUnbounded() } yyVAL.union = yyLOCAL case 569: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:4220 +//line mysql_sql.y:4227 { yyVAL.item = nil } case 570: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4225 +//line mysql_sql.y:4232 { yyVAL.item = nil } case 613: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4277 +//line mysql_sql.y:4284 { yyLOCAL = &tree.ShowSQLTasks{} } @@ -15851,7 +15853,7 @@ yydefault: case 614: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4283 +//line mysql_sql.y:4290 { stmt := &tree.ShowSQLTaskRuns{} if yyDollar[4].str != "" { @@ -15867,20 +15869,20 @@ yydefault: yyVAL.union = yyLOCAL case 615: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4297 +//line mysql_sql.y:4304 { yyVAL.str = "" } case 616: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4301 +//line mysql_sql.y:4308 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } case 617: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4306 +//line mysql_sql.y:4313 { yyLOCAL = -1 } @@ -15888,7 +15890,7 @@ yydefault: case 618: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4310 +//line mysql_sql.y:4317 { yyLOCAL = sqlTaskInt64(yyDollar[2].item) } @@ -15896,7 +15898,7 @@ yydefault: case 619: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4316 +//line mysql_sql.y:4323 { yyLOCAL = &tree.ShowLogserviceReplicas{} } @@ -15904,7 +15906,7 @@ yydefault: case 620: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4322 +//line mysql_sql.y:4329 { yyLOCAL = &tree.ShowLogserviceStores{} } @@ -15912,7 +15914,7 @@ yydefault: case 621: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4328 +//line mysql_sql.y:4335 { yyLOCAL = &tree.ShowLogserviceSettings{} } @@ -15920,7 +15922,7 @@ yydefault: case 622: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4334 +//line mysql_sql.y:4341 { yyLOCAL = &tree.ShowRules{ RoleName: yyDollar[5].cstrUnion().Compare(), @@ -15930,7 +15932,7 @@ yydefault: case 623: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4342 +//line mysql_sql.y:4349 { yyLOCAL = &tree.ShowCollation{ Like: yyDollar[3].comparisionExprUnion(), @@ -15941,7 +15943,7 @@ yydefault: case 624: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4351 +//line mysql_sql.y:4358 { yyLOCAL = &tree.ShowStages{ Like: yyDollar[3].comparisionExprUnion(), @@ -15951,7 +15953,7 @@ yydefault: case 625: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4359 +//line mysql_sql.y:4366 { yyLOCAL = &tree.ShowSnapShots{ Where: yyDollar[3].whereUnion(), @@ -15961,7 +15963,7 @@ yydefault: case 626: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4367 +//line mysql_sql.y:4374 { yyLOCAL = &tree.ShowPitr{ Where: yyDollar[3].whereUnion(), @@ -15971,7 +15973,7 @@ yydefault: case 627: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4375 +//line mysql_sql.y:4382 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELACCOUNT, @@ -15981,7 +15983,7 @@ yydefault: case 628: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4381 +//line mysql_sql.y:4388 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELDATABASE, @@ -15992,7 +15994,7 @@ yydefault: case 629: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4388 +//line mysql_sql.y:4395 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELTABLE, @@ -16004,7 +16006,7 @@ yydefault: case 630: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4396 +//line mysql_sql.y:4403 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELACCOUNT, @@ -16015,7 +16017,7 @@ yydefault: case 631: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4405 +//line mysql_sql.y:4412 { yyLOCAL = &tree.ShowGrants{ShowGrantType: tree.GrantForUser} } @@ -16023,7 +16025,7 @@ yydefault: case 632: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4409 +//line mysql_sql.y:4416 { yyLOCAL = &tree.ShowGrants{Username: yyDollar[4].usernameRecordUnion().Username, Hostname: yyDollar[4].usernameRecordUnion().Hostname, Roles: yyDollar[5].rolesUnion(), ShowGrantType: tree.GrantForUser} } @@ -16031,7 +16033,7 @@ yydefault: case 633: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4413 +//line mysql_sql.y:4420 { s := &tree.ShowGrants{} roles := []*tree.Role{ @@ -16045,7 +16047,7 @@ yydefault: case 634: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:4424 +//line mysql_sql.y:4431 { yyLOCAL = nil } @@ -16053,7 +16055,7 @@ yydefault: case 635: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:4428 +//line mysql_sql.y:4435 { yyLOCAL = yyDollar[2].rolesUnion() } @@ -16061,25 +16063,25 @@ yydefault: case 636: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4434 +//line mysql_sql.y:4441 { yyLOCAL = &tree.ShowTableStatus{DbName: yyDollar[5].str, Like: yyDollar[6].comparisionExprUnion(), Where: yyDollar[7].whereUnion()} } yyVAL.union = yyLOCAL case 637: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4439 +//line mysql_sql.y:4446 { } case 639: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4443 +//line mysql_sql.y:4450 { } case 641: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4448 +//line mysql_sql.y:4455 { yyLOCAL = &tree.ShowFunctionOrProcedureStatus{ Like: yyDollar[4].comparisionExprUnion(), @@ -16091,7 +16093,7 @@ yydefault: case 642: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4458 +//line mysql_sql.y:4465 { yyLOCAL = &tree.ShowFunctionOrProcedureStatus{ Like: yyDollar[4].comparisionExprUnion(), @@ -16103,7 +16105,7 @@ yydefault: case 643: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4468 +//line mysql_sql.y:4475 { yyLOCAL = &tree.ShowRolesStmt{ Like: yyDollar[3].comparisionExprUnion(), @@ -16113,7 +16115,7 @@ yydefault: case 644: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4476 +//line mysql_sql.y:4483 { yyLOCAL = &tree.ShowNodeList{} } @@ -16121,7 +16123,7 @@ yydefault: case 645: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4482 +//line mysql_sql.y:4489 { yyLOCAL = &tree.ShowLocks{} } @@ -16129,7 +16131,7 @@ yydefault: case 646: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4488 +//line mysql_sql.y:4495 { yyLOCAL = &tree.ShowTableNumber{DbName: yyDollar[4].str} } @@ -16137,7 +16139,7 @@ yydefault: case 647: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4494 +//line mysql_sql.y:4501 { yyLOCAL = &tree.ShowColumnNumber{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } @@ -16145,7 +16147,7 @@ yydefault: case 648: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4500 +//line mysql_sql.y:4507 { yyLOCAL = &tree.ShowTableValues{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } @@ -16153,7 +16155,7 @@ yydefault: case 649: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4506 +//line mysql_sql.y:4513 { yyLOCAL = &tree.ShowTableSize{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } @@ -16161,7 +16163,7 @@ yydefault: case 650: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4512 +//line mysql_sql.y:4519 { s := yyDollar[2].statementUnion().(*tree.ShowTarget) s.Like = yyDollar[3].comparisionExprUnion() @@ -16172,7 +16174,7 @@ yydefault: case 651: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4521 +//line mysql_sql.y:4528 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowConfig} } @@ -16180,7 +16182,7 @@ yydefault: case 652: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4525 +//line mysql_sql.y:4532 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowCharset} } @@ -16188,7 +16190,7 @@ yydefault: case 653: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4529 +//line mysql_sql.y:4536 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowEngines} } @@ -16196,7 +16198,7 @@ yydefault: case 654: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4533 +//line mysql_sql.y:4540 { yyLOCAL = &tree.ShowTarget{DbName: yyDollar[3].str, Type: tree.ShowTriggers} } @@ -16204,7 +16206,7 @@ yydefault: case 655: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4537 +//line mysql_sql.y:4544 { yyLOCAL = &tree.ShowTarget{DbName: yyDollar[3].str, Type: tree.ShowEvents} } @@ -16212,7 +16214,7 @@ yydefault: case 656: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4541 +//line mysql_sql.y:4548 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowPlugins} } @@ -16220,7 +16222,7 @@ yydefault: case 657: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4545 +//line mysql_sql.y:4552 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowPrivileges} } @@ -16228,7 +16230,7 @@ yydefault: case 658: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4549 +//line mysql_sql.y:4556 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowProfiles} } @@ -16236,7 +16238,7 @@ yydefault: case 659: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4555 +//line mysql_sql.y:4562 { yyLOCAL = &tree.ShowIndex{ TableName: yyDollar[4].unresolvedObjectNameUnion(), @@ -16247,18 +16249,18 @@ yydefault: yyVAL.union = yyLOCAL case 660: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4564 +//line mysql_sql.y:4571 { } case 661: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4566 +//line mysql_sql.y:4573 { } case 665: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4575 +//line mysql_sql.y:4582 { yyLOCAL = &tree.ShowVariables{ Global: yyDollar[2].boolValUnion(), @@ -16270,7 +16272,7 @@ yydefault: case 666: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4585 +//line mysql_sql.y:4592 { yyLOCAL = &tree.ShowStatus{ Global: yyDollar[2].boolValUnion(), @@ -16282,7 +16284,7 @@ yydefault: case 667: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4594 +//line mysql_sql.y:4601 { yyLOCAL = false } @@ -16290,7 +16292,7 @@ yydefault: case 668: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4598 +//line mysql_sql.y:4605 { yyLOCAL = true } @@ -16298,7 +16300,7 @@ yydefault: case 669: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4602 +//line mysql_sql.y:4609 { yyLOCAL = false } @@ -16306,7 +16308,7 @@ yydefault: case 670: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4608 +//line mysql_sql.y:4615 { yyLOCAL = &tree.ShowWarnings{} } @@ -16314,7 +16316,7 @@ yydefault: case 671: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4614 +//line mysql_sql.y:4621 { yyLOCAL = &tree.ShowErrors{} } @@ -16322,7 +16324,7 @@ yydefault: case 672: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4620 +//line mysql_sql.y:4627 { yyLOCAL = &tree.ShowProcessList{Full: yyDollar[2].fullOptUnion()} } @@ -16330,7 +16332,7 @@ yydefault: case 673: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4626 +//line mysql_sql.y:4633 { yyLOCAL = &tree.ShowSequences{ DBName: yyDollar[3].str, @@ -16341,7 +16343,7 @@ yydefault: case 674: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4635 +//line mysql_sql.y:4642 { yyLOCAL = &tree.ShowTables{ Open: false, @@ -16356,7 +16358,7 @@ yydefault: case 675: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4646 +//line mysql_sql.y:4653 { yyLOCAL = &tree.ShowTables{ Open: true, @@ -16370,7 +16372,7 @@ yydefault: case 676: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4658 +//line mysql_sql.y:4665 { yyLOCAL = &tree.ShowDatabases{ Like: yyDollar[3].comparisionExprUnion(), @@ -16382,7 +16384,7 @@ yydefault: case 677: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4666 +//line mysql_sql.y:4673 { yyLOCAL = &tree.ShowDatabases{Like: yyDollar[3].comparisionExprUnion(), Where: yyDollar[4].whereUnion()} } @@ -16390,7 +16392,7 @@ yydefault: case 678: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4672 +//line mysql_sql.y:4679 { yyLOCAL = &tree.ShowColumns{ Ext: false, @@ -16406,7 +16408,7 @@ yydefault: case 679: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4684 +//line mysql_sql.y:4691 { yyLOCAL = &tree.ShowColumns{ Ext: true, @@ -16422,7 +16424,7 @@ yydefault: case 680: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4698 +//line mysql_sql.y:4705 { yyLOCAL = &tree.ShowAccounts{Like: yyDollar[3].comparisionExprUnion()} } @@ -16430,7 +16432,7 @@ yydefault: case 681: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4704 +//line mysql_sql.y:4711 { yyLOCAL = &tree.ShowPublications{Like: yyDollar[3].comparisionExprUnion()} } @@ -16438,7 +16440,7 @@ yydefault: case 682: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4710 +//line mysql_sql.y:4717 { yyLOCAL = &tree.ShowAccountUpgrade{} } @@ -16446,7 +16448,7 @@ yydefault: case 683: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4717 +//line mysql_sql.y:4724 { yyLOCAL = &tree.ShowSubscriptions{Like: yyDollar[3].comparisionExprUnion()} } @@ -16454,7 +16456,7 @@ yydefault: case 684: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4721 +//line mysql_sql.y:4728 { yyLOCAL = &tree.ShowSubscriptions{All: true, Like: yyDollar[4].comparisionExprUnion()} } @@ -16462,7 +16464,7 @@ yydefault: case 685: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4726 +//line mysql_sql.y:4733 { yyLOCAL = nil } @@ -16470,7 +16472,7 @@ yydefault: case 686: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4730 +//line mysql_sql.y:4737 { yyLOCAL = tree.NewComparisonExpr(tree.LIKE, nil, yyDollar[2].exprUnion()) } @@ -16478,27 +16480,27 @@ yydefault: case 687: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4734 +//line mysql_sql.y:4741 { yyLOCAL = tree.NewComparisonExpr(tree.ILIKE, nil, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL case 688: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4739 +//line mysql_sql.y:4746 { yyVAL.str = "" } case 689: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4743 +//line mysql_sql.y:4750 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } case 690: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4749 +//line mysql_sql.y:4756 { yyLOCAL = yyDollar[2].unresolvedObjectNameUnion() } @@ -16506,7 +16508,7 @@ yydefault: case 695: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4764 +//line mysql_sql.y:4771 { yyLOCAL = false } @@ -16514,7 +16516,7 @@ yydefault: case 696: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4768 +//line mysql_sql.y:4775 { yyLOCAL = true } @@ -16522,7 +16524,7 @@ yydefault: case 697: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4774 +//line mysql_sql.y:4781 { yyLOCAL = &tree.ShowCreateTable{ Name: yyDollar[4].unresolvedObjectNameUnion(), @@ -16533,7 +16535,7 @@ yydefault: case 698: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4782 +//line mysql_sql.y:4789 { yyLOCAL = &tree.ShowCreateView{ Name: yyDollar[4].unresolvedObjectNameUnion(), @@ -16544,7 +16546,7 @@ yydefault: case 699: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4789 +//line mysql_sql.y:4796 { yyLOCAL = &tree.ShowCreateDatabase{ IfNotExists: yyDollar[4].ifNotExistsUnion(), @@ -16556,7 +16558,7 @@ yydefault: case 700: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4797 +//line mysql_sql.y:4804 { yyLOCAL = &tree.ShowCreatePublications{Name: yyDollar[4].str} } @@ -16564,7 +16566,7 @@ yydefault: case 701: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4803 +//line mysql_sql.y:4810 { yyLOCAL = &tree.ShowBackendServers{} } @@ -16572,7 +16574,7 @@ yydefault: case 702: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4809 +//line mysql_sql.y:4816 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(tblName) @@ -16581,7 +16583,7 @@ yydefault: case 703: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4814 +//line mysql_sql.y:4821 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16590,14 +16592,14 @@ yydefault: yyVAL.union = yyLOCAL case 704: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4822 +//line mysql_sql.y:4829 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } case 705: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4828 +//line mysql_sql.y:4835 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(tblName) @@ -16606,7 +16608,7 @@ yydefault: case 706: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4833 +//line mysql_sql.y:4840 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16616,7 +16618,7 @@ yydefault: case 707: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4839 +//line mysql_sql.y:4846 { yyLOCAL = tree.NewUnresolvedObjectName(yyDollar[1].cstrUnion().Compare(), yyDollar[3].cstrUnion().Compare(), yyDollar[5].cstrUnion().Compare()) } @@ -16624,7 +16626,7 @@ yydefault: case 708: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4845 +//line mysql_sql.y:4852 { yyLOCAL = tree.NewTruncateTable(yyDollar[2].tableNameUnion()) } @@ -16632,7 +16634,7 @@ yydefault: case 709: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4849 +//line mysql_sql.y:4856 { yyLOCAL = tree.NewTruncateTable(yyDollar[3].tableNameUnion()) } @@ -16640,7 +16642,7 @@ yydefault: case 729: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4878 +//line mysql_sql.y:4885 { yyLOCAL = &tree.DropSQLTask{ IfExists: yyDollar[3].boolValUnion(), @@ -16651,7 +16653,7 @@ yydefault: case 730: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4887 +//line mysql_sql.y:4894 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].tableNamesUnion() @@ -16661,7 +16663,7 @@ yydefault: case 731: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4895 +//line mysql_sql.y:4902 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].exprUnion() @@ -16671,7 +16673,7 @@ yydefault: case 732: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4903 +//line mysql_sql.y:4910 { var ifExists = yyDollar[3].boolValUnion() var users = yyDollar[4].usersUnion() @@ -16681,7 +16683,7 @@ yydefault: case 733: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:4911 +//line mysql_sql.y:4918 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } @@ -16689,7 +16691,7 @@ yydefault: case 734: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:4915 +//line mysql_sql.y:4922 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } @@ -16697,7 +16699,7 @@ yydefault: case 735: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:4921 +//line mysql_sql.y:4928 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -16712,7 +16714,7 @@ yydefault: case 736: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4934 +//line mysql_sql.y:4941 { var ifExists = yyDollar[3].boolValUnion() var roles = yyDollar[4].rolesUnion() @@ -16722,7 +16724,7 @@ yydefault: case 737: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4942 +//line mysql_sql.y:4949 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var tableName = yyDollar[6].tableNameUnion() @@ -16733,7 +16735,7 @@ yydefault: case 738: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4951 +//line mysql_sql.y:4958 { var ifExists = yyDollar[4].boolValUnion() var names = yyDollar[5].tableNamesUnion() @@ -16743,7 +16745,7 @@ yydefault: case 739: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4957 +//line mysql_sql.y:4964 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() @@ -16753,7 +16755,7 @@ yydefault: case 740: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4965 +//line mysql_sql.y:4972 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() @@ -16763,7 +16765,7 @@ yydefault: case 741: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4973 +//line mysql_sql.y:4980 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() @@ -16773,7 +16775,7 @@ yydefault: case 742: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4981 +//line mysql_sql.y:4988 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var ifExists = yyDollar[3].boolValUnion() @@ -16783,7 +16785,7 @@ yydefault: case 743: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4987 +//line mysql_sql.y:4994 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var ifExists = yyDollar[3].boolValUnion() @@ -16793,7 +16795,7 @@ yydefault: case 744: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4995 +//line mysql_sql.y:5002 { yyLOCAL = tree.NewDeallocate(tree.Identifier(yyDollar[3].str), true) } @@ -16801,7 +16803,7 @@ yydefault: case 745: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5001 +//line mysql_sql.y:5008 { var name = yyDollar[3].functionNameUnion() var args = yyDollar[5].funcArgsUnion() @@ -16811,7 +16813,7 @@ yydefault: case 746: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5009 +//line mysql_sql.y:5016 { var name = yyDollar[3].procNameUnion() var ifExists = false @@ -16821,7 +16823,7 @@ yydefault: case 747: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5015 +//line mysql_sql.y:5022 { var name = yyDollar[5].procNameUnion() var ifExists = true @@ -16831,7 +16833,7 @@ yydefault: case 750: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5025 +//line mysql_sql.y:5032 { yyDollar[2].statementUnion().(*tree.Delete).With = yyDollar[1].withClauseUnion() yyLOCAL = yyDollar[2].statementUnion() @@ -16840,7 +16842,7 @@ yydefault: case 751: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5030 +//line mysql_sql.y:5037 { yyDollar[2].statementUnion().(*tree.Delete).With = yyDollar[1].withClauseUnion() yyLOCAL = yyDollar[2].statementUnion() @@ -16849,7 +16851,7 @@ yydefault: case 752: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5037 +//line mysql_sql.y:5044 { // Single-Table Syntax t := &tree.AliasedTableExpr{ @@ -16869,7 +16871,7 @@ yydefault: case 753: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5053 +//line mysql_sql.y:5060 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16882,7 +16884,7 @@ yydefault: case 754: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5066 +//line mysql_sql.y:5073 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16895,7 +16897,7 @@ yydefault: case 755: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:5077 +//line mysql_sql.y:5084 { yyLOCAL = tree.TableExprs{yyDollar[1].tableNameUnion()} } @@ -16903,7 +16905,7 @@ yydefault: case 756: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:5081 +//line mysql_sql.y:5088 { yyLOCAL = append(yyDollar[1].tableExprsUnion(), yyDollar[3].tableNameUnion()) } @@ -16911,7 +16913,7 @@ yydefault: case 757: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:5087 +//line mysql_sql.y:5094 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} @@ -16921,7 +16923,7 @@ yydefault: case 758: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:5093 +//line mysql_sql.y:5100 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16931,33 +16933,33 @@ yydefault: yyVAL.union = yyLOCAL case 759: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5102 +//line mysql_sql.y:5109 { } case 760: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:5104 +//line mysql_sql.y:5111 { } case 761: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5107 +//line mysql_sql.y:5114 { } case 766: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5116 +//line mysql_sql.y:5123 { } case 768: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5120 +//line mysql_sql.y:5127 { } case 770: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5125 +//line mysql_sql.y:5132 { rep := yyDollar[4].replaceUnion() rep.Table = yyDollar[2].tableExprUnion() @@ -16968,7 +16970,7 @@ yydefault: case 771: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5134 +//line mysql_sql.y:5141 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16979,7 +16981,7 @@ yydefault: case 772: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5141 +//line mysql_sql.y:5148 { yyLOCAL = &tree.Replace{ Rows: yyDollar[1].selectUnion(), @@ -16989,7 +16991,7 @@ yydefault: case 773: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5147 +//line mysql_sql.y:5154 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -17001,7 +17003,7 @@ yydefault: case 774: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5155 +//line mysql_sql.y:5162 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -17012,7 +17014,7 @@ yydefault: case 775: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5162 +//line mysql_sql.y:5169 { yyLOCAL = &tree.Replace{ Columns: yyDollar[2].identifierListUnion(), @@ -17023,7 +17025,7 @@ yydefault: case 776: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5169 +//line mysql_sql.y:5176 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of replace can not be empty") @@ -17045,7 +17047,7 @@ yydefault: case 777: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5189 +//line mysql_sql.y:5196 { ins := yyDollar[4].insertUnion() ins.Table = yyDollar[2].tableExprUnion() @@ -17057,7 +17059,7 @@ yydefault: case 778: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5197 +//line mysql_sql.y:5204 { ins := yyDollar[5].insertUnion() ins.Table = yyDollar[3].tableExprUnion() @@ -17069,7 +17071,7 @@ yydefault: case 779: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5207 +//line mysql_sql.y:5214 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } @@ -17077,7 +17079,7 @@ yydefault: case 780: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5211 +//line mysql_sql.y:5218 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } @@ -17085,7 +17087,7 @@ yydefault: case 781: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5217 +//line mysql_sql.y:5224 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -17096,7 +17098,7 @@ yydefault: case 782: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5224 +//line mysql_sql.y:5231 { yyLOCAL = &tree.Insert{ Rows: yyDollar[1].selectUnion(), @@ -17106,7 +17108,7 @@ yydefault: case 783: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5230 +//line mysql_sql.y:5237 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -17118,7 +17120,7 @@ yydefault: case 784: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5238 +//line mysql_sql.y:5245 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -17129,7 +17131,7 @@ yydefault: case 785: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5245 +//line mysql_sql.y:5252 { yyLOCAL = &tree.Insert{ Columns: yyDollar[2].identifierListUnion(), @@ -17140,7 +17142,7 @@ yydefault: case 786: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5252 +//line mysql_sql.y:5259 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of insert can not be empty") @@ -17162,7 +17164,7 @@ yydefault: case 787: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5271 +//line mysql_sql.y:5278 { yyLOCAL = []*tree.UpdateExpr{} } @@ -17170,7 +17172,7 @@ yydefault: case 788: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5275 +//line mysql_sql.y:5282 { yyLOCAL = yyDollar[5].updateExprsUnion() } @@ -17178,7 +17180,7 @@ yydefault: case 789: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5279 +//line mysql_sql.y:5286 { yyLOCAL = []*tree.UpdateExpr{nil} } @@ -17186,7 +17188,7 @@ yydefault: case 790: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5284 +//line mysql_sql.y:5291 { yyLOCAL = nil } @@ -17194,7 +17196,7 @@ yydefault: case 791: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5288 +//line mysql_sql.y:5295 { yyLOCAL = []*tree.Assignment{yyDollar[1].assignmentUnion()} } @@ -17202,7 +17204,7 @@ yydefault: case 792: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5292 +//line mysql_sql.y:5299 { yyLOCAL = append(yyDollar[1].assignmentsUnion(), yyDollar[3].assignmentUnion()) } @@ -17210,7 +17212,7 @@ yydefault: case 793: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Assignment -//line mysql_sql.y:5298 +//line mysql_sql.y:5305 { yyLOCAL = &tree.Assignment{ Column: tree.Identifier(yyDollar[1].str), @@ -17221,7 +17223,7 @@ yydefault: case 794: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5307 +//line mysql_sql.y:5314 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } @@ -17229,27 +17231,27 @@ yydefault: case 795: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5311 +//line mysql_sql.y:5318 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL case 796: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:5317 +//line mysql_sql.y:5324 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } case 797: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:5321 +//line mysql_sql.y:5328 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) } case 798: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5327 +//line mysql_sql.y:5334 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } @@ -17257,7 +17259,7 @@ yydefault: case 799: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5331 +//line mysql_sql.y:5338 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } @@ -17265,20 +17267,20 @@ yydefault: case 800: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5337 +//line mysql_sql.y:5344 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL case 801: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5342 +//line mysql_sql.y:5349 { } case 803: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5346 +//line mysql_sql.y:5353 { yyLOCAL = nil } @@ -17286,7 +17288,7 @@ yydefault: case 805: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5353 +//line mysql_sql.y:5360 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } @@ -17294,7 +17296,7 @@ yydefault: case 806: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5357 +//line mysql_sql.y:5364 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } @@ -17302,7 +17304,7 @@ yydefault: case 808: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5364 +//line mysql_sql.y:5371 { yyLOCAL = &tree.DefaultVal{} } @@ -17310,7 +17312,7 @@ yydefault: case 809: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5369 +//line mysql_sql.y:5376 { yyLOCAL = nil } @@ -17318,7 +17320,7 @@ yydefault: case 810: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5373 +//line mysql_sql.y:5380 { yyLOCAL = yyDollar[3].identifierListUnion() } @@ -17326,7 +17328,7 @@ yydefault: case 811: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5379 +//line mysql_sql.y:5386 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } @@ -17334,7 +17336,7 @@ yydefault: case 812: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5383 +//line mysql_sql.y:5390 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } @@ -17342,7 +17344,7 @@ yydefault: case 813: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5389 +//line mysql_sql.y:5396 { yyLOCAL = yyDollar[2].tableNameUnion() } @@ -17350,7 +17352,7 @@ yydefault: case 814: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5393 +//line mysql_sql.y:5400 { yyLOCAL = yyDollar[1].tableNameUnion() } @@ -17358,7 +17360,7 @@ yydefault: case 815: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5398 +//line mysql_sql.y:5405 { yyLOCAL = nil } @@ -17366,7 +17368,7 @@ yydefault: case 816: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5402 +//line mysql_sql.y:5409 { yyLOCAL = &tree.ExportParam{ Outfile: true, @@ -17382,7 +17384,7 @@ yydefault: case 817: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5415 +//line mysql_sql.y:5422 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -17397,7 +17399,7 @@ yydefault: case 818: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5426 +//line mysql_sql.y:5433 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -17412,7 +17414,7 @@ yydefault: case 819: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5437 +//line mysql_sql.y:5444 { str := yyDollar[7].str if str != "\\" && len(str) > 1 { @@ -17438,7 +17440,7 @@ yydefault: case 820: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5459 +//line mysql_sql.y:5466 { str := yyDollar[4].str if str != "\\" && len(str) > 1 { @@ -17464,7 +17466,7 @@ yydefault: case 821: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5482 +//line mysql_sql.y:5489 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -17476,7 +17478,7 @@ yydefault: case 822: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5490 +//line mysql_sql.y:5497 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -17488,7 +17490,7 @@ yydefault: case 823: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5499 +//line mysql_sql.y:5506 { yyLOCAL = true } @@ -17496,7 +17498,7 @@ yydefault: case 824: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5503 +//line mysql_sql.y:5510 { str := strings.ToLower(yyDollar[2].str) if str == "true" { @@ -17512,7 +17514,7 @@ yydefault: case 825: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5516 +//line mysql_sql.y:5523 { yyLOCAL = 0 } @@ -17520,7 +17522,7 @@ yydefault: case 826: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5520 +//line mysql_sql.y:5527 { yyLOCAL = yyDollar[2].item.(int64) } @@ -17528,7 +17530,7 @@ yydefault: case 827: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5525 +//line mysql_sql.y:5532 { yyLOCAL = []string{} } @@ -17536,7 +17538,7 @@ yydefault: case 828: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5529 +//line mysql_sql.y:5536 { yyLOCAL = yyDollar[3].strsUnion() } @@ -17544,7 +17546,7 @@ yydefault: case 829: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5536 +//line mysql_sql.y:5543 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].cstrUnion().Compare()) @@ -17553,7 +17555,7 @@ yydefault: case 830: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5541 +//line mysql_sql.y:5548 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } @@ -17561,7 +17563,7 @@ yydefault: case 832: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5548 +//line mysql_sql.y:5555 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion()} } @@ -17569,7 +17571,7 @@ yydefault: case 833: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5554 +//line mysql_sql.y:5561 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), RankOption: yyDollar[5].rankOptionUnion(), Ep: yyDollar[6].exportParmUnion(), SelectLockInfo: yyDollar[7].selectLockInfoUnion()} } @@ -17577,7 +17579,7 @@ yydefault: case 834: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5558 +//line mysql_sql.y:5565 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion()} } @@ -17585,7 +17587,7 @@ yydefault: case 835: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5562 +//line mysql_sql.y:5569 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), RankOption: yyDollar[5].rankOptionUnion(), Ep: yyDollar[6].exportParmUnion()} } @@ -17593,7 +17595,7 @@ yydefault: case 836: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5566 +//line mysql_sql.y:5573 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), TimeWindow: yyDollar[3].timeWindowUnion(), OrderBy: yyDollar[4].orderByUnion(), Limit: yyDollar[5].limitUnion(), RankOption: yyDollar[6].rankOptionUnion(), Ep: yyDollar[7].exportParmUnion(), SelectLockInfo: yyDollar[8].selectLockInfoUnion(), With: yyDollar[1].withClauseUnion()} } @@ -17601,7 +17603,7 @@ yydefault: case 837: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5570 +//line mysql_sql.y:5577 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } @@ -17609,7 +17611,7 @@ yydefault: case 838: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5574 +//line mysql_sql.y:5581 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), RankOption: yyDollar[5].rankOptionUnion(), Ep: yyDollar[6].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } @@ -17617,7 +17619,7 @@ yydefault: case 839: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5579 +//line mysql_sql.y:5586 { yyLOCAL = nil } @@ -17625,7 +17627,7 @@ yydefault: case 840: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5583 +//line mysql_sql.y:5590 { yyLOCAL = yyDollar[1].timeWindowUnion() } @@ -17633,7 +17635,7 @@ yydefault: case 841: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5589 +//line mysql_sql.y:5596 { yyLOCAL = &tree.TimeWindow{ Interval: yyDollar[1].timeIntervalUnion(), @@ -17645,7 +17647,7 @@ yydefault: case 842: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.Interval -//line mysql_sql.y:5599 +//line mysql_sql.y:5606 { str := fmt.Sprintf("%v", yyDollar[5].item) v, errStr := util.GetInt64(yyDollar[5].item) @@ -17663,7 +17665,7 @@ yydefault: case 843: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5614 +//line mysql_sql.y:5621 { yyLOCAL = nil } @@ -17671,7 +17673,7 @@ yydefault: case 844: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5618 +//line mysql_sql.y:5625 { str := fmt.Sprintf("%v", yyDollar[3].item) v, errStr := util.GetInt64(yyDollar[3].item) @@ -17688,7 +17690,7 @@ yydefault: case 845: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5632 +//line mysql_sql.y:5639 { yyLOCAL = nil } @@ -17696,7 +17698,7 @@ yydefault: case 846: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5636 +//line mysql_sql.y:5643 { yyLOCAL = &tree.Fill{ Mode: yyDollar[3].fillModeUnion(), @@ -17706,7 +17708,7 @@ yydefault: case 847: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5642 +//line mysql_sql.y:5649 { yyLOCAL = &tree.Fill{ Mode: tree.FillValue, @@ -17717,7 +17719,7 @@ yydefault: case 848: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5651 +//line mysql_sql.y:5658 { yyLOCAL = tree.FillPrev } @@ -17725,7 +17727,7 @@ yydefault: case 849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5655 +//line mysql_sql.y:5662 { yyLOCAL = tree.FillNext } @@ -17733,7 +17735,7 @@ yydefault: case 850: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5659 +//line mysql_sql.y:5666 { yyLOCAL = tree.FillNone } @@ -17741,7 +17743,7 @@ yydefault: case 851: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5663 +//line mysql_sql.y:5670 { yyLOCAL = tree.FillNull } @@ -17749,7 +17751,7 @@ yydefault: case 852: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5667 +//line mysql_sql.y:5674 { yyLOCAL = tree.FillLinear } @@ -17757,7 +17759,7 @@ yydefault: case 853: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5673 +//line mysql_sql.y:5680 { yyLOCAL = &tree.With{ IsRecursive: false, @@ -17768,7 +17770,7 @@ yydefault: case 854: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5680 +//line mysql_sql.y:5687 { yyLOCAL = &tree.With{ IsRecursive: true, @@ -17779,7 +17781,7 @@ yydefault: case 855: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5689 +//line mysql_sql.y:5696 { yyLOCAL = []*tree.CTE{yyDollar[1].cteUnion()} } @@ -17787,7 +17789,7 @@ yydefault: case 856: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5693 +//line mysql_sql.y:5700 { yyLOCAL = append(yyDollar[1].cteListUnion(), yyDollar[3].cteUnion()) } @@ -17795,7 +17797,7 @@ yydefault: case 857: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.CTE -//line mysql_sql.y:5699 +//line mysql_sql.y:5706 { yyLOCAL = &tree.CTE{ Name: &tree.AliasClause{Alias: tree.Identifier(yyDollar[1].cstrUnion().Compare()), Cols: yyDollar[2].identifierListUnion()}, @@ -17806,7 +17808,7 @@ yydefault: case 858: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5707 +//line mysql_sql.y:5714 { yyLOCAL = nil } @@ -17814,7 +17816,7 @@ yydefault: case 859: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5711 +//line mysql_sql.y:5718 { yyLOCAL = yyDollar[2].identifierListUnion() } @@ -17822,7 +17824,7 @@ yydefault: case 860: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5716 +//line mysql_sql.y:5723 { yyLOCAL = nil } @@ -17830,7 +17832,7 @@ yydefault: case 861: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5720 +//line mysql_sql.y:5727 { yyLOCAL = yyDollar[1].limitUnion() } @@ -17838,7 +17840,7 @@ yydefault: case 862: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5726 +//line mysql_sql.y:5733 { yyLOCAL = &tree.Limit{Count: yyDollar[2].exprUnion()} } @@ -17846,7 +17848,7 @@ yydefault: case 863: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5730 +//line mysql_sql.y:5737 { yyLOCAL = &tree.Limit{Offset: yyDollar[2].exprUnion(), Count: yyDollar[4].exprUnion()} } @@ -17854,7 +17856,7 @@ yydefault: case 864: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5734 +//line mysql_sql.y:5741 { yyLOCAL = &tree.Limit{Offset: yyDollar[4].exprUnion(), Count: yyDollar[2].exprUnion()} } @@ -17862,7 +17864,7 @@ yydefault: case 865: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.RankOption -//line mysql_sql.y:5739 +//line mysql_sql.y:5746 { yyLOCAL = nil } @@ -17870,7 +17872,7 @@ yydefault: case 866: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.RankOption -//line mysql_sql.y:5743 +//line mysql_sql.y:5750 { // Parse option strings to extract key=value pairs into a map optionMap := make(map[string]string) @@ -17908,7 +17910,7 @@ yydefault: case 867: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5778 +//line mysql_sql.y:5785 { yyLOCAL = nil } @@ -17916,7 +17918,7 @@ yydefault: case 868: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5782 +//line mysql_sql.y:5789 { yyLOCAL = yyDollar[1].orderByUnion() } @@ -17924,7 +17926,7 @@ yydefault: case 869: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5788 +//line mysql_sql.y:5795 { yyLOCAL = yyDollar[3].orderByUnion() } @@ -17932,7 +17934,7 @@ yydefault: case 870: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5794 +//line mysql_sql.y:5801 { yyLOCAL = tree.OrderBy{yyDollar[1].orderUnion()} } @@ -17940,7 +17942,7 @@ yydefault: case 871: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5798 +//line mysql_sql.y:5805 { yyLOCAL = append(yyDollar[1].orderByUnion(), yyDollar[3].orderUnion()) } @@ -17948,7 +17950,7 @@ yydefault: case 872: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Order -//line mysql_sql.y:5804 +//line mysql_sql.y:5811 { yyLOCAL = &tree.Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].directionUnion(), NullsPosition: yyDollar[3].nullsPositionUnion()} } @@ -17956,7 +17958,7 @@ yydefault: case 873: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5809 +//line mysql_sql.y:5816 { yyLOCAL = tree.DefaultDirection } @@ -17964,7 +17966,7 @@ yydefault: case 874: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5813 +//line mysql_sql.y:5820 { yyLOCAL = tree.Ascending } @@ -17972,7 +17974,7 @@ yydefault: case 875: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5817 +//line mysql_sql.y:5824 { yyLOCAL = tree.Descending } @@ -17980,7 +17982,7 @@ yydefault: case 876: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5822 +//line mysql_sql.y:5829 { yyLOCAL = tree.DefaultNullsPosition } @@ -17988,7 +17990,7 @@ yydefault: case 877: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5826 +//line mysql_sql.y:5833 { yyLOCAL = tree.NullsFirst } @@ -17996,7 +17998,7 @@ yydefault: case 878: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5830 +//line mysql_sql.y:5837 { yyLOCAL = tree.NullsLast } @@ -18004,7 +18006,7 @@ yydefault: case 879: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5835 +//line mysql_sql.y:5842 { yyLOCAL = nil } @@ -18012,7 +18014,7 @@ yydefault: case 880: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5839 +//line mysql_sql.y:5846 { yyLOCAL = &tree.SelectLockInfo{ LockType: tree.SelectLockForUpdate, @@ -18022,7 +18024,7 @@ yydefault: case 881: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5847 +//line mysql_sql.y:5854 { yyLOCAL = &tree.ParenSelect{Select: yyDollar[2].selectUnion()} } @@ -18030,7 +18032,7 @@ yydefault: case 882: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5851 +//line mysql_sql.y:5858 { yyLOCAL = &tree.ParenSelect{Select: &tree.Select{Select: yyDollar[2].selectStatementUnion()}} } @@ -18038,7 +18040,7 @@ yydefault: case 883: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5855 +//line mysql_sql.y:5862 { valuesStmt := yyDollar[2].statementUnion().(*tree.ValuesStatement) yyLOCAL = &tree.ParenSelect{Select: &tree.Select{ @@ -18054,7 +18056,7 @@ yydefault: case 884: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5869 +//line mysql_sql.y:5876 { yyLOCAL = yyDollar[1].selectStatementUnion() } @@ -18062,7 +18064,7 @@ yydefault: case 885: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5873 +//line mysql_sql.y:5880 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -18076,7 +18078,7 @@ yydefault: case 886: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5883 +//line mysql_sql.y:5890 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -18090,7 +18092,7 @@ yydefault: case 887: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5893 +//line mysql_sql.y:5900 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -18104,7 +18106,7 @@ yydefault: case 888: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5903 +//line mysql_sql.y:5910 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -18118,7 +18120,7 @@ yydefault: case 889: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5915 +//line mysql_sql.y:5922 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -18130,7 +18132,7 @@ yydefault: case 890: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5923 +//line mysql_sql.y:5930 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -18142,7 +18144,7 @@ yydefault: case 891: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5931 +//line mysql_sql.y:5938 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -18154,7 +18156,7 @@ yydefault: case 892: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5940 +//line mysql_sql.y:5947 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -18166,7 +18168,7 @@ yydefault: case 893: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5948 +//line mysql_sql.y:5955 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -18178,7 +18180,7 @@ yydefault: case 894: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5956 +//line mysql_sql.y:5963 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -18190,7 +18192,7 @@ yydefault: case 895: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5964 +//line mysql_sql.y:5971 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -18202,7 +18204,7 @@ yydefault: case 896: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5972 +//line mysql_sql.y:5979 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -18214,7 +18216,7 @@ yydefault: case 897: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5980 +//line mysql_sql.y:5987 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -18226,7 +18228,7 @@ yydefault: case 898: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5988 +//line mysql_sql.y:5995 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -18238,7 +18240,7 @@ yydefault: case 899: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5996 +//line mysql_sql.y:6003 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -18250,7 +18252,7 @@ yydefault: case 900: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:6004 +//line mysql_sql.y:6011 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -18262,7 +18264,7 @@ yydefault: case 901: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:6014 +//line mysql_sql.y:6021 { yyLOCAL = &tree.SelectClause{ Distinct: tree.QuerySpecOptionDistinct&yyDollar[2].selectOptionsUnion() != 0, @@ -18278,7 +18280,7 @@ yydefault: case 902: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6027 +//line mysql_sql.y:6034 { yyLOCAL = tree.QuerySpecOptionNone } @@ -18286,7 +18288,7 @@ yydefault: case 903: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6031 +//line mysql_sql.y:6038 { yyLOCAL = yyDollar[1].selectOptionsUnion() } @@ -18294,7 +18296,7 @@ yydefault: case 904: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6037 +//line mysql_sql.y:6044 { yyLOCAL = yyDollar[1].selectOptionUnion() } @@ -18302,7 +18304,7 @@ yydefault: case 905: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6041 +//line mysql_sql.y:6048 { yyLOCAL = yyDollar[1].selectOptionsUnion() | yyDollar[2].selectOptionUnion() } @@ -18310,7 +18312,7 @@ yydefault: case 906: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6047 +//line mysql_sql.y:6054 { yyLOCAL = tree.QuerySpecOptionSqlSmallResult } @@ -18318,7 +18320,7 @@ yydefault: case 907: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6051 +//line mysql_sql.y:6058 { yyLOCAL = tree.QuerySpecOptionSqlBigResult } @@ -18326,7 +18328,7 @@ yydefault: case 908: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6055 +//line mysql_sql.y:6062 { yyLOCAL = tree.QuerySpecOptionSqlBufferResult } @@ -18334,7 +18336,7 @@ yydefault: case 909: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6059 +//line mysql_sql.y:6066 { yyLOCAL = tree.QuerySpecOptionStraightJoin } @@ -18342,7 +18344,7 @@ yydefault: case 910: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6063 +//line mysql_sql.y:6070 { yyLOCAL = tree.QuerySpecOptionHighPriority } @@ -18350,7 +18352,7 @@ yydefault: case 911: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6067 +//line mysql_sql.y:6074 { yyLOCAL = tree.QuerySpecOptionSqlCalcFoundRows } @@ -18358,7 +18360,7 @@ yydefault: case 912: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6071 +//line mysql_sql.y:6078 { yyLOCAL = tree.QuerySpecOptionSqlNoCache } @@ -18366,7 +18368,7 @@ yydefault: case 913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6075 +//line mysql_sql.y:6082 { yyLOCAL = tree.QuerySpecOptionAll } @@ -18374,7 +18376,7 @@ yydefault: case 914: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6079 +//line mysql_sql.y:6086 { yyLOCAL = tree.QuerySpecOptionDistinct } @@ -18382,7 +18384,7 @@ yydefault: case 915: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:6083 +//line mysql_sql.y:6090 { yyLOCAL = tree.QuerySpecOptionDistinctRow } @@ -18390,7 +18392,7 @@ yydefault: case 916: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6105 +//line mysql_sql.y:6112 { yyLOCAL = nil } @@ -18398,7 +18400,7 @@ yydefault: case 917: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6109 +//line mysql_sql.y:6116 { yyLOCAL = &tree.Where{Type: tree.AstHaving, Expr: yyDollar[2].exprUnion()} } @@ -18406,7 +18408,7 @@ yydefault: case 918: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6114 +//line mysql_sql.y:6121 { yyLOCAL = nil } @@ -18414,7 +18416,7 @@ yydefault: case 919: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6118 +//line mysql_sql.y:6125 { exprsList := []tree.Exprs{yyDollar[3].exprsUnion()} yyLOCAL = &tree.GroupByClause{ @@ -18428,7 +18430,7 @@ yydefault: case 920: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6128 +//line mysql_sql.y:6135 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: yyDollar[6].rowsExprsUnion(), @@ -18441,7 +18443,7 @@ yydefault: case 921: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6137 +//line mysql_sql.y:6144 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -18454,7 +18456,7 @@ yydefault: case 922: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6146 +//line mysql_sql.y:6153 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -18467,7 +18469,7 @@ yydefault: case 923: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6157 +//line mysql_sql.y:6164 { yyLOCAL = []tree.Exprs{yyDollar[2].exprsUnion()} } @@ -18475,7 +18477,7 @@ yydefault: case 924: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6161 +//line mysql_sql.y:6168 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[4].exprsUnion()) } @@ -18483,7 +18485,7 @@ yydefault: case 925: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6166 +//line mysql_sql.y:6173 { yyLOCAL = false } @@ -18491,7 +18493,7 @@ yydefault: case 926: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6170 +//line mysql_sql.y:6177 { yyLOCAL = true } @@ -18499,7 +18501,7 @@ yydefault: case 927: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6175 +//line mysql_sql.y:6182 { yyLOCAL = nil } @@ -18507,7 +18509,7 @@ yydefault: case 928: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6179 +//line mysql_sql.y:6186 { yyLOCAL = &tree.Where{Type: tree.AstWhere, Expr: yyDollar[2].exprUnion()} } @@ -18515,7 +18517,7 @@ yydefault: case 929: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:6185 +//line mysql_sql.y:6192 { yyLOCAL = tree.SelectExprs{yyDollar[1].selectExprUnion()} } @@ -18523,7 +18525,7 @@ yydefault: case 930: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:6189 +//line mysql_sql.y:6196 { yyLOCAL = append(yyDollar[1].selectExprsUnion(), yyDollar[3].selectExprUnion()) } @@ -18531,7 +18533,7 @@ yydefault: case 931: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6195 +//line mysql_sql.y:6202 { yyLOCAL = tree.SelectExpr{Expr: tree.StarExpr()} } @@ -18539,7 +18541,7 @@ yydefault: case 932: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6199 +//line mysql_sql.y:6206 { yyLOCAL = tree.SelectExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].cstrUnion()} } @@ -18547,7 +18549,7 @@ yydefault: case 933: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6203 +//line mysql_sql.y:6210 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion())} } @@ -18555,7 +18557,7 @@ yydefault: case 934: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6207 +//line mysql_sql.y:6214 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion(), yyDollar[3].cstrUnion())} } @@ -18563,7 +18565,7 @@ yydefault: case 935: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6212 +//line mysql_sql.y:6219 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} tn := tree.NewTableName(tree.Identifier(""), prefix, nil) @@ -18575,7 +18577,7 @@ yydefault: case 936: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6220 +//line mysql_sql.y:6227 { yyLOCAL = yyDollar[1].fromUnion() } @@ -18583,7 +18585,7 @@ yydefault: case 937: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6226 +//line mysql_sql.y:6233 { yyLOCAL = &tree.From{ Tables: tree.TableExprs{yyDollar[2].tableExprUnion()}, @@ -18593,7 +18595,7 @@ yydefault: case 938: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6234 +//line mysql_sql.y:6241 { if t, ok := yyDollar[1].tableExprUnion().(*tree.JoinTableExpr); ok { yyLOCAL = t @@ -18607,7 +18609,7 @@ yydefault: case 939: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6244 +//line mysql_sql.y:6251 { yyLOCAL = &tree.JoinTableExpr{Left: yyDollar[1].tableExprUnion(), Right: yyDollar[3].tableExprUnion(), JoinType: tree.JOIN_TYPE_CROSS} } @@ -18615,7 +18617,7 @@ yydefault: case 942: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6254 +//line mysql_sql.y:6261 { yyLOCAL = yyDollar[1].joinTableExprUnion() } @@ -18623,7 +18625,7 @@ yydefault: case 943: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6258 +//line mysql_sql.y:6265 { yyLOCAL = yyDollar[1].applyTableExprUnion() } @@ -18631,7 +18633,7 @@ yydefault: case 944: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6264 +//line mysql_sql.y:6271 { if strings.Contains(yyDollar[2].str, ":") { ss := strings.SplitN(yyDollar[2].str, ":", 2) @@ -18655,7 +18657,7 @@ yydefault: case 945: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6284 +//line mysql_sql.y:6291 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18668,7 +18670,7 @@ yydefault: case 946: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6293 +//line mysql_sql.y:6300 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18681,7 +18683,7 @@ yydefault: case 947: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6302 +//line mysql_sql.y:6309 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18693,7 +18695,7 @@ yydefault: case 948: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6310 +//line mysql_sql.y:6317 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18706,7 +18708,7 @@ yydefault: case 949: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ApplyTableExpr -//line mysql_sql.y:6321 +//line mysql_sql.y:6328 { yyLOCAL = &tree.ApplyTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18717,25 +18719,25 @@ yydefault: yyVAL.union = yyLOCAL case 950: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6331 +//line mysql_sql.y:6338 { yyVAL.str = tree.APPLY_TYPE_CROSS } case 951: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6335 +//line mysql_sql.y:6342 { yyVAL.str = tree.APPLY_TYPE_OUTER } case 952: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6341 +//line mysql_sql.y:6348 { yyVAL.str = tree.JOIN_TYPE_NATURAL } case 953: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6345 +//line mysql_sql.y:6352 { if yyDollar[2].str == tree.JOIN_TYPE_LEFT { yyVAL.str = tree.JOIN_TYPE_NATURAL_LEFT @@ -18745,38 +18747,38 @@ yydefault: } case 954: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6355 +//line mysql_sql.y:6362 { yyVAL.str = tree.JOIN_TYPE_LEFT } case 955: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6359 +//line mysql_sql.y:6366 { yyVAL.str = tree.JOIN_TYPE_LEFT } case 956: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6363 +//line mysql_sql.y:6370 { yyVAL.str = tree.JOIN_TYPE_RIGHT } case 957: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6367 +//line mysql_sql.y:6374 { yyVAL.str = tree.JOIN_TYPE_RIGHT } case 958: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6373 +//line mysql_sql.y:6380 { yyVAL.str = tree.JOIN_TYPE_DEDUP } case 959: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6379 +//line mysql_sql.y:6386 { yyLOCAL = &tree.ValuesStatement{ Rows: yyDollar[2].rowsExprsUnion(), @@ -18788,7 +18790,7 @@ yydefault: case 960: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6390 +//line mysql_sql.y:6397 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } @@ -18796,7 +18798,7 @@ yydefault: case 961: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6394 +//line mysql_sql.y:6401 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } @@ -18804,7 +18806,7 @@ yydefault: case 962: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:6400 +//line mysql_sql.y:6407 { yyLOCAL = yyDollar[3].exprsUnion() } @@ -18812,7 +18814,7 @@ yydefault: case 963: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6406 +//line mysql_sql.y:6413 { yyLOCAL = nil } @@ -18820,57 +18822,57 @@ yydefault: case 964: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6410 +//line mysql_sql.y:6417 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 965: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6416 +//line mysql_sql.y:6423 { yyVAL.str = yyDollar[1].str } case 966: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6423 +//line mysql_sql.y:6430 { yyVAL.str = yyDollar[2].str } case 967: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6429 +//line mysql_sql.y:6436 { yyVAL.str = tree.JOIN_TYPE_STRAIGHT } case 968: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6435 +//line mysql_sql.y:6442 { yyVAL.str = tree.JOIN_TYPE_INNER } case 969: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6439 +//line mysql_sql.y:6446 { yyVAL.str = tree.JOIN_TYPE_INNER } case 970: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6443 +//line mysql_sql.y:6450 { yyVAL.str = tree.JOIN_TYPE_CROSS } case 971: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6447 +//line mysql_sql.y:6454 { yyVAL.str = tree.JOIN_TYPE_CENTROIDX + ":" + yyDollar[2].str } case 972: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6453 +//line mysql_sql.y:6460 { yyLOCAL = nil } @@ -18878,7 +18880,7 @@ yydefault: case 973: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6457 +//line mysql_sql.y:6464 { yyLOCAL = yyDollar[1].joinCondUnion() } @@ -18886,7 +18888,7 @@ yydefault: case 974: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6463 +//line mysql_sql.y:6470 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } @@ -18894,7 +18896,7 @@ yydefault: case 975: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6467 +//line mysql_sql.y:6474 { yyLOCAL = &tree.UsingJoinCond{Cols: yyDollar[3].identifierListUnion()} } @@ -18902,7 +18904,7 @@ yydefault: case 976: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6473 +//line mysql_sql.y:6480 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } @@ -18910,7 +18912,7 @@ yydefault: case 977: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6477 +//line mysql_sql.y:6484 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } @@ -18918,7 +18920,7 @@ yydefault: case 978: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6483 +//line mysql_sql.y:6490 { yyLOCAL = yyDollar[1].aliasedTableExprUnion() } @@ -18926,7 +18928,7 @@ yydefault: case 979: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6487 +//line mysql_sql.y:6494 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].parenTableExprUnion(), @@ -18940,7 +18942,7 @@ yydefault: case 980: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6497 +//line mysql_sql.y:6504 { if yyDollar[2].str != "" { yyLOCAL = &tree.AliasedTableExpr{ @@ -18957,7 +18959,7 @@ yydefault: case 981: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6510 +//line mysql_sql.y:6517 { yyLOCAL = yyDollar[2].tableExprUnion() } @@ -18965,7 +18967,7 @@ yydefault: case 982: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ParenTableExpr -//line mysql_sql.y:6516 +//line mysql_sql.y:6523 { yyLOCAL = &tree.ParenTableExpr{Expr: yyDollar[1].selectStatementUnion().(*tree.ParenSelect).Select} } @@ -18973,7 +18975,7 @@ yydefault: case 983: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6522 +//line mysql_sql.y:6529 { name := tree.NewUnresolvedName(yyDollar[1].cstrUnion()) yyLOCAL = &tree.TableFunction{ @@ -18989,7 +18991,7 @@ yydefault: case 984: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AliasedTableExpr -//line mysql_sql.y:6536 +//line mysql_sql.y:6543 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].tableNameUnion(), @@ -19003,7 +19005,7 @@ yydefault: case 985: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6547 +//line mysql_sql.y:6554 { yyLOCAL = nil } @@ -19011,7 +19013,7 @@ yydefault: case 987: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6554 +//line mysql_sql.y:6561 { yyLOCAL = []*tree.IndexHint{yyDollar[1].indexHintUnion()} } @@ -19019,7 +19021,7 @@ yydefault: case 988: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6558 +//line mysql_sql.y:6565 { yyLOCAL = append(yyDollar[1].indexHintListUnion(), yyDollar[2].indexHintUnion()) } @@ -19027,7 +19029,7 @@ yydefault: case 989: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.IndexHint -//line mysql_sql.y:6564 +//line mysql_sql.y:6571 { yyLOCAL = &tree.IndexHint{ IndexNames: yyDollar[4].strsUnion(), @@ -19039,7 +19041,7 @@ yydefault: case 990: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6574 +//line mysql_sql.y:6581 { yyLOCAL = tree.HintUse } @@ -19047,7 +19049,7 @@ yydefault: case 991: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6578 +//line mysql_sql.y:6585 { yyLOCAL = tree.HintIgnore } @@ -19055,7 +19057,7 @@ yydefault: case 992: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6582 +//line mysql_sql.y:6589 { yyLOCAL = tree.HintForce } @@ -19063,7 +19065,7 @@ yydefault: case 993: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6587 +//line mysql_sql.y:6594 { yyLOCAL = tree.HintForScan } @@ -19071,7 +19073,7 @@ yydefault: case 994: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6591 +//line mysql_sql.y:6598 { yyLOCAL = tree.HintForJoin } @@ -19079,7 +19081,7 @@ yydefault: case 995: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6595 +//line mysql_sql.y:6602 { yyLOCAL = tree.HintForOrderBy } @@ -19087,7 +19089,7 @@ yydefault: case 996: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6599 +//line mysql_sql.y:6606 { yyLOCAL = tree.HintForGroupBy } @@ -19095,7 +19097,7 @@ yydefault: case 997: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6604 +//line mysql_sql.y:6611 { yyLOCAL = nil } @@ -19103,7 +19105,7 @@ yydefault: case 998: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6608 +//line mysql_sql.y:6615 { yyLOCAL = []string{yyDollar[1].cstrUnion().Compare()} } @@ -19111,7 +19113,7 @@ yydefault: case 999: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6612 +//line mysql_sql.y:6619 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } @@ -19119,7 +19121,7 @@ yydefault: case 1000: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6616 +//line mysql_sql.y:6623 { yyLOCAL = []string{yyDollar[1].str} } @@ -19127,45 +19129,45 @@ yydefault: case 1001: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6620 +//line mysql_sql.y:6627 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL case 1002: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6625 +//line mysql_sql.y:6632 { yyVAL.str = "" } case 1003: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6629 +//line mysql_sql.y:6636 { yyVAL.str = yyDollar[1].str } case 1004: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6633 +//line mysql_sql.y:6640 { yyVAL.str = yyDollar[2].str } case 1005: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6639 +//line mysql_sql.y:6646 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } case 1006: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6643 +//line mysql_sql.y:6650 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].str) } case 1007: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6648 +//line mysql_sql.y:6655 { yyLOCAL = tree.NewCStr("", 1) } @@ -19173,7 +19175,7 @@ yydefault: case 1008: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6652 +//line mysql_sql.y:6659 { yyLOCAL = yyDollar[1].cstrUnion() } @@ -19181,7 +19183,7 @@ yydefault: case 1009: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6656 +//line mysql_sql.y:6663 { yyLOCAL = yyDollar[2].cstrUnion() } @@ -19189,7 +19191,7 @@ yydefault: case 1010: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6660 +//line mysql_sql.y:6667 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } @@ -19197,21 +19199,21 @@ yydefault: case 1011: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6664 +//line mysql_sql.y:6671 { yyLOCAL = tree.NewCStr(yyDollar[2].str, 1) } yyVAL.union = yyLOCAL case 1012: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6670 +//line mysql_sql.y:6677 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1036: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6713 +//line mysql_sql.y:6720 { cronExpr := "" timezone := "" @@ -19234,7 +19236,7 @@ yydefault: case 1037: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SQLTaskSchedule -//line mysql_sql.y:6733 +//line mysql_sql.y:6740 { yyLOCAL = nil } @@ -19242,7 +19244,7 @@ yydefault: case 1038: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.SQLTaskSchedule -//line mysql_sql.y:6737 +//line mysql_sql.y:6744 { yyLOCAL = &tree.SQLTaskSchedule{ CronExpr: yyDollar[2].str, @@ -19252,20 +19254,20 @@ yydefault: yyVAL.union = yyLOCAL case 1039: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6745 +//line mysql_sql.y:6752 { yyVAL.str = "" } case 1040: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6749 +//line mysql_sql.y:6756 { yyVAL.str = yyDollar[2].str } case 1041: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6754 +//line mysql_sql.y:6761 { yyLOCAL = tree.Expr(nil) } @@ -19273,7 +19275,7 @@ yydefault: case 1042: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6758 +//line mysql_sql.y:6765 { yyLOCAL = yyDollar[3].exprUnion() } @@ -19281,7 +19283,7 @@ yydefault: case 1043: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6764 +//line mysql_sql.y:6771 { yyLOCAL = yyDollar[1].exprUnion() } @@ -19289,7 +19291,7 @@ yydefault: case 1044: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6768 +//line mysql_sql.y:6775 { yyLOCAL = tree.NewSubquery(yyDollar[1].selectUnion(), false) } @@ -19297,7 +19299,7 @@ yydefault: case 1045: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:6773 +//line mysql_sql.y:6780 { yyLOCAL = 0 } @@ -19305,27 +19307,27 @@ yydefault: case 1046: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:6777 +//line mysql_sql.y:6784 { yyLOCAL = sqlTaskInt64(yyDollar[2].item) } yyVAL.union = yyLOCAL case 1047: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6782 +//line mysql_sql.y:6789 { yyVAL.str = "" } case 1048: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6786 +//line mysql_sql.y:6793 { yyVAL.str = yyDollar[2].str } case 1049: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6792 +//line mysql_sql.y:6799 { var Language = yyDollar[3].str var Name = tree.Identifier(yyDollar[5].str) @@ -19339,20 +19341,20 @@ yydefault: yyVAL.union = yyLOCAL case 1050: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6805 +//line mysql_sql.y:6812 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1051: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6811 +//line mysql_sql.y:6818 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1052: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6817 +//line mysql_sql.y:6824 { yyLOCAL = tree.NewCreateProcedure( yyDollar[2].sourceOptionalUnion(), yyDollar[4].procNameUnion(), yyDollar[6].procArgsUnion(), yyDollar[8].str, yyDollar[9].str, @@ -19362,7 +19364,7 @@ yydefault: case 1053: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6825 +//line mysql_sql.y:6832 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) @@ -19371,7 +19373,7 @@ yydefault: case 1054: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6830 +//line mysql_sql.y:6837 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} @@ -19381,7 +19383,7 @@ yydefault: case 1055: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6837 +//line mysql_sql.y:6844 { yyLOCAL = tree.ProcedureArgs(nil) } @@ -19389,7 +19391,7 @@ yydefault: case 1057: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6844 +//line mysql_sql.y:6851 { yyLOCAL = tree.ProcedureArgs{yyDollar[1].procArgUnion()} } @@ -19397,7 +19399,7 @@ yydefault: case 1058: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6848 +//line mysql_sql.y:6855 { yyLOCAL = append(yyDollar[1].procArgsUnion(), yyDollar[3].procArgUnion()) } @@ -19405,7 +19407,7 @@ yydefault: case 1059: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArg -//line mysql_sql.y:6854 +//line mysql_sql.y:6861 { yyLOCAL = tree.ProcedureArg(yyDollar[1].procArgDeclUnion()) } @@ -19413,7 +19415,7 @@ yydefault: case 1060: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureArgDecl -//line mysql_sql.y:6860 +//line mysql_sql.y:6867 { yyLOCAL = tree.NewProcedureArgDecl(yyDollar[1].procArgTypeUnion(), yyDollar[2].unresolvedNameUnion(), yyDollar[3].columnTypeUnion()) } @@ -19421,7 +19423,7 @@ yydefault: case 1061: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6865 +//line mysql_sql.y:6872 { yyLOCAL = tree.TYPE_IN } @@ -19429,7 +19431,7 @@ yydefault: case 1062: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6869 +//line mysql_sql.y:6876 { yyLOCAL = tree.TYPE_IN } @@ -19437,7 +19439,7 @@ yydefault: case 1063: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6873 +//line mysql_sql.y:6880 { yyLOCAL = tree.TYPE_OUT } @@ -19445,27 +19447,27 @@ yydefault: case 1064: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6877 +//line mysql_sql.y:6884 { yyLOCAL = tree.TYPE_INOUT } yyVAL.union = yyLOCAL case 1065: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6882 +//line mysql_sql.y:6889 { yyVAL.str = "sql" } case 1066: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6886 +//line mysql_sql.y:6893 { yyVAL.str = yyDollar[2].str } case 1067: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6893 +//line mysql_sql.y:6900 { if yyDollar[13].str == "" { yylex.Error("no function body error") @@ -19500,7 +19502,7 @@ yydefault: case 1068: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6926 +//line mysql_sql.y:6933 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) @@ -19509,7 +19511,7 @@ yydefault: case 1069: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6931 +//line mysql_sql.y:6938 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} @@ -19519,7 +19521,7 @@ yydefault: case 1070: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6938 +//line mysql_sql.y:6945 { yyLOCAL = tree.FunctionArgs(nil) } @@ -19527,7 +19529,7 @@ yydefault: case 1072: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6945 +//line mysql_sql.y:6952 { yyLOCAL = tree.FunctionArgs{yyDollar[1].funcArgUnion()} } @@ -19535,7 +19537,7 @@ yydefault: case 1073: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6949 +//line mysql_sql.y:6956 { yyLOCAL = append(yyDollar[1].funcArgsUnion(), yyDollar[3].funcArgUnion()) } @@ -19543,7 +19545,7 @@ yydefault: case 1074: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArg -//line mysql_sql.y:6955 +//line mysql_sql.y:6962 { yyLOCAL = tree.FunctionArg(yyDollar[1].funcArgDeclUnion()) } @@ -19551,7 +19553,7 @@ yydefault: case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6961 +//line mysql_sql.y:6968 { yyLOCAL = tree.NewFunctionArgDecl(nil, yyDollar[1].columnTypeUnion(), nil) } @@ -19559,7 +19561,7 @@ yydefault: case 1076: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6965 +//line mysql_sql.y:6972 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), nil) } @@ -19567,21 +19569,21 @@ yydefault: case 1077: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6969 +//line mysql_sql.y:6976 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL case 1078: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6975 +//line mysql_sql.y:6982 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1079: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReturnType -//line mysql_sql.y:6981 +//line mysql_sql.y:6988 { yyLOCAL = tree.NewReturnType(yyDollar[1].columnTypeUnion()) } @@ -19589,7 +19591,7 @@ yydefault: case 1080: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6987 +//line mysql_sql.y:6994 { yyLOCAL = false } @@ -19597,62 +19599,51 @@ yydefault: case 1081: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6991 +//line mysql_sql.y:6998 { yyLOCAL = true } yyVAL.union = yyLOCAL case 1082: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6997 +//line mysql_sql.y:7004 { yyVAL.str = "" } case 1084: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7004 +//line mysql_sql.y:7011 { yyVAL.str = yyDollar[2].str } case 1085: - yyDollar = yyS[yypt-9 : yypt+1] - var yyLOCAL tree.Statement -//line mysql_sql.y:7010 - { - var Replace bool - var Name = yyDollar[5].tableNameUnion() - var ColNames = yyDollar[6].identifierListUnion() - var AsSource = yyDollar[8].selectUnion() - var IfNotExists = yyDollar[4].ifNotExistsUnion() - yyLOCAL = tree.NewCreateView( - Replace, - Name, - ColNames, - AsSource, - IfNotExists, - ) - } - yyVAL.union = yyLOCAL - case 1086: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7025 +//line mysql_sql.y:7017 { var Replace = yyDollar[2].sourceOptionalUnion() - var Name = yyDollar[5].tableNameUnion() - var ColNames = yyDollar[6].identifierListUnion() - var AsSource = yyDollar[8].selectUnion() - var IfNotExists = yyDollar[4].ifNotExistsUnion() + var Name = yyDollar[6].tableNameUnion() + var ColNames = yyDollar[7].identifierListUnion() + var AsSource = yyDollar[9].selectUnion() + var IfNotExists = yyDollar[5].ifNotExistsUnion() + secType := "" + viewListStr := strings.ToUpper(yyDollar[3].str) + if strings.Contains(viewListStr, "SQL SECURITY INVOKER") { + secType = "INVOKER" + } else if strings.Contains(viewListStr, "SQL SECURITY DEFINER") { + secType = "DEFINER" + } yyLOCAL = tree.NewCreateView( Replace, Name, ColNames, AsSource, IfNotExists, + secType, ) } yyVAL.union = yyLOCAL - case 1087: + case 1086: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement //line mysql_sql.y:7042 @@ -19671,81 +19662,93 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1088: - yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7059 + case 1087: + yyDollar = yyS[yypt-0 : yypt+1] +//line mysql_sql.y:7058 { - yyVAL.str = yyDollar[1].str + yyVAL.str = "" } - case 1089: + case 1088: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7063 +//line mysql_sql.y:7062 { - yyVAL.str = yyVAL.str + yyDollar[2].str + yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1090: + case 1089: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7069 +//line mysql_sql.y:7068 { yyVAL.str = "ALGORITHM = " + yyDollar[3].str } - case 1091: + case 1090: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7073 +//line mysql_sql.y:7072 { yyVAL.str = "DEFINER = " } - case 1092: + case 1091: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7077 +//line mysql_sql.y:7076 { yyVAL.str = "SQL SECURITY " + yyDollar[3].str } - case 1093: + case 1092: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7082 +//line mysql_sql.y:7081 + { + yyVAL.str = "" + } + case 1093: + yyDollar = yyS[yypt-4 : yypt+1] +//line mysql_sql.y:7085 + { + yyVAL.str = "WITH " + yyDollar[2].str + " CHECK OPTION" + } + case 1097: + yyDollar = yyS[yypt-1 : yypt+1] +//line mysql_sql.y:7096 { - yyVAL.str = "" + yyVAL.str = "DEFINER" } - case 1094: - yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:7086 + case 1098: + yyDollar = yyS[yypt-1 : yypt+1] +//line mysql_sql.y:7100 { - yyVAL.str = "WITH " + yyDollar[2].str + " CHECK OPTION" + yyVAL.str = "INVOKER" } - case 1100: + case 1099: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7100 +//line mysql_sql.y:7105 { yyVAL.str = "" } - case 1103: + case 1102: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7108 +//line mysql_sql.y:7113 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1104: + case 1103: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:7114 +//line mysql_sql.y:7119 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1105: + case 1104: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:7119 +//line mysql_sql.y:7124 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1106: + case 1105: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountAuthOption -//line mysql_sql.y:7125 +//line mysql_sql.y:7130 { var Equal = yyDollar[2].str var AdminName = yyDollar[3].exprUnion() @@ -19757,36 +19760,36 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1107: + case 1106: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:7138 +//line mysql_sql.y:7143 { var str = yyDollar[1].str yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1108: + case 1107: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:7143 +//line mysql_sql.y:7148 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1109: + case 1108: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:7148 +//line mysql_sql.y:7153 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1110: + case 1109: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:7154 +//line mysql_sql.y:7159 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -19794,10 +19797,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1111: + case 1110: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:7161 +//line mysql_sql.y:7166 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -19805,10 +19808,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1112: + case 1111: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:7168 +//line mysql_sql.y:7173 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByRandomPassword, @@ -19816,10 +19819,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1113: + case 1112: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:7175 +//line mysql_sql.y:7180 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -19827,10 +19830,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1114: + case 1113: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:7182 +//line mysql_sql.y:7187 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -19838,20 +19841,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1115: + case 1114: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:7190 +//line mysql_sql.y:7195 { as := tree.NewAccountStatus() as.Exist = false yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1116: + case 1115: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:7196 +//line mysql_sql.y:7201 { as := tree.NewAccountStatus() as.Exist = true @@ -19859,10 +19862,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1117: + case 1116: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:7203 +//line mysql_sql.y:7208 { as := tree.NewAccountStatus() as.Exist = true @@ -19870,10 +19873,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1118: + case 1117: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:7210 +//line mysql_sql.y:7215 { as := tree.NewAccountStatus() as.Exist = true @@ -19881,20 +19884,20 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1119: + case 1118: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:7218 +//line mysql_sql.y:7223 { ac := tree.NewAccountComment() ac.Exist = false yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1120: + case 1119: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:7224 +//line mysql_sql.y:7229 { ac := tree.NewAccountComment() ac.Exist = true @@ -19902,10 +19905,10 @@ yydefault: yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1121: + case 1120: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7233 +//line mysql_sql.y:7238 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Users = yyDollar[4].usersUnion() @@ -19921,10 +19924,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1122: + case 1121: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7250 +//line mysql_sql.y:7255 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19941,10 +19944,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1123: + case 1122: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7266 +//line mysql_sql.y:7271 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19962,30 +19965,30 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1124: + case 1123: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7285 +//line mysql_sql.y:7290 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1125: + case 1124: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7291 +//line mysql_sql.y:7296 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1126: + case 1125: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7300 +//line mysql_sql.y:7305 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -20003,20 +20006,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1127: + case 1126: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7318 +//line mysql_sql.y:7323 { yyLOCAL = tree.StageStatus{ Exist: false, } } yyVAL.union = yyLOCAL - case 1128: + case 1127: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7324 +//line mysql_sql.y:7329 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -20024,10 +20027,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1129: + case 1128: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7331 +//line mysql_sql.y:7336 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -20035,20 +20038,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1130: + case 1129: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7339 +//line mysql_sql.y:7344 { yyLOCAL = tree.StageComment{ Exist: false, } } yyVAL.union = yyLOCAL - case 1131: + case 1130: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7345 +//line mysql_sql.y:7350 { yyLOCAL = tree.StageComment{ Exist: true, @@ -20056,20 +20059,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1132: + case 1131: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7353 +//line mysql_sql.y:7358 { yyLOCAL = tree.StageUrl{ Exist: false, } } yyVAL.union = yyLOCAL - case 1133: + case 1132: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7359 +//line mysql_sql.y:7364 { yyLOCAL = tree.StageUrl{ Exist: true, @@ -20077,20 +20080,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1134: + case 1133: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7367 +//line mysql_sql.y:7372 { yyLOCAL = tree.StageCredentials{ Exist: false, } } yyVAL.union = yyLOCAL - case 1135: + case 1134: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7373 +//line mysql_sql.y:7378 { yyLOCAL = tree.StageCredentials{ Exist: true, @@ -20098,61 +20101,61 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1136: + case 1135: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7382 +//line mysql_sql.y:7387 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1137: + case 1136: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7386 +//line mysql_sql.y:7391 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1138: + case 1137: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7391 +//line mysql_sql.y:7396 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1139: + case 1138: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7395 +//line mysql_sql.y:7400 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1140: + case 1139: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7402 +//line mysql_sql.y:7407 { yyVAL.str = yyDollar[3].str } - case 1141: + case 1140: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7407 +//line mysql_sql.y:7412 { yyVAL.str = "" } - case 1142: + case 1141: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7411 +//line mysql_sql.y:7416 { yyVAL.str = yyDollar[2].str } - case 1143: + case 1142: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7417 +//line mysql_sql.y:7422 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -20163,10 +20166,10 @@ yydefault: yyLOCAL = tree.NewAlterStage(ifNotExists, name, urlOption, credentialsOption, statusOption, comment) } yyVAL.union = yyLOCAL - case 1144: + case 1143: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7430 +//line mysql_sql.y:7435 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -20177,116 +20180,116 @@ yydefault: yyLOCAL = tree.NewAlterPublication(ifExists, name, accountsSet, dbName, table, comment) } yyVAL.union = yyLOCAL - case 1145: + case 1144: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7441 +//line mysql_sql.y:7446 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1146: + case 1145: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7445 +//line mysql_sql.y:7450 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1147: + case 1146: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7451 +//line mysql_sql.y:7456 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1148: + case 1147: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7457 +//line mysql_sql.y:7462 { yyLOCAL = &tree.AccountsSetOption{ AddAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1149: + case 1148: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7463 +//line mysql_sql.y:7468 { yyLOCAL = &tree.AccountsSetOption{ DropAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1150: + case 1149: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7470 +//line mysql_sql.y:7475 { yyVAL.str = "" } - case 1151: + case 1150: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7474 +//line mysql_sql.y:7479 { yyVAL.str = yyDollar[2].str } - case 1152: + case 1151: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7479 +//line mysql_sql.y:7484 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1153: + case 1152: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7483 +//line mysql_sql.y:7488 { yyLOCAL = yyDollar[2].tableNamesUnion() } yyVAL.union = yyLOCAL - case 1154: + case 1153: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7489 +//line mysql_sql.y:7494 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropPublication(ifExists, name) } yyVAL.union = yyLOCAL - case 1155: + case 1154: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7497 +//line mysql_sql.y:7502 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropStage(ifNotExists, name) } yyVAL.union = yyLOCAL - case 1156: + case 1155: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7505 +//line mysql_sql.y:7510 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropSnapShot(ifExists, name) } yyVAL.union = yyLOCAL - case 1157: + case 1156: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7513 +//line mysql_sql.y:7518 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -20298,16 +20301,16 @@ yydefault: } yyVAL.union = yyLOCAL - case 1158: + case 1157: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7526 +//line mysql_sql.y:7531 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1159: + case 1158: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7531 +//line mysql_sql.y:7536 { var Exist = false var IsComment bool @@ -20320,10 +20323,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1160: + case 1159: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7543 +//line mysql_sql.y:7548 { var Exist = true var IsComment = true @@ -20335,10 +20338,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1161: + case 1160: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7554 +//line mysql_sql.y:7559 { var Exist = true var IsComment = false @@ -20350,26 +20353,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1162: + case 1161: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7663 +//line mysql_sql.y:7668 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1163: + case 1162: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7667 +//line mysql_sql.y:7672 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1164: + case 1163: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7673 +//line mysql_sql.y:7678 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -20381,26 +20384,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1165: + case 1164: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7686 +//line mysql_sql.y:7691 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1166: + case 1165: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7690 +//line mysql_sql.y:7695 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1167: + case 1166: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7696 +//line mysql_sql.y:7701 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -20412,50 +20415,50 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1168: + case 1167: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7709 +//line mysql_sql.y:7714 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: "%"} } yyVAL.union = yyLOCAL - case 1169: + case 1168: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7713 +//line mysql_sql.y:7718 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1170: + case 1169: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7717 +//line mysql_sql.y:7722 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1171: + case 1170: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7722 +//line mysql_sql.y:7727 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1172: + case 1171: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7726 +//line mysql_sql.y:7731 { yyLOCAL = yyDollar[1].userIdentifiedUnion() } yyVAL.union = yyLOCAL - case 1173: + case 1172: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7732 +//line mysql_sql.y:7737 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByPassword, @@ -20463,20 +20466,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1174: + case 1173: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7739 +//line mysql_sql.y:7744 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByRandomPassword, } } yyVAL.union = yyLOCAL - case 1175: + case 1174: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7745 +//line mysql_sql.y:7750 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedWithSSL, @@ -20484,16 +20487,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1176: + case 1175: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7754 +//line mysql_sql.y:7759 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1178: + case 1177: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7761 +//line mysql_sql.y:7766 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Roles = yyDollar[4].rolesUnion() @@ -20503,26 +20506,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1179: + case 1178: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7772 +//line mysql_sql.y:7777 { yyLOCAL = []*tree.Role{yyDollar[1].roleUnion()} } yyVAL.union = yyLOCAL - case 1180: + case 1179: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7776 +//line mysql_sql.y:7781 { yyLOCAL = append(yyDollar[1].rolesUnion(), yyDollar[3].roleUnion()) } yyVAL.union = yyLOCAL - case 1181: + case 1180: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:7782 +//line mysql_sql.y:7787 { var UserName = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewRole( @@ -20530,106 +20533,106 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1182: + case 1181: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7791 +//line mysql_sql.y:7796 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1183: + case 1182: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7795 +//line mysql_sql.y:7800 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1184: + case 1183: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7799 +//line mysql_sql.y:7804 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1185: + case 1184: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7803 +//line mysql_sql.y:7808 { yyLOCAL = tree.NewCStr("lag", 1) } yyVAL.union = yyLOCAL - case 1186: + case 1185: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7807 +//line mysql_sql.y:7812 { yyLOCAL = tree.NewCStr("lead", 1) } yyVAL.union = yyLOCAL - case 1187: + case 1186: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7811 +//line mysql_sql.y:7816 { yyLOCAL = tree.NewCStr("first_value", 1) } yyVAL.union = yyLOCAL - case 1188: + case 1187: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7815 +//line mysql_sql.y:7820 { yyLOCAL = tree.NewCStr("last_value", 1) } yyVAL.union = yyLOCAL - case 1189: + case 1188: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7819 +//line mysql_sql.y:7824 { yyLOCAL = tree.NewCStr("nth_value", 1) } yyVAL.union = yyLOCAL - case 1190: + case 1189: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7824 +//line mysql_sql.y:7829 { yyLOCAL = tree.INDEX_CATEGORY_NONE } yyVAL.union = yyLOCAL - case 1191: + case 1190: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7828 +//line mysql_sql.y:7833 { yyLOCAL = tree.INDEX_CATEGORY_FULLTEXT } yyVAL.union = yyLOCAL - case 1192: + case 1191: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7832 +//line mysql_sql.y:7837 { yyLOCAL = tree.INDEX_CATEGORY_SPATIAL } yyVAL.union = yyLOCAL - case 1193: + case 1192: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7836 +//line mysql_sql.y:7841 { yyLOCAL = tree.INDEX_CATEGORY_UNIQUE } yyVAL.union = yyLOCAL - case 1194: + case 1193: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7842 +//line mysql_sql.y:7847 { var io *tree.IndexOption = nil if yyDollar[11].indexOptionUnion() == nil && yyDollar[5].indexTypeUnion() != tree.INDEX_TYPE_INVALID { @@ -20660,18 +20663,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1195: + case 1194: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7873 +//line mysql_sql.y:7878 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1196: + case 1195: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7877 +//line mysql_sql.y:7882 { // Merge the options if yyDollar[1].indexOptionUnion() == nil { @@ -20704,20 +20707,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1197: + case 1196: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7911 +//line mysql_sql.y:7916 { io := tree.NewIndexOption() io.KeyBlockSize = uint64(yyDollar[3].item.(int64)) yyLOCAL = io } yyVAL.union = yyLOCAL - case 1198: + case 1197: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7917 +//line mysql_sql.y:7922 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20730,60 +20733,60 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1199: + case 1198: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7929 +//line mysql_sql.y:7934 { io := tree.NewIndexOption() io.AlgoParamVectorOpType = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1200: + case 1199: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7935 +//line mysql_sql.y:7940 { io := tree.NewIndexOption() io.Comment = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1201: + case 1200: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7941 +//line mysql_sql.y:7946 { io := tree.NewIndexOption() io.ParserName = yyDollar[3].cstrUnion().Compare() yyLOCAL = io } yyVAL.union = yyLOCAL - case 1202: + case 1201: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7947 +//line mysql_sql.y:7952 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_VISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1203: + case 1202: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7953 +//line mysql_sql.y:7958 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_INVISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1204: + case 1203: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7959 +//line mysql_sql.y:7964 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20795,10 +20798,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1205: + case 1204: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7970 +//line mysql_sql.y:7975 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20810,10 +20813,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1206: + case 1205: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7981 +//line mysql_sql.y:7986 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20825,36 +20828,36 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1207: + case 1206: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7992 +//line mysql_sql.y:7997 { io := tree.NewIndexOption() io.HnswQuantization = yyDollar[3].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1208: + case 1207: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:8001 +//line mysql_sql.y:8006 { yyLOCAL = []*tree.KeyPart{yyDollar[1].keyPartUnion()} } yyVAL.union = yyLOCAL - case 1209: + case 1208: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:8005 +//line mysql_sql.y:8010 { yyLOCAL = append(yyDollar[1].keyPartsUnion(), yyDollar[3].keyPartUnion()) } yyVAL.union = yyLOCAL - case 1210: + case 1209: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:8011 +//line mysql_sql.y:8016 { // Order is parsed but just ignored as MySQL dtree. var ColName = yyDollar[1].unresolvedNameUnion() @@ -20869,10 +20872,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1211: + case 1210: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:8025 +//line mysql_sql.y:8030 { var ColName *tree.UnresolvedName var Length int @@ -20886,74 +20889,74 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1212: + case 1211: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8039 +//line mysql_sql.y:8044 { yyLOCAL = tree.INDEX_TYPE_INVALID } yyVAL.union = yyLOCAL - case 1213: + case 1212: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8043 +//line mysql_sql.y:8048 { yyLOCAL = tree.INDEX_TYPE_BTREE } yyVAL.union = yyLOCAL - case 1214: + case 1213: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8047 +//line mysql_sql.y:8052 { yyLOCAL = tree.INDEX_TYPE_IVFFLAT } yyVAL.union = yyLOCAL - case 1215: + case 1214: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8051 +//line mysql_sql.y:8056 { yyLOCAL = tree.INDEX_TYPE_HNSW } yyVAL.union = yyLOCAL - case 1216: + case 1215: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8055 +//line mysql_sql.y:8060 { yyLOCAL = tree.INDEX_TYPE_MASTER } yyVAL.union = yyLOCAL - case 1217: + case 1216: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8059 +//line mysql_sql.y:8064 { yyLOCAL = tree.INDEX_TYPE_HASH } yyVAL.union = yyLOCAL - case 1218: + case 1217: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8063 +//line mysql_sql.y:8068 { yyLOCAL = tree.INDEX_TYPE_RTREE } yyVAL.union = yyLOCAL - case 1219: + case 1218: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:8067 +//line mysql_sql.y:8072 { yyLOCAL = tree.INDEX_TYPE_BSI } yyVAL.union = yyLOCAL - case 1220: + case 1219: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8073 +//line mysql_sql.y:8078 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].str) @@ -20967,10 +20970,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1221: + case 1220: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8087 +//line mysql_sql.y:8092 { var t = tree.NewCloneDatabase() t.DstDatabase = tree.Identifier(yyDollar[4].str) @@ -20980,92 +20983,92 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1222: + case 1221: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:8097 +//line mysql_sql.y:8102 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1223: + case 1222: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:8101 +//line mysql_sql.y:8106 { var From = tree.Identifier(yyDollar[2].str) var Publication = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewSubscriptionOption(From, Publication) } yyVAL.union = yyLOCAL - case 1226: + case 1225: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8112 +//line mysql_sql.y:8117 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1227: + case 1226: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8116 +//line mysql_sql.y:8121 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1228: + case 1227: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8121 +//line mysql_sql.y:8126 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1229: + case 1228: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8125 +//line mysql_sql.y:8130 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1230: + case 1229: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:8130 +//line mysql_sql.y:8135 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1231: + case 1230: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:8134 +//line mysql_sql.y:8139 { yyLOCAL = yyDollar[1].createOptionsUnion() } yyVAL.union = yyLOCAL - case 1232: + case 1231: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:8140 +//line mysql_sql.y:8145 { yyLOCAL = []tree.CreateOption{yyDollar[1].createOptionUnion()} } yyVAL.union = yyLOCAL - case 1233: + case 1232: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:8144 +//line mysql_sql.y:8149 { yyLOCAL = append(yyDollar[1].createOptionsUnion(), yyDollar[2].createOptionUnion()) } yyVAL.union = yyLOCAL - case 1234: + case 1233: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:8150 +//line mysql_sql.y:8155 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Charset = yyDollar[4].str @@ -21075,10 +21078,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1235: + case 1234: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:8159 +//line mysql_sql.y:8164 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Collate = yyDollar[4].str @@ -21088,35 +21091,35 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1236: + case 1235: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:8168 +//line mysql_sql.y:8173 { var Encrypt = yyDollar[4].str yyLOCAL = tree.NewCreateOptionEncryption(Encrypt) } yyVAL.union = yyLOCAL - case 1237: + case 1236: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8174 +//line mysql_sql.y:8179 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1238: + case 1237: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8178 +//line mysql_sql.y:8183 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1239: + case 1238: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8184 +//line mysql_sql.y:8189 { var TableName = yyDollar[4].tableNameUnion() var Options = yyDollar[7].connectorOptionsUnion() @@ -21126,18 +21129,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1240: + case 1239: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8195 +//line mysql_sql.y:8200 { yyLOCAL = &tree.ShowConnectors{} } yyVAL.union = yyLOCAL - case 1241: + case 1240: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8201 +//line mysql_sql.y:8206 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -21154,10 +21157,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1242: + case 1241: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8219 +//line mysql_sql.y:8224 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -21174,10 +21177,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1243: + case 1242: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8237 +//line mysql_sql.y:8242 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -21194,10 +21197,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1244: + case 1243: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8255 +//line mysql_sql.y:8260 { var Replace = yyDollar[2].sourceOptionalUnion() var IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -21213,26 +21216,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1245: + case 1244: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8271 +//line mysql_sql.y:8276 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1246: + case 1245: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8275 +//line mysql_sql.y:8280 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1247: + case 1246: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8282 +//line mysql_sql.y:8287 { t := tree.NewDataBranchCreateTable() t.CreateTable.Table = *yyDollar[5].tableNameUnion() @@ -21243,10 +21246,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1248: + case 1247: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8292 +//line mysql_sql.y:8297 { t := tree.NewDataBranchCreateDatabase() t.DstDatabase = tree.Identifier(yyDollar[5].str) @@ -21256,30 +21259,30 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1249: + case 1248: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8301 +//line mysql_sql.y:8306 { t := tree.NewDataBranchDeleteTable() t.TableName = *yyDollar[5].tableNameUnion() yyLOCAL = t } yyVAL.union = yyLOCAL - case 1250: + case 1249: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8307 +//line mysql_sql.y:8312 { t := tree.NewDataBranchDeleteDatabase() t.DatabaseName = tree.Identifier(yyDollar[5].str) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1251: + case 1250: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8313 +//line mysql_sql.y:8318 { t := tree.NewDataBranchDiff() t.TargetTable = *yyDollar[4].tableNameUnion() @@ -21289,10 +21292,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1252: + case 1251: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8322 +//line mysql_sql.y:8327 { t := tree.NewDataBranchMerge() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -21301,10 +21304,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1253: + case 1252: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8330 +//line mysql_sql.y:8335 { t := tree.NewDataBranchPick() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -21314,10 +21317,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1254: + case 1253: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8339 +//line mysql_sql.y:8344 { t := tree.NewDataBranchPick() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -21328,10 +21331,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1255: + case 1254: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8349 +//line mysql_sql.y:8354 { t := tree.NewDataBranchPick() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -21342,10 +21345,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1256: + case 1255: yyDollar = yyS[yypt-13 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8359 +//line mysql_sql.y:8364 { t := tree.NewDataBranchPick() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -21357,10 +21360,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1257: + case 1256: yyDollar = yyS[yypt-13 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8370 +//line mysql_sql.y:8375 { t := tree.NewDataBranchPick() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -21372,54 +21375,54 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1258: + case 1257: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:8382 +//line mysql_sql.y:8387 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1259: + case 1258: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:8386 +//line mysql_sql.y:8391 { yyLOCAL = yyDollar[3].identifierListUnion() } yyVAL.union = yyLOCAL - case 1260: + case 1259: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8391 +//line mysql_sql.y:8396 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1261: + case 1260: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8395 +//line mysql_sql.y:8400 { yyLOCAL = &tree.DiffOutputOpt{ As: *yyDollar[3].tableNameUnion(), } } yyVAL.union = yyLOCAL - case 1262: + case 1261: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8401 +//line mysql_sql.y:8406 { yyLOCAL = &tree.DiffOutputOpt{ DirPath: yyDollar[3].str, } } yyVAL.union = yyLOCAL - case 1263: + case 1262: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8407 +//line mysql_sql.y:8412 { x := yyDollar[3].item.(int64) yyLOCAL = &tree.DiffOutputOpt{ @@ -21427,68 +21430,68 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1264: + case 1263: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8414 +//line mysql_sql.y:8419 { yyLOCAL = &tree.DiffOutputOpt{ Count: true, } } yyVAL.union = yyLOCAL - case 1265: + case 1264: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8420 +//line mysql_sql.y:8425 { yyLOCAL = &tree.DiffOutputOpt{ Summary: true, } } yyVAL.union = yyLOCAL - case 1266: + case 1265: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8427 +//line mysql_sql.y:8432 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1267: + case 1266: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8431 +//line mysql_sql.y:8436 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_FAIL, } } yyVAL.union = yyLOCAL - case 1268: + case 1267: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8437 +//line mysql_sql.y:8442 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_SKIP, } } yyVAL.union = yyLOCAL - case 1269: + case 1268: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8443 +//line mysql_sql.y:8448 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_ACCEPT, } } yyVAL.union = yyLOCAL - case 1270: + case 1269: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PickKeys -//line mysql_sql.y:8451 +//line mysql_sql.y:8456 { yyLOCAL = &tree.PickKeys{ Type: tree.PickKeysValues, @@ -21496,10 +21499,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1271: + case 1270: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PickKeys -//line mysql_sql.y:8458 +//line mysql_sql.y:8463 { yyLOCAL = &tree.PickKeys{ Type: tree.PickKeysSubquery, @@ -21507,28 +21510,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1272: + case 1271: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ToAccountOpt -//line mysql_sql.y:8467 +//line mysql_sql.y:8472 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1273: + case 1272: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ToAccountOpt -//line mysql_sql.y:8471 +//line mysql_sql.y:8476 { yyLOCAL = &tree.ToAccountOpt{ AccountName: tree.Identifier(yyDollar[3].cstrUnion().Compare()), } } yyVAL.union = yyLOCAL - case 1274: + case 1273: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8479 +//line mysql_sql.y:8484 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -21541,10 +21544,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1275: + case 1274: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8491 +//line mysql_sql.y:8496 { t := tree.NewCreateTable() t.IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -21554,10 +21557,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1276: + case 1275: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8500 +//line mysql_sql.y:8505 { t := tree.NewCreateTable() t.IsClusterTable = true @@ -21570,10 +21573,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1277: + case 1276: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8512 +//line mysql_sql.y:8517 { t := tree.NewCreateTable() t.IsDynamicTable = true @@ -21584,10 +21587,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1278: + case 1277: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8522 +//line mysql_sql.y:8527 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -21598,10 +21601,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1279: + case 1278: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8532 +//line mysql_sql.y:8537 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -21613,10 +21616,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1280: + case 1279: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8543 +//line mysql_sql.y:8548 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -21627,10 +21630,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1281: + case 1280: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8553 +//line mysql_sql.y:8558 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -21642,10 +21645,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1282: + case 1281: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8564 +//line mysql_sql.y:8569 { t := tree.NewCreateTable() t.IsAsLike = true @@ -21654,10 +21657,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1283: + case 1282: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8572 +//line mysql_sql.y:8577 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -21667,10 +21670,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1284: + case 1283: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8581 +//line mysql_sql.y:8586 { t := tree.NewCloneTable() t.CreateTable.Table = *yyDollar[5].tableNameUnion() @@ -21681,19 +21684,19 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1285: + case 1284: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8593 +//line mysql_sql.y:8598 { yyLOCAL = yyDollar[1].loadParamUnion() yyLOCAL.Tail = yyDollar[2].tailParamUnion() } yyVAL.union = yyLOCAL - case 1286: + case 1285: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8600 +//line mysql_sql.y:8605 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21704,10 +21707,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1287: + case 1286: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8610 +//line mysql_sql.y:8615 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21721,10 +21724,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1288: + case 1287: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8623 +//line mysql_sql.y:8628 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21733,10 +21736,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1289: + case 1288: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8631 +//line mysql_sql.y:8636 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21746,10 +21749,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1290: + case 1289: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8640 +//line mysql_sql.y:8645 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21758,55 +21761,55 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1291: + case 1290: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8649 +//line mysql_sql.y:8654 { yyVAL.str = "" } - case 1292: + case 1291: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:8653 +//line mysql_sql.y:8658 { yyVAL.str = yyDollar[4].str } - case 1293: + case 1292: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8659 +//line mysql_sql.y:8664 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1294: + case 1293: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8663 +//line mysql_sql.y:8668 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1295: + case 1294: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8668 +//line mysql_sql.y:8673 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1296: + case 1295: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8672 +//line mysql_sql.y:8677 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1297: + case 1296: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.TailParameter -//line mysql_sql.y:8679 +//line mysql_sql.y:8684 { yyLOCAL = &tree.TailParameter{ Charset: yyDollar[1].str, @@ -21818,22 +21821,22 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1298: + case 1297: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8691 +//line mysql_sql.y:8696 { yyVAL.str = "" } - case 1299: + case 1298: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8695 +//line mysql_sql.y:8700 { yyVAL.str = yyDollar[2].str } - case 1300: + case 1299: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8701 +//line mysql_sql.y:8706 { var Name = yyDollar[4].tableNameUnion() var Type = yyDollar[5].columnTypeUnion() @@ -21855,10 +21858,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1301: + case 1300: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8722 +//line mysql_sql.y:8727 { locale := "" fstr := "bigint" @@ -21873,44 +21876,44 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1302: + case 1301: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8736 +//line mysql_sql.y:8741 { yyLOCAL = yyDollar[2].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1303: + case 1302: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8740 +//line mysql_sql.y:8745 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1304: + case 1303: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8744 +//line mysql_sql.y:8749 { yyLOCAL = &tree.TypeOption{ Type: yyDollar[2].columnTypeUnion(), } } yyVAL.union = yyLOCAL - case 1305: + case 1304: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8750 +//line mysql_sql.y:8755 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1306: + case 1305: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8754 +//line mysql_sql.y:8759 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -21918,10 +21921,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1307: + case 1306: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8761 +//line mysql_sql.y:8766 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -21929,10 +21932,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1308: + case 1307: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8768 +//line mysql_sql.y:8773 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -21940,10 +21943,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1309: + case 1308: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8775 +//line mysql_sql.y:8780 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -21951,42 +21954,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1310: + case 1309: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8782 +//line mysql_sql.y:8787 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1311: + case 1310: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8786 +//line mysql_sql.y:8791 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1312: + case 1311: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8790 +//line mysql_sql.y:8795 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1313: + case 1312: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8794 +//line mysql_sql.y:8799 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1314: + case 1313: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8798 +//line mysql_sql.y:8803 { yyLOCAL = &tree.MinValueOption{ Minus: false, @@ -21994,10 +21997,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1315: + case 1314: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8805 +//line mysql_sql.y:8810 { yyLOCAL = &tree.MinValueOption{ Minus: true, @@ -22005,18 +22008,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1316: + case 1315: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8812 +//line mysql_sql.y:8817 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1317: + case 1316: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8816 +//line mysql_sql.y:8821 { yyLOCAL = &tree.MaxValueOption{ Minus: false, @@ -22024,10 +22027,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1318: + case 1317: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8823 +//line mysql_sql.y:8828 { yyLOCAL = &tree.MaxValueOption{ Minus: true, @@ -22035,46 +22038,46 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1319: + case 1318: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8830 +//line mysql_sql.y:8835 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1320: + case 1319: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8834 +//line mysql_sql.y:8839 { yyLOCAL = &tree.CycleOption{ Cycle: false, } } yyVAL.union = yyLOCAL - case 1321: + case 1320: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8840 +//line mysql_sql.y:8845 { yyLOCAL = &tree.CycleOption{ Cycle: true, } } yyVAL.union = yyLOCAL - case 1322: + case 1321: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8846 +//line mysql_sql.y:8851 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1323: + case 1322: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8850 +//line mysql_sql.y:8855 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -22082,10 +22085,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1324: + case 1323: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8857 +//line mysql_sql.y:8862 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -22093,10 +22096,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1325: + case 1324: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8864 +//line mysql_sql.y:8869 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -22104,10 +22107,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1326: + case 1325: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8871 +//line mysql_sql.y:8876 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -22115,58 +22118,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1327: + case 1326: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8878 +//line mysql_sql.y:8883 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1328: + case 1327: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8882 +//line mysql_sql.y:8887 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1329: + case 1328: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8887 +//line mysql_sql.y:8892 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1330: + case 1329: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8891 +//line mysql_sql.y:8896 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1331: + case 1330: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8895 +//line mysql_sql.y:8900 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1332: + case 1331: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8900 +//line mysql_sql.y:8905 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1333: + case 1332: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8904 +//line mysql_sql.y:8909 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -22179,18 +22182,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1334: + case 1333: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8917 +//line mysql_sql.y:8922 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1335: + case 1334: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8921 +//line mysql_sql.y:8926 { var ColumnList = []*tree.UnresolvedName{yyDollar[3].unresolvedNameUnion()} yyLOCAL = tree.NewClusterByOption( @@ -22199,10 +22202,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1336: + case 1335: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8929 +//line mysql_sql.y:8934 { var ColumnList = yyDollar[4].unresolveNamesUnion() yyLOCAL = tree.NewClusterByOption( @@ -22210,18 +22213,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1337: + case 1336: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8937 +//line mysql_sql.y:8942 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1338: + case 1337: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8941 +//line mysql_sql.y:8946 { var IsSubPartition = true var PType = yyDollar[3].partitionByUnion() @@ -22233,42 +22236,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1339: + case 1338: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8953 +//line mysql_sql.y:8958 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1340: + case 1339: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8957 +//line mysql_sql.y:8962 { yyLOCAL = yyDollar[2].partitionsUnion() } yyVAL.union = yyLOCAL - case 1341: + case 1340: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8963 +//line mysql_sql.y:8968 { yyLOCAL = []*tree.Partition{yyDollar[1].partitionUnion()} } yyVAL.union = yyLOCAL - case 1342: + case 1341: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8967 +//line mysql_sql.y:8972 { yyLOCAL = append(yyDollar[1].partitionsUnion(), yyDollar[3].partitionUnion()) } yyVAL.union = yyLOCAL - case 1343: + case 1342: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8973 +//line mysql_sql.y:8978 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -22282,10 +22285,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1344: + case 1343: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8986 +//line mysql_sql.y:8991 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -22299,42 +22302,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1345: + case 1344: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:9000 +//line mysql_sql.y:9005 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1346: + case 1345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:9004 +//line mysql_sql.y:9009 { yyLOCAL = yyDollar[2].subPartitionsUnion() } yyVAL.union = yyLOCAL - case 1347: + case 1346: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:9010 +//line mysql_sql.y:9015 { yyLOCAL = []*tree.SubPartition{yyDollar[1].subPartitionUnion()} } yyVAL.union = yyLOCAL - case 1348: + case 1347: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:9014 +//line mysql_sql.y:9019 { yyLOCAL = append(yyDollar[1].subPartitionsUnion(), yyDollar[3].subPartitionUnion()) } yyVAL.union = yyLOCAL - case 1349: + case 1348: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:9020 +//line mysql_sql.y:9025 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options []tree.TableOption @@ -22344,10 +22347,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1350: + case 1349: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:9029 +//line mysql_sql.y:9034 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options = yyDollar[3].tableOptionsUnion() @@ -22357,53 +22360,53 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1351: + case 1350: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9040 +//line mysql_sql.y:9045 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1352: + case 1351: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9044 +//line mysql_sql.y:9049 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1353: + case 1352: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:9049 +//line mysql_sql.y:9054 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1354: + case 1353: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:9053 +//line mysql_sql.y:9058 { expr := tree.NewMaxValue() var valueList = tree.Exprs{expr} yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1355: + case 1354: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:9059 +//line mysql_sql.y:9064 { var valueList = yyDollar[5].exprsUnion() yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1356: + case 1355: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:9064 +//line mysql_sql.y:9069 { var valueList = yyDollar[4].exprsUnion() yyLOCAL = tree.NewValuesIn( @@ -22411,18 +22414,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1357: + case 1356: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9072 +//line mysql_sql.y:9077 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1358: + case 1357: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9076 +//line mysql_sql.y:9081 { res := yyDollar[2].item.(int64) if res == 0 { @@ -22432,18 +22435,18 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1359: + case 1358: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9086 +//line mysql_sql.y:9091 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1360: + case 1359: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9090 +//line mysql_sql.y:9095 { res := yyDollar[2].item.(int64) if res == 0 { @@ -22453,10 +22456,10 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1361: + case 1360: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:9101 +//line mysql_sql.y:9106 { rangeTyp := tree.NewRangeType() rangeTyp.Expr = yyDollar[3].exprUnion() @@ -22465,10 +22468,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1362: + case 1361: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:9109 +//line mysql_sql.y:9114 { rangeTyp := tree.NewRangeType() rangeTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -22477,10 +22480,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1363: + case 1362: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:9117 +//line mysql_sql.y:9122 { listTyp := tree.NewListType() listTyp.Expr = yyDollar[3].exprUnion() @@ -22489,10 +22492,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1364: + case 1363: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:9125 +//line mysql_sql.y:9130 { listTyp := tree.NewListType() listTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -22501,10 +22504,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1366: + case 1365: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:9136 +//line mysql_sql.y:9141 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -22514,10 +22517,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1367: + case 1366: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:9145 +//line mysql_sql.y:9150 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -22528,10 +22531,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1368: + case 1367: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:9155 +//line mysql_sql.y:9160 { Linear := yyDollar[1].boolValUnion() Expr := yyDollar[4].exprUnion() @@ -22541,58 +22544,58 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1369: + case 1368: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9165 +//line mysql_sql.y:9170 { yyLOCAL = 2 } yyVAL.union = yyLOCAL - case 1370: + case 1369: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9169 +//line mysql_sql.y:9174 { yyLOCAL = yyDollar[3].item.(int64) } yyVAL.union = yyLOCAL - case 1371: + case 1370: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9174 +//line mysql_sql.y:9179 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1372: + case 1371: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9178 +//line mysql_sql.y:9183 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1373: + case 1372: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:9184 +//line mysql_sql.y:9189 { yyLOCAL = []*tree.ConnectorOption{yyDollar[1].connectorOptionUnion()} } yyVAL.union = yyLOCAL - case 1374: + case 1373: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:9188 +//line mysql_sql.y:9193 { yyLOCAL = append(yyDollar[1].connectorOptionsUnion(), yyDollar[3].connectorOptionUnion()) } yyVAL.union = yyLOCAL - case 1375: + case 1374: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:9194 +//line mysql_sql.y:9199 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -22602,10 +22605,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1376: + case 1375: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:9203 +//line mysql_sql.y:9208 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -22615,42 +22618,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1377: + case 1376: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9213 +//line mysql_sql.y:9218 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1378: + case 1377: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9217 +//line mysql_sql.y:9222 { yyLOCAL = yyDollar[3].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1379: + case 1378: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9223 +//line mysql_sql.y:9228 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1380: + case 1379: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9227 +//line mysql_sql.y:9232 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1381: + case 1380: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9233 +//line mysql_sql.y:9238 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -22660,10 +22663,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1382: + case 1381: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9242 +//line mysql_sql.y:9247 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -22673,364 +22676,364 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1383: + case 1382: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9252 +//line mysql_sql.y:9257 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1384: + case 1383: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9256 +//line mysql_sql.y:9261 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1385: + case 1384: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9262 +//line mysql_sql.y:9267 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1386: + case 1385: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9266 +//line mysql_sql.y:9271 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1387: + case 1386: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:9270 +//line mysql_sql.y:9275 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1388: + case 1387: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9276 +//line mysql_sql.y:9281 { yyLOCAL = tree.NewTableOptionAUTOEXTEND_SIZE(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1389: + case 1388: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9280 +//line mysql_sql.y:9285 { yyLOCAL = tree.NewTableOptionAutoIncrement(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1390: + case 1389: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9284 +//line mysql_sql.y:9289 { yyLOCAL = tree.NewTableOptionAvgRowLength(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1391: + case 1390: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9288 +//line mysql_sql.y:9293 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1392: + case 1391: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9292 +//line mysql_sql.y:9297 { yyLOCAL = tree.NewTableOptionCollate(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1393: + case 1392: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9296 +//line mysql_sql.y:9301 { yyLOCAL = tree.NewTableOptionChecksum(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1394: + case 1393: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9300 +//line mysql_sql.y:9305 { str := util.DealCommentString(yyDollar[3].str) yyLOCAL = tree.NewTableOptionComment(str) } yyVAL.union = yyLOCAL - case 1395: + case 1394: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9305 +//line mysql_sql.y:9310 { yyLOCAL = tree.NewTableOptionCompression(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1396: + case 1395: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9309 +//line mysql_sql.y:9314 { yyLOCAL = tree.NewTableOptionConnection(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1397: + case 1396: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9313 +//line mysql_sql.y:9318 { yyLOCAL = tree.NewTableOptionDataDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1398: + case 1397: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9317 +//line mysql_sql.y:9322 { yyLOCAL = tree.NewTableOptionIndexDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1399: + case 1398: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9321 +//line mysql_sql.y:9326 { yyLOCAL = tree.NewTableOptionDelayKeyWrite(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1400: + case 1399: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9325 +//line mysql_sql.y:9330 { yyLOCAL = tree.NewTableOptionEncryption(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1401: + case 1400: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9329 +//line mysql_sql.y:9334 { yyLOCAL = tree.NewTableOptionEngine(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1402: + case 1401: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9333 +//line mysql_sql.y:9338 { yyLOCAL = tree.NewTableOptionEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1403: + case 1402: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9337 +//line mysql_sql.y:9342 { yyLOCAL = tree.NewTableOptionInsertMethod(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1404: + case 1403: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9341 +//line mysql_sql.y:9346 { yyLOCAL = tree.NewTableOptionKeyBlockSize(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1405: + case 1404: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9345 +//line mysql_sql.y:9350 { yyLOCAL = tree.NewTableOptionMaxRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1406: + case 1405: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9349 +//line mysql_sql.y:9354 { yyLOCAL = tree.NewTableOptionMinRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1407: + case 1406: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9353 +//line mysql_sql.y:9358 { t := tree.NewTableOptionPackKeys() t.Value = yyDollar[3].item.(int64) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1408: + case 1407: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9359 +//line mysql_sql.y:9364 { t := tree.NewTableOptionPackKeys() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1409: + case 1408: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9365 +//line mysql_sql.y:9370 { yyLOCAL = tree.NewTableOptionPassword(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1410: + case 1409: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9369 +//line mysql_sql.y:9374 { yyLOCAL = tree.NewTableOptionRowFormat(yyDollar[3].rowFormatTypeUnion()) } yyVAL.union = yyLOCAL - case 1411: + case 1410: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9373 +//line mysql_sql.y:9378 { yyLOCAL = tree.NewTTableOptionStartTrans(true) } yyVAL.union = yyLOCAL - case 1412: + case 1411: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9377 +//line mysql_sql.y:9382 { yyLOCAL = tree.NewTTableOptionSecondaryEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1413: + case 1412: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9381 +//line mysql_sql.y:9386 { t := tree.NewTableOptionStatsAutoRecalc() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1414: + case 1413: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9387 +//line mysql_sql.y:9392 { t := tree.NewTableOptionStatsAutoRecalc() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1415: + case 1414: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9393 +//line mysql_sql.y:9398 { t := tree.NewTableOptionStatsPersistent() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1416: + case 1415: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9399 +//line mysql_sql.y:9404 { t := tree.NewTableOptionStatsPersistent() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1417: + case 1416: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9405 +//line mysql_sql.y:9410 { t := tree.NewTableOptionStatsSamplePages() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1418: + case 1417: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9411 +//line mysql_sql.y:9416 { t := tree.NewTableOptionStatsSamplePages() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1419: + case 1418: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9417 +//line mysql_sql.y:9422 { yyLOCAL = tree.NewTableOptionTablespace(yyDollar[3].cstrUnion().Compare(), "") } yyVAL.union = yyLOCAL - case 1420: + case 1419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9421 +//line mysql_sql.y:9426 { yyLOCAL = tree.NewTableOptionTablespace("", yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1421: + case 1420: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9425 +//line mysql_sql.y:9430 { yyLOCAL = tree.NewTableOptionUnion(yyDollar[4].tableNamesUnion()) } yyVAL.union = yyLOCAL - case 1422: + case 1421: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9429 +//line mysql_sql.y:9434 { var Preperties = yyDollar[3].propertiesUnion() yyLOCAL = tree.NewTableOptionProperties(Preperties) } yyVAL.union = yyLOCAL - case 1423: + case 1422: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:9436 +//line mysql_sql.y:9441 { yyLOCAL = []tree.Property{yyDollar[1].propertyUnion()} } yyVAL.union = yyLOCAL - case 1424: + case 1423: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:9440 +//line mysql_sql.y:9445 { yyLOCAL = append(yyDollar[1].propertiesUnion(), yyDollar[3].propertyUnion()) } yyVAL.union = yyLOCAL - case 1425: + case 1424: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Property -//line mysql_sql.y:9446 +//line mysql_sql.y:9451 { var Key = yyDollar[1].str var Value = yyDollar[3].str @@ -23040,96 +23043,96 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1426: + case 1425: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9457 +//line mysql_sql.y:9462 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1427: + case 1426: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9461 +//line mysql_sql.y:9466 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1428: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9467 +//line mysql_sql.y:9472 { yyLOCAL = tree.ROW_FORMAT_DEFAULT } yyVAL.union = yyLOCAL - case 1429: + case 1428: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9471 +//line mysql_sql.y:9476 { yyLOCAL = tree.ROW_FORMAT_DYNAMIC } yyVAL.union = yyLOCAL - case 1430: + case 1429: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9475 +//line mysql_sql.y:9480 { yyLOCAL = tree.ROW_FORMAT_FIXED } yyVAL.union = yyLOCAL - case 1431: + case 1430: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9479 +//line mysql_sql.y:9484 { yyLOCAL = tree.ROW_FORMAT_COMPRESSED } yyVAL.union = yyLOCAL - case 1432: + case 1431: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9483 +//line mysql_sql.y:9488 { yyLOCAL = tree.ROW_FORMAT_REDUNDANT } yyVAL.union = yyLOCAL - case 1433: + case 1432: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9487 +//line mysql_sql.y:9492 { yyLOCAL = tree.ROW_FORMAT_COMPACT } yyVAL.union = yyLOCAL - case 1438: + case 1437: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:9501 +//line mysql_sql.y:9506 { yyLOCAL = tree.TableNames{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 1439: + case 1438: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:9505 +//line mysql_sql.y:9510 { yyLOCAL = append(yyDollar[1].tableNamesUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 1440: + case 1439: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:9514 +//line mysql_sql.y:9519 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[2].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1441: + case 1440: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:9520 +//line mysql_sql.y:9525 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -23137,18 +23140,18 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[4].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1442: + case 1441: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9528 +//line mysql_sql.y:9533 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1443: + case 1442: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9532 +//line mysql_sql.y:9537 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPTIME, @@ -23156,10 +23159,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1444: + case 1443: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9539 +//line mysql_sql.y:9544 { var str = yyDollar[4].cstrUnion().Compare() yyLOCAL = &tree.AtTimeStamp{ @@ -23169,10 +23172,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1445: + case 1444: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9548 +//line mysql_sql.y:9553 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPSNAPSHOT, @@ -23181,10 +23184,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1446: + case 1445: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9556 +//line mysql_sql.y:9561 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATMOTIMESTAMP, @@ -23192,10 +23195,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1447: + case 1446: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9563 +//line mysql_sql.y:9568 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ASOFTIMESTAMP, @@ -23203,74 +23206,74 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1448: + case 1447: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9571 +//line mysql_sql.y:9576 { yyLOCAL = tree.TableDefs(nil) } yyVAL.union = yyLOCAL - case 1450: + case 1449: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9578 +//line mysql_sql.y:9583 { yyLOCAL = tree.TableDefs{yyDollar[1].tableDefUnion()} } yyVAL.union = yyLOCAL - case 1451: + case 1450: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9582 +//line mysql_sql.y:9587 { yyLOCAL = append(yyDollar[1].tableDefsUnion(), yyDollar[3].tableDefUnion()) } yyVAL.union = yyLOCAL - case 1452: + case 1451: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9588 +//line mysql_sql.y:9593 { yyLOCAL = tree.TableDef(yyDollar[1].columnTableDefUnion()) } yyVAL.union = yyLOCAL - case 1453: + case 1452: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9592 +//line mysql_sql.y:9597 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1454: + case 1453: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9596 +//line mysql_sql.y:9601 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1455: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9602 +//line mysql_sql.y:9607 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1456: + case 1455: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9606 +//line mysql_sql.y:9611 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1457: + case 1456: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9612 +//line mysql_sql.y:9617 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -23284,10 +23287,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1458: + case 1457: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9625 +//line mysql_sql.y:9630 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -23301,10 +23304,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1459: + case 1458: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9638 +//line mysql_sql.y:9643 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -23346,10 +23349,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1460: + case 1459: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9679 +//line mysql_sql.y:9684 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -23390,10 +23393,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1461: + case 1460: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9721 +//line mysql_sql.y:9726 { if yyDollar[1].str != "" { switch v := yyDollar[2].tableDefUnion().(type) { @@ -23408,18 +23411,18 @@ yydefault: yyLOCAL = yyDollar[2].tableDefUnion() } yyVAL.union = yyLOCAL - case 1462: + case 1461: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9735 +//line mysql_sql.y:9740 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1463: + case 1462: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9741 +//line mysql_sql.y:9746 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -23433,10 +23436,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1464: + case 1463: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9754 +//line mysql_sql.y:9759 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -23450,10 +23453,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1465: + case 1464: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9767 +//line mysql_sql.y:9772 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -23467,10 +23470,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1466: + case 1465: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9780 +//line mysql_sql.y:9785 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -23484,10 +23487,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1467: + case 1466: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9793 +//line mysql_sql.y:9798 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var KeyParts = yyDollar[6].keyPartsUnion() @@ -23503,10 +23506,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1468: + case 1467: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9808 +//line mysql_sql.y:9813 { var Expr = yyDollar[3].exprUnion() var Enforced = yyDollar[5].boolValUnion() @@ -23516,327 +23519,327 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1469: + case 1468: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9818 +//line mysql_sql.y:9823 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1471: + case 1470: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9824 +//line mysql_sql.y:9829 { yyVAL.str = "" } - case 1472: + case 1471: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9828 +//line mysql_sql.y:9833 { yyVAL.str = yyDollar[1].str } - case 1475: + case 1474: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9838 +//line mysql_sql.y:9843 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = "" } yyVAL.union = yyLOCAL - case 1476: + case 1475: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9844 +//line mysql_sql.y:9849 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1477: + case 1476: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9850 +//line mysql_sql.y:9855 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].cstrUnion().Compare() yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1489: + case 1488: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9872 +//line mysql_sql.y:9877 { yyVAL.str = "" } - case 1490: + case 1489: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9876 +//line mysql_sql.y:9881 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1491: + case 1490: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ColumnTableDef -//line mysql_sql.y:9882 +//line mysql_sql.y:9887 { yyLOCAL = tree.NewColumnTableDef(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[3].columnAttributesUnion()) } yyVAL.union = yyLOCAL - case 1492: + case 1491: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9888 +//line mysql_sql.y:9893 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1493: + case 1492: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9892 +//line mysql_sql.y:9897 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1494: + case 1493: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9897 +//line mysql_sql.y:9902 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1495: + case 1494: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9905 +//line mysql_sql.y:9910 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1496: + case 1495: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9909 +//line mysql_sql.y:9914 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1497: + case 1496: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9913 +//line mysql_sql.y:9918 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1498: + case 1497: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9917 +//line mysql_sql.y:9922 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1499: + case 1498: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9923 +//line mysql_sql.y:9928 { yyLOCAL = yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) } yyVAL.union = yyLOCAL - case 1500: + case 1499: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9929 +//line mysql_sql.y:9934 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1501: + case 1500: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9933 +//line mysql_sql.y:9938 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1502: + case 1501: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9938 +//line mysql_sql.y:9943 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1503: + case 1502: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9945 +//line mysql_sql.y:9950 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1504: + case 1503: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9949 +//line mysql_sql.y:9954 { yyLOCAL = yyDollar[1].columnAttributesUnion() } yyVAL.union = yyLOCAL - case 1505: + case 1504: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9955 +//line mysql_sql.y:9960 { yyLOCAL = []tree.ColumnAttribute{yyDollar[1].columnAttributeUnion()} } yyVAL.union = yyLOCAL - case 1506: + case 1505: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9959 +//line mysql_sql.y:9964 { yyLOCAL = append(yyDollar[1].columnAttributesUnion(), yyDollar[2].columnAttributeUnion()) } yyVAL.union = yyLOCAL - case 1507: + case 1506: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9965 +//line mysql_sql.y:9970 { yyLOCAL = tree.NewAttributeNull(true) } yyVAL.union = yyLOCAL - case 1508: + case 1507: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9969 +//line mysql_sql.y:9974 { yyLOCAL = tree.NewAttributeNull(false) } yyVAL.union = yyLOCAL - case 1509: + case 1508: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9973 +//line mysql_sql.y:9978 { yyLOCAL = tree.NewAttributeDefault(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1510: + case 1509: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9977 +//line mysql_sql.y:9982 { yyLOCAL = tree.NewAttributeAutoIncrement() } yyVAL.union = yyLOCAL - case 1511: + case 1510: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9981 +//line mysql_sql.y:9986 { yyLOCAL = yyDollar[1].columnAttributeUnion() } yyVAL.union = yyLOCAL - case 1512: + case 1511: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9985 +//line mysql_sql.y:9990 { str := util.DealCommentString(yyDollar[2].str) yyLOCAL = tree.NewAttributeComment(tree.NewNumVal(str, str, false, tree.P_char)) } yyVAL.union = yyLOCAL - case 1513: + case 1512: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9990 +//line mysql_sql.y:9995 { yyLOCAL = tree.NewAttributeCollate(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1514: + case 1513: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9994 +//line mysql_sql.y:9999 { yyLOCAL = tree.NewAttributeColumnFormat(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1515: + case 1514: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9998 +//line mysql_sql.y:10003 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1516: + case 1515: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10002 +//line mysql_sql.y:10007 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1517: + case 1516: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10006 +//line mysql_sql.y:10011 { yyLOCAL = tree.NewAttributeStorage(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1518: + case 1517: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10010 +//line mysql_sql.y:10015 { yyLOCAL = tree.NewAttributeAutoRandom(int(yyDollar[2].int64ValUnion())) } yyVAL.union = yyLOCAL - case 1519: + case 1518: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10014 +//line mysql_sql.y:10019 { yyLOCAL = yyDollar[1].attributeReferenceUnion() } yyVAL.union = yyLOCAL - case 1520: + case 1519: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10018 +//line mysql_sql.y:10023 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), false, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1521: + case 1520: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10022 +//line mysql_sql.y:10027 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), yyDollar[6].boolValUnion(), yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1522: + case 1521: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10026 +//line mysql_sql.y:10031 { name := tree.NewUnresolvedColName(yyDollar[3].str) var es tree.Exprs = nil @@ -23851,98 +23854,98 @@ yydefault: yyLOCAL = tree.NewAttributeOnUpdate(expr) } yyVAL.union = yyLOCAL - case 1523: + case 1522: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10040 +//line mysql_sql.y:10045 { yyLOCAL = tree.NewAttributeLowCardinality() } yyVAL.union = yyLOCAL - case 1524: + case 1523: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10044 +//line mysql_sql.y:10049 { yyLOCAL = tree.NewAttributeVisable(true) } yyVAL.union = yyLOCAL - case 1525: + case 1524: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10048 +//line mysql_sql.y:10053 { yyLOCAL = tree.NewAttributeVisable(false) } yyVAL.union = yyLOCAL - case 1526: + case 1525: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10052 +//line mysql_sql.y:10057 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1527: + case 1526: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10056 +//line mysql_sql.y:10061 { yyLOCAL = tree.NewAttributeHeader(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1528: + case 1527: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:10060 +//line mysql_sql.y:10065 { yyLOCAL = tree.NewAttributeHeaders() } yyVAL.union = yyLOCAL - case 1529: + case 1528: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:10066 +//line mysql_sql.y:10071 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1530: + case 1529: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:10070 +//line mysql_sql.y:10075 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1531: + case 1530: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10075 +//line mysql_sql.y:10080 { yyVAL.str = "" } - case 1532: + case 1531: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10079 +//line mysql_sql.y:10084 { yyVAL.str = yyDollar[1].str } - case 1533: + case 1532: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10085 +//line mysql_sql.y:10090 { yyVAL.str = "" } - case 1534: + case 1533: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10089 +//line mysql_sql.y:10094 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } - case 1535: + case 1534: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AttributeReference -//line mysql_sql.y:10095 +//line mysql_sql.y:10100 { var TableName = yyDollar[2].tableNameUnion() var KeyParts = yyDollar[3].keyPartsUnion() @@ -23958,10 +23961,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1536: + case 1535: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:10112 +//line mysql_sql.y:10117 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -23969,10 +23972,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1537: + case 1536: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:10119 +//line mysql_sql.y:10124 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -23980,10 +23983,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1538: + case 1537: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:10126 +//line mysql_sql.y:10131 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -23991,10 +23994,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1539: + case 1538: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:10133 +//line mysql_sql.y:10138 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -24002,10 +24005,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1540: + case 1539: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:10140 +//line mysql_sql.y:10145 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[2].referenceOptionTypeUnion(), @@ -24013,354 +24016,354 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1541: + case 1540: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:10149 +//line mysql_sql.y:10154 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1542: + case 1541: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:10155 +//line mysql_sql.y:10160 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1543: + case 1542: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:10161 +//line mysql_sql.y:10166 { yyLOCAL = tree.REFERENCE_OPTION_RESTRICT } yyVAL.union = yyLOCAL - case 1544: + case 1543: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:10165 +//line mysql_sql.y:10170 { yyLOCAL = tree.REFERENCE_OPTION_CASCADE } yyVAL.union = yyLOCAL - case 1545: + case 1544: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:10169 +//line mysql_sql.y:10174 { yyLOCAL = tree.REFERENCE_OPTION_SET_NULL } yyVAL.union = yyLOCAL - case 1546: + case 1545: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:10173 +//line mysql_sql.y:10178 { yyLOCAL = tree.REFERENCE_OPTION_NO_ACTION } yyVAL.union = yyLOCAL - case 1547: + case 1546: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:10177 +//line mysql_sql.y:10182 { yyLOCAL = tree.REFERENCE_OPTION_SET_DEFAULT } yyVAL.union = yyLOCAL - case 1548: + case 1547: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:10182 +//line mysql_sql.y:10187 { yyLOCAL = tree.MATCH_INVALID } yyVAL.union = yyLOCAL - case 1550: + case 1549: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:10189 +//line mysql_sql.y:10194 { yyLOCAL = tree.MATCH_FULL } yyVAL.union = yyLOCAL - case 1551: + case 1550: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:10193 +//line mysql_sql.y:10198 { yyLOCAL = tree.MATCH_PARTIAL } yyVAL.union = yyLOCAL - case 1552: + case 1551: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:10197 +//line mysql_sql.y:10202 { yyLOCAL = tree.MATCH_SIMPLE } yyVAL.union = yyLOCAL - case 1553: + case 1552: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:10202 +//line mysql_sql.y:10207 { yyLOCAL = tree.FULLTEXT_DEFAULT } yyVAL.union = yyLOCAL - case 1554: + case 1553: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:10206 +//line mysql_sql.y:10211 { yyLOCAL = tree.FULLTEXT_NL } yyVAL.union = yyLOCAL - case 1555: + case 1554: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:10210 +//line mysql_sql.y:10215 { yyLOCAL = tree.FULLTEXT_NL_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1556: + case 1555: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:10214 +//line mysql_sql.y:10219 { yyLOCAL = tree.FULLTEXT_BOOLEAN } yyVAL.union = yyLOCAL - case 1557: + case 1556: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:10218 +//line mysql_sql.y:10223 { yyLOCAL = tree.FULLTEXT_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1558: + case 1557: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:10223 +//line mysql_sql.y:10228 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1559: + case 1558: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:10227 +//line mysql_sql.y:10232 { yyLOCAL = yyDollar[2].keyPartsUnion() } yyVAL.union = yyLOCAL - case 1560: + case 1559: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:10232 +//line mysql_sql.y:10237 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 1561: + case 1560: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:10236 +//line mysql_sql.y:10241 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 1568: + case 1567: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Subquery -//line mysql_sql.y:10252 +//line mysql_sql.y:10257 { yyLOCAL = &tree.Subquery{Select: yyDollar[1].selectStatementUnion(), Exists: false} } yyVAL.union = yyLOCAL - case 1569: + case 1568: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10258 +//line mysql_sql.y:10263 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_AND, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1570: + case 1569: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10262 +//line mysql_sql.y:10267 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_OR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1571: + case 1570: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10266 +//line mysql_sql.y:10271 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_XOR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1572: + case 1571: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10270 +//line mysql_sql.y:10275 { yyLOCAL = tree.NewBinaryExpr(tree.PLUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1573: + case 1572: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10274 +//line mysql_sql.y:10279 { yyLOCAL = tree.NewBinaryExpr(tree.MINUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1574: + case 1573: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10278 +//line mysql_sql.y:10283 { yyLOCAL = tree.NewBinaryExpr(tree.MULTI, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1575: + case 1574: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10282 +//line mysql_sql.y:10287 { yyLOCAL = tree.NewBinaryExpr(tree.DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1576: + case 1575: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10286 +//line mysql_sql.y:10291 { yyLOCAL = tree.NewBinaryExpr(tree.INTEGER_DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1577: + case 1576: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10290 +//line mysql_sql.y:10295 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1578: + case 1577: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10294 +//line mysql_sql.y:10299 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1579: + case 1578: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10298 +//line mysql_sql.y:10303 { yyLOCAL = tree.NewBinaryExpr(tree.LEFT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1580: + case 1579: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10302 +//line mysql_sql.y:10307 { yyLOCAL = tree.NewBinaryExpr(tree.RIGHT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1581: + case 1580: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10306 +//line mysql_sql.y:10311 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1582: + case 1581: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10312 +//line mysql_sql.y:10317 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } yyVAL.union = yyLOCAL - case 1583: + case 1582: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10316 +//line mysql_sql.y:10321 { yyLOCAL = yyDollar[1].varExprUnion() } yyVAL.union = yyLOCAL - case 1584: + case 1583: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10320 +//line mysql_sql.y:10325 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1585: + case 1584: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10324 +//line mysql_sql.y:10329 { yyLOCAL = tree.NewParentExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1586: + case 1585: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10328 +//line mysql_sql.y:10333 { yyLOCAL = tree.NewTuple(append(yyDollar[2].exprsUnion(), yyDollar[4].exprUnion())) } yyVAL.union = yyLOCAL - case 1587: + case 1586: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10332 +//line mysql_sql.y:10337 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_PLUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1588: + case 1587: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10336 +//line mysql_sql.y:10341 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MINUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1589: + case 1588: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10340 +//line mysql_sql.y:10345 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_TILDE, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1590: + case 1589: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10344 +//line mysql_sql.y:10349 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MARK, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1591: + case 1590: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10348 +//line mysql_sql.y:10353 { hint := strings.ToLower(yyDollar[2].cstrUnion().Compare()) switch hint { @@ -24403,35 +24406,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1592: + case 1591: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10390 +//line mysql_sql.y:10395 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1593: + case 1592: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10394 +//line mysql_sql.y:10399 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1594: + case 1593: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10398 +//line mysql_sql.y:10403 { yyDollar[2].subqueryUnion().Exists = true yyLOCAL = yyDollar[2].subqueryUnion() } yyVAL.union = yyLOCAL - case 1595: + case 1594: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10403 +//line mysql_sql.y:10408 { yyLOCAL = &tree.CaseExpr{ Expr: yyDollar[2].exprUnion(), @@ -24440,42 +24443,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1596: + case 1595: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10411 +//line mysql_sql.y:10416 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1597: + case 1596: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10415 +//line mysql_sql.y:10420 { yyLOCAL = tree.NewSerialExtractExpr(yyDollar[3].exprUnion(), yyDollar[5].exprUnion(), yyDollar[7].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1598: + case 1597: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10419 +//line mysql_sql.y:10424 { yyLOCAL = tree.NewBitCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1599: + case 1598: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10423 +//line mysql_sql.y:10428 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1600: + case 1599: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10427 +//line mysql_sql.y:10432 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) @@ -24486,66 +24489,66 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1601: + case 1600: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10437 +//line mysql_sql.y:10442 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1602: + case 1601: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10441 +//line mysql_sql.y:10446 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1603: + case 1602: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10445 +//line mysql_sql.y:10450 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1604: + case 1603: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10449 +//line mysql_sql.y:10454 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1605: + case 1604: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10453 +//line mysql_sql.y:10458 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1606: + case 1605: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10457 +//line mysql_sql.y:10462 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1607: + case 1606: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10461 +//line mysql_sql.y:10466 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1608: + case 1607: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10465 +//line mysql_sql.y:10470 { val, err := tree.NewFullTextMatchFuncExpression(yyDollar[3].keyPartsUnion(), yyDollar[7].str, yyDollar[8].fullTextSearchTypeUnion()) if err != nil { @@ -24555,16 +24558,16 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1609: + case 1608: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10478 +//line mysql_sql.y:10483 { yyVAL.str = yyDollar[1].str } - case 1610: + case 1609: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10484 +//line mysql_sql.y:10489 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24574,10 +24577,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1611: + case 1610: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10493 +//line mysql_sql.y:10498 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24587,10 +24590,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1612: + case 1611: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10502 +//line mysql_sql.y:10507 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24600,10 +24603,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1613: + case 1612: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10511 +//line mysql_sql.y:10516 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24614,10 +24617,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1614: + case 1613: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10521 +//line mysql_sql.y:10526 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24628,10 +24631,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1615: + case 1614: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10531 +//line mysql_sql.y:10536 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24642,10 +24645,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1616: + case 1615: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10541 +//line mysql_sql.y:10546 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24656,10 +24659,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1617: + case 1616: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10551 +//line mysql_sql.y:10556 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24670,10 +24673,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1618: + case 1617: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10561 +//line mysql_sql.y:10566 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24684,10 +24687,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1619: + case 1618: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10571 +//line mysql_sql.y:10576 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24698,10 +24701,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1620: + case 1619: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10581 +//line mysql_sql.y:10586 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24712,10 +24715,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1621: + case 1620: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10591 +//line mysql_sql.y:10596 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24726,10 +24729,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1622: + case 1621: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10603 +//line mysql_sql.y:10608 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, "block") @@ -24740,10 +24743,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1623: + case 1622: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10613 +//line mysql_sql.y:10618 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, yyDollar[8].str) @@ -24754,10 +24757,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1624: + case 1623: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10623 +//line mysql_sql.y:10628 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), true, nil) if err != nil { @@ -24767,10 +24770,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1625: + case 1624: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10632 +//line mysql_sql.y:10637 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), true, nil) if err != nil { @@ -24780,10 +24783,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1626: + case 1625: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10642 +//line mysql_sql.y:10647 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), "block") @@ -24794,10 +24797,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1627: + case 1626: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10652 +//line mysql_sql.y:10657 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), yyDollar[8].str) @@ -24808,10 +24811,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1628: + case 1627: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10662 +//line mysql_sql.y:10667 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -24821,10 +24824,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1629: + case 1628: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10671 +//line mysql_sql.y:10676 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -24834,58 +24837,58 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1630: + case 1629: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10681 +//line mysql_sql.y:10686 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1631: + case 1630: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10685 +//line mysql_sql.y:10690 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1632: + case 1631: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10690 +//line mysql_sql.y:10695 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1633: + case 1632: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10694 +//line mysql_sql.y:10699 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1634: + case 1633: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10700 +//line mysql_sql.y:10705 { yyLOCAL = []*tree.When{yyDollar[1].whenClauseUnion()} } yyVAL.union = yyLOCAL - case 1635: + case 1634: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10704 +//line mysql_sql.y:10709 { yyLOCAL = append(yyDollar[1].whenClauseListUnion(), yyDollar[2].whenClauseUnion()) } yyVAL.union = yyLOCAL - case 1636: + case 1635: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.When -//line mysql_sql.y:10710 +//line mysql_sql.y:10715 { yyLOCAL = &tree.When{ Cond: yyDollar[2].exprUnion(), @@ -24893,9 +24896,9 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1637: + case 1636: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10719 +//line mysql_sql.y:10724 { t := yyVAL.columnTypeUnion() str := strings.ToLower(t.InternalType.FamilyString) @@ -24908,10 +24911,10 @@ yydefault: } } } - case 1638: + case 1637: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10731 +//line mysql_sql.y:10736 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -24929,10 +24932,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1639: + case 1638: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10748 +//line mysql_sql.y:10753 { locale := "" yyLOCAL = &tree.T{ @@ -24947,10 +24950,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1641: + case 1640: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10765 +//line mysql_sql.y:10770 { locale := "" yyLOCAL = &tree.T{ @@ -24964,10 +24967,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1642: + case 1641: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10778 +//line mysql_sql.y:10783 { locale := "" yyLOCAL = &tree.T{ @@ -24981,10 +24984,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1643: + case 1642: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10791 +//line mysql_sql.y:10796 { locale := "" yyLOCAL = &tree.T{ @@ -24997,10 +25000,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1644: + case 1643: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10803 +//line mysql_sql.y:10808 { locale := "" yyLOCAL = &tree.T{ @@ -25015,10 +25018,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1645: + case 1644: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10817 +//line mysql_sql.y:10822 { locale := "" yyLOCAL = &tree.T{ @@ -25034,10 +25037,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1646: + case 1645: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10832 +//line mysql_sql.y:10837 { locale := "" yyLOCAL = &tree.T{ @@ -25053,10 +25056,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1647: + case 1646: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10847 +//line mysql_sql.y:10852 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -25074,10 +25077,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1648: + case 1647: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10864 +//line mysql_sql.y:10869 { locale := "" yyLOCAL = &tree.T{ @@ -25092,95 +25095,95 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1649: + case 1648: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10879 +//line mysql_sql.y:10884 { } - case 1653: + case 1652: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10886 +//line mysql_sql.y:10891 { yyLOCAL = &tree.FrameBound{Type: tree.Following, UnBounded: true} } yyVAL.union = yyLOCAL - case 1654: + case 1653: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10890 +//line mysql_sql.y:10895 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1655: + case 1654: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10894 +//line mysql_sql.y:10899 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1656: + case 1655: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10900 +//line mysql_sql.y:10905 { yyLOCAL = &tree.FrameBound{Type: tree.CurrentRow} } yyVAL.union = yyLOCAL - case 1657: + case 1656: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10904 +//line mysql_sql.y:10909 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, UnBounded: true} } yyVAL.union = yyLOCAL - case 1658: + case 1657: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10908 +//line mysql_sql.y:10913 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1659: + case 1658: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10912 +//line mysql_sql.y:10917 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1660: + case 1659: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10918 +//line mysql_sql.y:10923 { yyLOCAL = tree.Rows } yyVAL.union = yyLOCAL - case 1661: + case 1660: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10922 +//line mysql_sql.y:10927 { yyLOCAL = tree.Range } yyVAL.union = yyLOCAL - case 1662: + case 1661: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10926 +//line mysql_sql.y:10931 { yyLOCAL = tree.Groups } yyVAL.union = yyLOCAL - case 1663: + case 1662: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10932 +//line mysql_sql.y:10937 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -25189,10 +25192,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1664: + case 1663: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10940 +//line mysql_sql.y:10945 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -25202,82 +25205,82 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1665: + case 1664: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10950 +//line mysql_sql.y:10955 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1666: + case 1665: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10954 +//line mysql_sql.y:10959 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1667: + case 1666: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10961 +//line mysql_sql.y:10966 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1668: + case 1667: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10966 +//line mysql_sql.y:10971 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1669: + case 1668: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10970 +//line mysql_sql.y:10975 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1670: + case 1669: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10975 +//line mysql_sql.y:10980 { yyVAL.str = "," } - case 1671: + case 1670: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10979 +//line mysql_sql.y:10984 { yyVAL.str = yyDollar[2].str } - case 1672: + case 1671: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10984 +//line mysql_sql.y:10989 { yyVAL.str = "1,vector_l2_ops,random,false" } - case 1673: + case 1672: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10988 +//line mysql_sql.y:10993 { yyVAL.str = yyDollar[2].str } - case 1674: + case 1673: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10993 +//line mysql_sql.y:10998 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1676: + case 1675: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:11000 +//line mysql_sql.y:11005 { hasFrame := true var f *tree.FrameClause @@ -25302,10 +25305,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1677: + case 1676: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11026 +//line mysql_sql.y:11031 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25318,10 +25321,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1678: + case 1677: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11038 +//line mysql_sql.y:11043 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25334,10 +25337,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1679: + case 1678: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11050 +//line mysql_sql.y:11055 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25349,10 +25352,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1680: + case 1679: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11061 +//line mysql_sql.y:11066 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25364,10 +25367,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1681: + case 1680: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11072 +//line mysql_sql.y:11077 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -25379,10 +25382,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1682: + case 1681: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11083 +//line mysql_sql.y:11088 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25393,10 +25396,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1683: + case 1682: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11093 +//line mysql_sql.y:11098 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25407,10 +25410,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1684: + case 1683: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11103 +//line mysql_sql.y:11108 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25422,10 +25425,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1685: + case 1684: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11114 +//line mysql_sql.y:11119 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25437,10 +25440,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1686: + case 1685: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11125 +//line mysql_sql.y:11130 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25452,10 +25455,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1687: + case 1686: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11136 +//line mysql_sql.y:11141 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25467,10 +25470,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1688: + case 1687: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11147 +//line mysql_sql.y:11152 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -25482,10 +25485,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1689: + case 1688: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11158 +//line mysql_sql.y:11163 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25497,10 +25500,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1690: + case 1689: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11169 +//line mysql_sql.y:11174 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25512,10 +25515,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1691: + case 1690: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11180 +//line mysql_sql.y:11185 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25527,10 +25530,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1692: + case 1691: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11191 +//line mysql_sql.y:11196 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25542,10 +25545,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1693: + case 1692: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11202 +//line mysql_sql.y:11207 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25557,10 +25560,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1694: + case 1693: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11213 +//line mysql_sql.y:11218 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25572,10 +25575,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1695: + case 1694: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11224 +//line mysql_sql.y:11229 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25587,10 +25590,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1696: + case 1695: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11235 +//line mysql_sql.y:11240 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25602,10 +25605,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1697: + case 1696: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11246 +//line mysql_sql.y:11251 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25617,10 +25620,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1698: + case 1697: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11257 +//line mysql_sql.y:11262 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25632,10 +25635,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1699: + case 1698: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11268 +//line mysql_sql.y:11273 { name := tree.NewUnresolvedColName(yyDollar[1].str) var columnList tree.Exprs @@ -25653,10 +25656,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1703: + case 1702: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11292 +//line mysql_sql.y:11297 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25666,10 +25669,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1704: + case 1703: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11301 +//line mysql_sql.y:11306 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25679,10 +25682,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1705: + case 1704: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11310 +//line mysql_sql.y:11315 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25692,10 +25695,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1706: + case 1705: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11319 +//line mysql_sql.y:11324 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25705,10 +25708,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1707: + case 1706: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11328 +//line mysql_sql.y:11333 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25720,10 +25723,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1708: + case 1707: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11339 +//line mysql_sql.y:11344 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25733,10 +25736,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1709: + case 1708: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11348 +//line mysql_sql.y:11353 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25747,10 +25750,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1710: + case 1709: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11358 +//line mysql_sql.y:11363 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25760,10 +25763,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1711: + case 1710: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11367 +//line mysql_sql.y:11372 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25773,10 +25776,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1712: + case 1711: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11376 +//line mysql_sql.y:11381 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25786,10 +25789,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1713: + case 1712: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11385 +//line mysql_sql.y:11390 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25799,10 +25802,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1714: + case 1713: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11394 +//line mysql_sql.y:11399 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(0), "0", false, tree.P_int64) @@ -25815,10 +25818,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1715: + case 1714: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11406 +//line mysql_sql.y:11411 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(1), "1", false, tree.P_int64) @@ -25830,10 +25833,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1716: + case 1715: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11417 +//line mysql_sql.y:11422 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(2), "2", false, tree.P_int64) @@ -25847,10 +25850,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1717: + case 1716: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11430 +//line mysql_sql.y:11435 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(3), "3", false, tree.P_int64) @@ -25863,10 +25866,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1718: + case 1717: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11442 +//line mysql_sql.y:11447 { column := tree.NewUnresolvedColName(yyDollar[3].str) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25877,16 +25880,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1725: + case 1724: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:11465 +//line mysql_sql.y:11470 { yyVAL.str = yyDollar[1].str } - case 1754: + case 1753: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11501 +//line mysql_sql.y:11506 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25900,10 +25903,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1755: + case 1754: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11514 +//line mysql_sql.y:11519 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25917,10 +25920,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1756: + case 1755: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11527 +//line mysql_sql.y:11532 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25932,10 +25935,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1757: + case 1756: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11539 +//line mysql_sql.y:11544 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25945,10 +25948,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1758: + case 1757: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11548 +//line mysql_sql.y:11553 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25957,10 +25960,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1759: + case 1758: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11556 +//line mysql_sql.y:11561 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25969,10 +25972,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1760: + case 1759: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11564 +//line mysql_sql.y:11569 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25986,10 +25989,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1761: + case 1760: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11577 +//line mysql_sql.y:11582 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25999,10 +26002,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1762: + case 1761: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11586 +//line mysql_sql.y:11591 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -26014,10 +26017,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1763: + case 1762: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11597 +//line mysql_sql.y:11602 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -26029,10 +26032,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1764: + case 1763: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11608 +//line mysql_sql.y:11613 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -26042,10 +26045,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1765: + case 1764: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11617 +//line mysql_sql.y:11622 { cn := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) es := yyDollar[3].exprsUnion() @@ -26058,10 +26061,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1766: + case 1765: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11629 +//line mysql_sql.y:11634 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -26072,10 +26075,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1767: + case 1766: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11639 +//line mysql_sql.y:11644 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -26086,10 +26089,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1768: + case 1767: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11649 +//line mysql_sql.y:11654 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -26099,10 +26102,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1769: + case 1768: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11658 +//line mysql_sql.y:11663 { es := tree.Exprs{yyDollar[3].exprUnion()} es = append(es, yyDollar[5].exprUnion()) @@ -26114,10 +26117,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1770: + case 1769: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11669 +//line mysql_sql.y:11674 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -26127,10 +26130,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1771: + case 1770: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11678 +//line mysql_sql.y:11683 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -26141,10 +26144,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1772: + case 1771: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11688 +//line mysql_sql.y:11693 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -26154,10 +26157,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1773: + case 1772: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11697 +//line mysql_sql.y:11702 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -26167,10 +26170,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1774: + case 1773: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11706 +//line mysql_sql.y:11711 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -26180,34 +26183,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1775: + case 1774: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11716 +//line mysql_sql.y:11721 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1776: + case 1775: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11720 +//line mysql_sql.y:11725 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1777: + case 1776: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11726 +//line mysql_sql.y:11731 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1778: + case 1777: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11730 +//line mysql_sql.y:11735 { ival, errStr := util.GetInt64(yyDollar[2].item) if errStr != "" { @@ -26218,20 +26221,20 @@ yydefault: yyLOCAL = tree.NewNumVal(ival, str, false, tree.P_int64) } yyVAL.union = yyLOCAL - case 1785: + case 1784: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:11749 +//line mysql_sql.y:11754 { } - case 1786: + case 1785: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:11751 +//line mysql_sql.y:11756 { } - case 1821: + case 1820: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11793 +//line mysql_sql.y:11798 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -26243,106 +26246,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1822: + case 1821: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11805 +//line mysql_sql.y:11810 { yyLOCAL = tree.FUNC_TYPE_DEFAULT } yyVAL.union = yyLOCAL - case 1823: + case 1822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11809 +//line mysql_sql.y:11814 { yyLOCAL = tree.FUNC_TYPE_DISTINCT } yyVAL.union = yyLOCAL - case 1824: + case 1823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11813 +//line mysql_sql.y:11818 { yyLOCAL = tree.FUNC_TYPE_ALL } yyVAL.union = yyLOCAL - case 1825: + case 1824: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Tuple -//line mysql_sql.y:11819 +//line mysql_sql.y:11824 { yyLOCAL = tree.NewTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1826: + case 1825: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11824 +//line mysql_sql.y:11829 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1827: + case 1826: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11828 +//line mysql_sql.y:11833 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1828: + case 1827: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11834 +//line mysql_sql.y:11839 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1829: + case 1828: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11838 +//line mysql_sql.y:11843 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1830: + case 1829: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11844 +//line mysql_sql.y:11849 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1831: + case 1830: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11848 +//line mysql_sql.y:11853 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1832: + case 1831: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11855 +//line mysql_sql.y:11860 { yyLOCAL = tree.NewAndExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1833: + case 1832: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11859 +//line mysql_sql.y:11864 { yyLOCAL = tree.NewOrExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1834: + case 1833: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11863 +//line mysql_sql.y:11868 { name := tree.NewUnresolvedColName("concat") yyLOCAL = &tree.FuncExpr{ @@ -26352,355 +26355,355 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1835: + case 1834: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11872 +//line mysql_sql.y:11877 { yyLOCAL = tree.NewXorExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1836: + case 1835: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11876 +//line mysql_sql.y:11881 { yyLOCAL = tree.NewNotExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1837: + case 1836: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11880 +//line mysql_sql.y:11885 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1838: + case 1837: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11885 +//line mysql_sql.y:11890 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1839: + case 1838: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11889 +//line mysql_sql.y:11894 { yyLOCAL = tree.NewMaxValue() } yyVAL.union = yyLOCAL - case 1840: + case 1839: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11895 +//line mysql_sql.y:11900 { yyLOCAL = tree.NewIsNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1841: + case 1840: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11899 +//line mysql_sql.y:11904 { yyLOCAL = tree.NewIsNotNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1842: + case 1841: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11903 +//line mysql_sql.y:11908 { yyLOCAL = tree.NewIsUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1843: + case 1842: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11907 +//line mysql_sql.y:11912 { yyLOCAL = tree.NewIsNotUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1844: + case 1843: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11911 +//line mysql_sql.y:11916 { yyLOCAL = tree.NewIsTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1845: + case 1844: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11915 +//line mysql_sql.y:11920 { yyLOCAL = tree.NewIsNotTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1846: + case 1845: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11919 +//line mysql_sql.y:11924 { yyLOCAL = tree.NewIsFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1847: + case 1846: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11923 +//line mysql_sql.y:11928 { yyLOCAL = tree.NewIsNotFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1848: + case 1847: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11927 +//line mysql_sql.y:11932 { yyLOCAL = tree.NewComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1849: + case 1848: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11931 +//line mysql_sql.y:11936 { yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) } yyVAL.union = yyLOCAL - case 1851: + case 1850: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11939 +//line mysql_sql.y:11944 { yyLOCAL = tree.NewComparisonExpr(tree.IN, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1852: + case 1851: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11943 +//line mysql_sql.y:11948 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_IN, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1853: + case 1852: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11947 +//line mysql_sql.y:11952 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.LIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1854: + case 1853: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11951 +//line mysql_sql.y:11956 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_LIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1855: + case 1854: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11955 +//line mysql_sql.y:11960 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.ILIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1856: + case 1855: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11959 +//line mysql_sql.y:11964 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_ILIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1857: + case 1856: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11963 +//line mysql_sql.y:11968 { yyLOCAL = tree.NewComparisonExpr(tree.REG_MATCH, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1858: + case 1857: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11967 +//line mysql_sql.y:11972 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_REG_MATCH, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1859: + case 1858: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11971 +//line mysql_sql.y:11976 { yyLOCAL = tree.NewRangeCond(false, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1860: + case 1859: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11975 +//line mysql_sql.y:11980 { yyLOCAL = tree.NewRangeCond(true, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[6].exprUnion()) } yyVAL.union = yyLOCAL - case 1862: + case 1861: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11981 +//line mysql_sql.y:11986 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1863: + case 1862: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11985 +//line mysql_sql.y:11990 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1864: + case 1863: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11991 +//line mysql_sql.y:11996 { yyLOCAL = yyDollar[1].tupleUnion() } yyVAL.union = yyLOCAL - case 1865: + case 1864: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11995 +//line mysql_sql.y:12000 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1866: + case 1865: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12002 +//line mysql_sql.y:12007 { yyLOCAL = tree.ALL } yyVAL.union = yyLOCAL - case 1867: + case 1866: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12006 +//line mysql_sql.y:12011 { yyLOCAL = tree.ANY } yyVAL.union = yyLOCAL - case 1868: + case 1867: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12010 +//line mysql_sql.y:12015 { yyLOCAL = tree.SOME } yyVAL.union = yyLOCAL - case 1869: + case 1868: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12016 +//line mysql_sql.y:12021 { yyLOCAL = tree.EQUAL } yyVAL.union = yyLOCAL - case 1870: + case 1869: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12020 +//line mysql_sql.y:12025 { yyLOCAL = tree.LESS_THAN } yyVAL.union = yyLOCAL - case 1871: + case 1870: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12024 +//line mysql_sql.y:12029 { yyLOCAL = tree.GREAT_THAN } yyVAL.union = yyLOCAL - case 1872: + case 1871: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12028 +//line mysql_sql.y:12033 { yyLOCAL = tree.LESS_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1873: + case 1872: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12032 +//line mysql_sql.y:12037 { yyLOCAL = tree.GREAT_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1874: + case 1873: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12036 +//line mysql_sql.y:12041 { yyLOCAL = tree.NOT_EQUAL } yyVAL.union = yyLOCAL - case 1875: + case 1874: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:12040 +//line mysql_sql.y:12045 { yyLOCAL = tree.NULL_SAFE_EQUAL } yyVAL.union = yyLOCAL - case 1876: + case 1875: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:12046 +//line mysql_sql.y:12051 { yyLOCAL = tree.NewAttributePrimaryKey() } yyVAL.union = yyLOCAL - case 1877: + case 1876: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:12050 +//line mysql_sql.y:12055 { yyLOCAL = tree.NewAttributeUniqueKey() } yyVAL.union = yyLOCAL - case 1878: + case 1877: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:12054 +//line mysql_sql.y:12059 { yyLOCAL = tree.NewAttributeUnique() } yyVAL.union = yyLOCAL - case 1879: + case 1878: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:12058 +//line mysql_sql.y:12063 { yyLOCAL = tree.NewAttributeKey() } yyVAL.union = yyLOCAL - case 1880: + case 1879: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12064 +//line mysql_sql.y:12069 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -26714,35 +26717,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1881: + case 1880: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12077 +//line mysql_sql.y:12082 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1882: + case 1881: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12082 +//line mysql_sql.y:12087 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1883: + case 1882: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12088 +//line mysql_sql.y:12093 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1884: + case 1883: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12092 +//line mysql_sql.y:12097 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -26756,51 +26759,51 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1885: + case 1884: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12105 +//line mysql_sql.y:12110 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1886: + case 1885: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12110 +//line mysql_sql.y:12115 { yyLOCAL = tree.NewNumVal(true, "true", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1887: + case 1886: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12114 +//line mysql_sql.y:12119 { yyLOCAL = tree.NewNumVal(false, "false", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1888: + case 1887: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12118 +//line mysql_sql.y:12123 { yyLOCAL = tree.NewNumVal("null", "null", false, tree.P_null) } yyVAL.union = yyLOCAL - case 1889: + case 1888: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12122 +//line mysql_sql.y:12127 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_hexnum) } yyVAL.union = yyLOCAL - case 1890: + case 1889: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12126 +//line mysql_sql.y:12131 { if strings.HasPrefix(yyDollar[2].str, "0x") { yyDollar[2].str = yyDollar[2].str[2:] @@ -26808,69 +26811,69 @@ yydefault: yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1891: + case 1890: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12133 +//line mysql_sql.y:12138 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1892: + case 1891: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12137 +//line mysql_sql.y:12142 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1893: + case 1892: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12141 +//line mysql_sql.y:12146 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1894: + case 1893: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:12145 +//line mysql_sql.y:12150 { yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_ScoreBinary) } yyVAL.union = yyLOCAL - case 1895: + case 1894: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12152 +//line mysql_sql.y:12157 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.Unsigned = yyDollar[2].unsignedOptUnion() yyLOCAL.InternalType.Zerofill = yyDollar[3].zeroFillOptUnion() } yyVAL.union = yyLOCAL - case 1899: + case 1898: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12163 +//line mysql_sql.y:12168 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.DisplayWith = yyDollar[2].lengthOptUnion() } yyVAL.union = yyLOCAL - case 1900: + case 1899: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12168 +//line mysql_sql.y:12173 { yyLOCAL = yyDollar[1].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1901: + case 1900: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12174 +//line mysql_sql.y:12179 { locale := "" yyLOCAL = &tree.T{ @@ -26883,10 +26886,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1902: + case 1901: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12186 +//line mysql_sql.y:12191 { locale := "" yyLOCAL = &tree.T{ @@ -26899,10 +26902,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1903: + case 1902: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12198 +//line mysql_sql.y:12203 { locale := "" yyLOCAL = &tree.T{ @@ -26915,10 +26918,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1904: + case 1903: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12210 +//line mysql_sql.y:12215 { locale := "" yyLOCAL = &tree.T{ @@ -26932,10 +26935,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1905: + case 1904: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12223 +//line mysql_sql.y:12228 { locale := "" yyLOCAL = &tree.T{ @@ -26949,10 +26952,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1906: + case 1905: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12236 +//line mysql_sql.y:12241 { locale := "" yyLOCAL = &tree.T{ @@ -26966,10 +26969,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1907: + case 1906: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12249 +//line mysql_sql.y:12254 { locale := "" yyLOCAL = &tree.T{ @@ -26983,10 +26986,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1908: + case 1907: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12262 +//line mysql_sql.y:12267 { locale := "" yyLOCAL = &tree.T{ @@ -27000,10 +27003,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1909: + case 1908: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12275 +//line mysql_sql.y:12280 { locale := "" yyLOCAL = &tree.T{ @@ -27017,10 +27020,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1910: + case 1909: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12288 +//line mysql_sql.y:12293 { locale := "" yyLOCAL = &tree.T{ @@ -27034,10 +27037,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1911: + case 1910: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12301 +//line mysql_sql.y:12306 { locale := "" yyLOCAL = &tree.T{ @@ -27051,10 +27054,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1912: + case 1911: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12314 +//line mysql_sql.y:12319 { locale := "" yyLOCAL = &tree.T{ @@ -27068,10 +27071,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1913: + case 1912: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12327 +//line mysql_sql.y:12332 { locale := "" yyLOCAL = &tree.T{ @@ -27085,10 +27088,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1914: + case 1913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12340 +//line mysql_sql.y:12345 { locale := "" yyLOCAL = &tree.T{ @@ -27102,10 +27105,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1915: + case 1914: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12355 +//line mysql_sql.y:12360 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -27133,10 +27136,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1916: + case 1915: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12382 +//line mysql_sql.y:12387 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -27178,10 +27181,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1917: + case 1916: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12424 +//line mysql_sql.y:12429 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -27218,10 +27221,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1918: + case 1917: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12460 +//line mysql_sql.y:12465 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -27258,10 +27261,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1919: + case 1918: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12496 +//line mysql_sql.y:12501 { locale := "" yyLOCAL = &tree.T{ @@ -27277,10 +27280,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1920: + case 1919: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12513 +//line mysql_sql.y:12518 { locale := "" yyLOCAL = &tree.T{ @@ -27293,10 +27296,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1921: + case 1920: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12525 +//line mysql_sql.y:12530 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -27317,10 +27320,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1922: + case 1921: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12545 +//line mysql_sql.y:12550 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -27341,10 +27344,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1923: + case 1922: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12565 +//line mysql_sql.y:12570 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -27365,10 +27368,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1924: + case 1923: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12585 +//line mysql_sql.y:12590 { locale := "" yyLOCAL = &tree.T{ @@ -27383,10 +27386,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1925: + case 1924: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12601 +//line mysql_sql.y:12606 { locale := "" yyLOCAL = &tree.T{ @@ -27400,10 +27403,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1926: + case 1925: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12614 +//line mysql_sql.y:12619 { locale := "" yyLOCAL = &tree.T{ @@ -27417,10 +27420,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1927: + case 1926: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12627 +//line mysql_sql.y:12632 { locale := "" yyLOCAL = &tree.T{ @@ -27434,10 +27437,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1928: + case 1927: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12640 +//line mysql_sql.y:12645 { locale := "" yyLOCAL = &tree.T{ @@ -27451,10 +27454,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1929: + case 1928: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12653 +//line mysql_sql.y:12658 { locale := "" yyLOCAL = &tree.T{ @@ -27467,10 +27470,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1930: + case 1929: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12665 +//line mysql_sql.y:12670 { locale := "" yyLOCAL = &tree.T{ @@ -27483,10 +27486,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1931: + case 1930: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12677 +//line mysql_sql.y:12682 { locale := "" yyLOCAL = &tree.T{ @@ -27499,10 +27502,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1932: + case 1931: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12689 +//line mysql_sql.y:12694 { locale := "" yyLOCAL = &tree.T{ @@ -27515,10 +27518,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1933: + case 1932: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12701 +//line mysql_sql.y:12706 { locale := "" yyLOCAL = &tree.T{ @@ -27531,10 +27534,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1934: + case 1933: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12713 +//line mysql_sql.y:12718 { locale := "" yyLOCAL = &tree.T{ @@ -27547,10 +27550,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1935: + case 1934: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12725 +//line mysql_sql.y:12730 { locale := "" yyLOCAL = &tree.T{ @@ -27563,10 +27566,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1936: + case 1935: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12737 +//line mysql_sql.y:12742 { locale := "" yyLOCAL = &tree.T{ @@ -27579,10 +27582,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1937: + case 1936: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12749 +//line mysql_sql.y:12754 { locale := "" yyLOCAL = &tree.T{ @@ -27595,10 +27598,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1938: + case 1937: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12761 +//line mysql_sql.y:12766 { locale := "" yyLOCAL = &tree.T{ @@ -27611,10 +27614,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1939: + case 1938: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12773 +//line mysql_sql.y:12778 { locale := "" yyLOCAL = &tree.T{ @@ -27628,10 +27631,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1940: + case 1939: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12786 +//line mysql_sql.y:12791 { locale := "" yyLOCAL = &tree.T{ @@ -27645,10 +27648,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1941: + case 1940: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12799 +//line mysql_sql.y:12804 { locale := "" yyLOCAL = &tree.T{ @@ -27662,10 +27665,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1942: + case 1941: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12812 +//line mysql_sql.y:12817 { locale := "" yyLOCAL = &tree.T{ @@ -27679,10 +27682,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1943: + case 1942: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12825 +//line mysql_sql.y:12830 { locale := "" yyLOCAL = &tree.T{ @@ -27696,20 +27699,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1944: + case 1943: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12840 +//line mysql_sql.y:12845 { yyLOCAL = &tree.Do{ Exprs: yyDollar[2].exprsUnion(), } } yyVAL.union = yyLOCAL - case 1945: + case 1944: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12848 +//line mysql_sql.y:12853 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -27718,10 +27721,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1946: + case 1945: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12857 +//line mysql_sql.y:12862 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -27730,10 +27733,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1947: + case 1946: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12867 +//line mysql_sql.y:12872 { locale := "" yyLOCAL = &tree.T{ @@ -27746,75 +27749,75 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1948: + case 1947: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12890 +//line mysql_sql.y:12895 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1949: + case 1948: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12895 +//line mysql_sql.y:12900 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1950: + case 1949: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12901 +//line mysql_sql.y:12906 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1952: + case 1951: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12908 +//line mysql_sql.y:12913 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1953: + case 1952: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12912 +//line mysql_sql.y:12917 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1954: + case 1953: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12917 +//line mysql_sql.y:12922 { yyLOCAL = int32(-1) } yyVAL.union = yyLOCAL - case 1955: + case 1954: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12921 +//line mysql_sql.y:12926 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1956: + case 1955: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12927 +//line mysql_sql.y:12932 { yyLOCAL = tree.GetDisplayWith(int32(yyDollar[2].item.(int64))) } yyVAL.union = yyLOCAL - case 1957: + case 1956: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12933 +//line mysql_sql.y:12938 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.NotDefineDisplayWidth, @@ -27822,10 +27825,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1958: + case 1957: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12940 +//line mysql_sql.y:12945 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27833,10 +27836,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1959: + case 1958: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12947 +//line mysql_sql.y:12952 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27844,10 +27847,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1960: + case 1959: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12956 +//line mysql_sql.y:12961 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: 38, // this is the default precision for decimal @@ -27855,10 +27858,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1961: + case 1960: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12963 +//line mysql_sql.y:12968 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27866,10 +27869,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1962: + case 1961: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12970 +//line mysql_sql.y:12975 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27877,52 +27880,52 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1963: + case 1962: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12979 +//line mysql_sql.y:12984 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1964: + case 1963: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12983 +//line mysql_sql.y:12988 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1965: + case 1964: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12987 +//line mysql_sql.y:12992 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1966: + case 1965: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12993 +//line mysql_sql.y:12998 { } - case 1967: + case 1966: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12995 +//line mysql_sql.y:13000 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1971: + case 1970: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:13005 +//line mysql_sql.y:13010 { yyVAL.str = "" } - case 1972: + case 1971: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:13009 +//line mysql_sql.y:13014 { yyVAL.str = string(yyDollar[1].str) } diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.y b/pkg/sql/parsers/dialect/mysql/mysql_sql.y index 226e4482c46fc..885a9169f2093 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.y +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.y @@ -3408,13 +3408,20 @@ alter_sequence_stmt: } alter_view_stmt: - ALTER VIEW exists_opt table_name column_list_opt AS select_stmt + ALTER view_list_opt VIEW exists_opt table_name column_list_opt AS select_stmt { - var ifExists = $3 - var name = $4 - var colNames = $5 - var asSource = $7 - $$ = tree.NewAlterView(ifExists, name, colNames, asSource) + var ifExists = $4 + var name = $5 + var colNames = $6 + var asSource = $8 + secType := "" + viewListStr := strings.ToUpper($2) + if strings.Contains(viewListStr, "SQL SECURITY INVOKER") { + secType = "INVOKER" + } else if strings.Contains(viewListStr, "SQL SECURITY DEFINER") { + secType = "DEFINER" + } + $$ = tree.NewAlterView(ifExists, name, colNames, asSource, secType) } alter_table_stmt: @@ -7006,34 +7013,27 @@ func_handler: } create_view_stmt: - CREATE view_list_opt VIEW not_exists_opt table_name column_list_opt AS select_stmt view_tail - { - var Replace bool - var Name = $5 - var ColNames = $6 - var AsSource = $8 - var IfNotExists = $4 - $$ = tree.NewCreateView( - Replace, - Name, - ColNames, - AsSource, - IfNotExists, - ) - } -| CREATE replace_opt VIEW not_exists_opt table_name column_list_opt AS select_stmt view_tail + CREATE replace_opt view_list_opt VIEW not_exists_opt table_name column_list_opt AS select_stmt view_tail { var Replace = $2 - var Name = $5 - var ColNames = $6 - var AsSource = $8 - var IfNotExists = $4 + var Name = $6 + var ColNames = $7 + var AsSource = $9 + var IfNotExists = $5 + secType := "" + viewListStr := strings.ToUpper($3) + if strings.Contains(viewListStr, "SQL SECURITY INVOKER") { + secType = "INVOKER" + } else if strings.Contains(viewListStr, "SQL SECURITY DEFINER") { + secType = "DEFINER" + } $$ = tree.NewCreateView( Replace, Name, ColNames, AsSource, IfNotExists, + secType, ) } @@ -7055,13 +7055,12 @@ create_account_stmt: } view_list_opt: - view_opt { - $$ = $1 + $$ = "" } | view_list_opt view_opt { - $$ = $$ + $2 + $$ = $1 + $2 } view_opt: @@ -7094,7 +7093,13 @@ algorithm_type_2: security_opt: DEFINER + { + $$ = "DEFINER" + } | INVOKER + { + $$ = "INVOKER" + } check_type: { diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go index 5140e3d539021..13fe8698d58fe 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go @@ -794,6 +794,12 @@ var ( input: "create view v_today (today) as select current_day from t", }, { input: "alter view v_today (today) as select current_day from t", + }, { + input: "ALTER SQL SECURITY INVOKER VIEW v AS SELECT * FROM t", + output: "alter sql security invoker view v as select * from t", + }, { + input: "ALTER SQL SECURITY DEFINER VIEW v AS SELECT * FROM t", + output: "alter sql security definer view v as select * from t", }, { input: "explain (analyze true,verbose false) select * from emp", }, { @@ -3016,10 +3022,19 @@ var ( output: "alter table t1 alter CONSTRAINT not enforce", }, { input: "create SQL SECURITY DEFINER VIEW t2 as select * from t1", - output: "create view t2 as select * from t1", + output: "create sql security definer view t2 as select * from t1", }, { input: "create SQL SECURITY INVOKER VIEW t2 as select * from t1", - output: "create view t2 as select * from t1", + output: "create sql security invoker view t2 as select * from t1", + }, { + input: "create or replace SQL SECURITY INVOKER VIEW t2 as select * from t1", + output: "create or replace sql security invoker view t2 as select * from t1", + }, { + input: "create or replace SQL SECURITY DEFINER VIEW t2 as select * from t1", + output: "create or replace sql security definer view t2 as select * from t1", + }, { + input: "create or replace VIEW t2 as select * from t1", + output: "create or replace view t2 as select * from t1", }, { input: "create VIEW t2 as select * from t1 WITH CASCADED CHECK OPTION", output: "create view t2 as select * from t1", @@ -3068,13 +3083,13 @@ var ( output: `backup 123 s3option {'endpoint'='s3.us-west-2.amazonaws.com', 'access_key_id'='******', 'secret_access_key'='******', 'bucket'='test', 'filepath'='jsonline/jsonline_object.jl', 'region'='us-west-2', 'compression'='none', 'format'='jsonline', 'jsondata'='object'} backuptype incremental backupts xxxxx-xxxxx`, }, { input: "/*!50001 CREATE ALGORITHM=UNDEFINED *//*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER *//*!50001 VIEW `pga0010` AS select distinct `a`.`FACDIV` AS `FACDIV`,`a`.`BLDCD` AS `BLDCD`,`a`.`PRDCD` AS `PRDCD`,`a`.`PRDNAM` AS `PRDNAM`,`a`.`PRDLNG` AS `PRDLNG`,`a`.`PRDWID` AS `PRDWID`,`a`.`PRDGAG` AS `PRDGAG`,`a`.`AREA` AS `AREA`,`a`.`GLZTYP` AS `GLZTYP`,`a`.`TECTYP` AS `TECTYP`,`a`.`PRDCATE` AS `PRDCATE`,`a`.`PRCCD` AS `PRCCD`,`a`.`PRCDSC` AS `PRCDSC`,`a`.`GLSSTR` AS `GLSSTR`,`a`.`REMARK` AS `REMARK`,`a`.`USEYN` AS `USEYN`,`a`.`ISMES` AS `ISMES` from (select 'N' AS `ISMES`,`skim`.`bga0010`.`USEYN` AS `USEYN`,`skim`.`bga0010`.`FACDIV` AS `FACDIV`,`skim`.`bga0010`.`BLDCDFATHER` AS `BLDCD`,substring_index(`skim`.`bga0010`.`PRDCD`,'-',1) AS `PRDCD`,`skim`.`bga0010`.`PRDNAM` AS `PRDNAM`,`skim`.`bga0010`.`PRDLNG` AS `PRDLNG`,`skim`.`bga0010`.`PRDWID` AS `PRDWID`,`skim`.`bga0010`.`PRDGAG` AS `PRDGAG`,`skim`.`bga0010`.`AREA` AS `AREA`,`skim`.`bga0010`.`GLZTYP` AS `GLZTYP`,`skim`.`bga0010`.`TECTYP` AS `TECTYP`,`skim`.`bga0010`.`PRDCATE` AS `PRDCATE`,`skim`.`bga0010`.`MATCST` AS `MATCST`,`skim`.`bga0010`.`PRCCD` AS `PRCCD`,`skim`.`bga0010`.`PRCDSC` AS `PRCDSC`,`skim`.`bga0010`.`GLSSTR` AS `GLSSTR`,`skim`.`bga0010`.`REMARK` AS `REMARK` from `skim`.`bga0010` where ((`skim`.`bga0010`.`ISMES` = 'Y') and (`skim`.`bga0010`.`USEYN` = 'Y') and (not(substring_index(`skim`.`bga0010`.`PRDCD`,'-',1) in (select `skim`.`bga0010`.`PRDCD` from `skim`.`bga0010` where ((`skim`.`bga0010`.`ISMES` = 'N') and (`skim`.`bga0010`.`USEYN` = 'Y')))))) union all select `skim`.`bga0010`.`ISMES` AS `ISMES`,`skim`.`bga0010`.`USEYN` AS `USEYN`,`skim`.`bga0010`.`FACDIV` AS `FACDIV`,`skim`.`bga0010`.`BLDCD` AS `BLDCD`,`skim`.`bga0010`.`PRDCD` AS `PRDCD`,`skim`.`bga0010`.`PRDNAM` AS `PRDNAM`,`skim`.`bga0010`.`PRDLNG` AS `PRDLNG`,`skim`.`bga0010`.`PRDWID` AS `PRDWID`,`skim`.`bga0010`.`PRDGAG` AS `PRDGAG`,`skim`.`bga0010`.`AREA` AS `AREA`,`skim`.`bga0010`.`GLZTYP` AS `GLZTYP`,`skim`.`bga0010`.`TECTYP` AS `TECTYP`,`skim`.`bga0010`.`PRDCATE` AS `PRDCATE`,`skim`.`bga0010`.`MATCST` AS `MATCST`,`skim`.`bga0010`.`PRCCD` AS `PRCCD`,`skim`.`bga0010`.`PRCDSC` AS `PRCDSC`,`skim`.`bga0010`.`GLSSTR` AS `GLSSTR`,`skim`.`bga0010`.`REMARK` AS `REMARK` from `skim`.`bga0010` where ((`skim`.`bga0010`.`ISMES` = 'N') and (`skim`.`bga0010`.`USEYN` = 'Y'))) `a` order by `a`.`BLDCD` */;", - output: "create view pga0010 as select distinct a.FACDIV as FACDIV, a.BLDCD as BLDCD, a.PRDCD as PRDCD, a.PRDNAM as PRDNAM, a.PRDLNG as PRDLNG, a.PRDWID as PRDWID, a.PRDGAG as PRDGAG, a.AREA as AREA, a.GLZTYP as GLZTYP, a.TECTYP as TECTYP, a.PRDCATE as PRDCATE, a.PRCCD as PRCCD, a.PRCDSC as PRCDSC, a.GLSSTR as GLSSTR, a.REMARK as REMARK, a.USEYN as USEYN, a.ISMES as ISMES from (select N as ISMES, skim.bga0010.USEYN as USEYN, skim.bga0010.FACDIV as FACDIV, skim.bga0010.BLDCDFATHER as BLDCD, substring_index(skim.bga0010.PRDCD, -, 1) as PRDCD, skim.bga0010.PRDNAM as PRDNAM, skim.bga0010.PRDLNG as PRDLNG, skim.bga0010.PRDWID as PRDWID, skim.bga0010.PRDGAG as PRDGAG, skim.bga0010.AREA as AREA, skim.bga0010.GLZTYP as GLZTYP, skim.bga0010.TECTYP as TECTYP, skim.bga0010.PRDCATE as PRDCATE, skim.bga0010.MATCST as MATCST, skim.bga0010.PRCCD as PRCCD, skim.bga0010.PRCDSC as PRCDSC, skim.bga0010.GLSSTR as GLSSTR, skim.bga0010.REMARK as REMARK from skim.bga0010 where ((skim.bga0010.ISMES = Y) and (skim.bga0010.USEYN = Y) and (not (substring_index(skim.bga0010.PRDCD, -, 1) in (select skim.bga0010.PRDCD from skim.bga0010 where ((skim.bga0010.ISMES = N) and (skim.bga0010.USEYN = Y)))))) union all select skim.bga0010.ISMES as ISMES, skim.bga0010.USEYN as USEYN, skim.bga0010.FACDIV as FACDIV, skim.bga0010.BLDCD as BLDCD, skim.bga0010.PRDCD as PRDCD, skim.bga0010.PRDNAM as PRDNAM, skim.bga0010.PRDLNG as PRDLNG, skim.bga0010.PRDWID as PRDWID, skim.bga0010.PRDGAG as PRDGAG, skim.bga0010.AREA as AREA, skim.bga0010.GLZTYP as GLZTYP, skim.bga0010.TECTYP as TECTYP, skim.bga0010.PRDCATE as PRDCATE, skim.bga0010.MATCST as MATCST, skim.bga0010.PRCCD as PRCCD, skim.bga0010.PRCDSC as PRCDSC, skim.bga0010.GLSSTR as GLSSTR, skim.bga0010.REMARK as REMARK from skim.bga0010 where ((skim.bga0010.ISMES = N) and (skim.bga0010.USEYN = Y))) as a order by a.BLDCD", + output: "create sql security definer view pga0010 as select distinct a.FACDIV as FACDIV, a.BLDCD as BLDCD, a.PRDCD as PRDCD, a.PRDNAM as PRDNAM, a.PRDLNG as PRDLNG, a.PRDWID as PRDWID, a.PRDGAG as PRDGAG, a.AREA as AREA, a.GLZTYP as GLZTYP, a.TECTYP as TECTYP, a.PRDCATE as PRDCATE, a.PRCCD as PRCCD, a.PRCDSC as PRCDSC, a.GLSSTR as GLSSTR, a.REMARK as REMARK, a.USEYN as USEYN, a.ISMES as ISMES from (select N as ISMES, skim.bga0010.USEYN as USEYN, skim.bga0010.FACDIV as FACDIV, skim.bga0010.BLDCDFATHER as BLDCD, substring_index(skim.bga0010.PRDCD, -, 1) as PRDCD, skim.bga0010.PRDNAM as PRDNAM, skim.bga0010.PRDLNG as PRDLNG, skim.bga0010.PRDWID as PRDWID, skim.bga0010.PRDGAG as PRDGAG, skim.bga0010.AREA as AREA, skim.bga0010.GLZTYP as GLZTYP, skim.bga0010.TECTYP as TECTYP, skim.bga0010.PRDCATE as PRDCATE, skim.bga0010.MATCST as MATCST, skim.bga0010.PRCCD as PRCCD, skim.bga0010.PRCDSC as PRCDSC, skim.bga0010.GLSSTR as GLSSTR, skim.bga0010.REMARK as REMARK from skim.bga0010 where ((skim.bga0010.ISMES = Y) and (skim.bga0010.USEYN = Y) and (not (substring_index(skim.bga0010.PRDCD, -, 1) in (select skim.bga0010.PRDCD from skim.bga0010 where ((skim.bga0010.ISMES = N) and (skim.bga0010.USEYN = Y)))))) union all select skim.bga0010.ISMES as ISMES, skim.bga0010.USEYN as USEYN, skim.bga0010.FACDIV as FACDIV, skim.bga0010.BLDCD as BLDCD, skim.bga0010.PRDCD as PRDCD, skim.bga0010.PRDNAM as PRDNAM, skim.bga0010.PRDLNG as PRDLNG, skim.bga0010.PRDWID as PRDWID, skim.bga0010.PRDGAG as PRDGAG, skim.bga0010.AREA as AREA, skim.bga0010.GLZTYP as GLZTYP, skim.bga0010.TECTYP as TECTYP, skim.bga0010.PRDCATE as PRDCATE, skim.bga0010.MATCST as MATCST, skim.bga0010.PRCCD as PRCCD, skim.bga0010.PRCDSC as PRCDSC, skim.bga0010.GLSSTR as GLSSTR, skim.bga0010.REMARK as REMARK from skim.bga0010 where ((skim.bga0010.ISMES = N) and (skim.bga0010.USEYN = Y))) as a order by a.BLDCD", }, { input: "/*!50001 CREATE ALGORITHM=UNDEFINED *//*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER *//*!50001 VIEW `sale_employee` AS select `ct`.`ENTID` AS `ORGANIZATION_ID`,`cu`.`SYSUSERID` AS `SALE_EMPLOYEE_ID`,`cu`.`SYSUSERID` AS `EMPLOYEE_ID`,`cu`.`ACTIVED` AS `ISUSEABLE`,`cu`.`CREATOR` AS `CREATED_BY`,`cu`.`CREATETIME` AS `CREATION_DATE`,`cu`.`UPDATOR` AS `LAST_UPDATED_BY`,`cu`.`UPDATETIME` AS `LAST_UPDATE_DATE`,'' AS `ATTRIBUTE11`,'' AS `ATTRIBUTE21`,'' AS `ATTRIBUTE31`,0 AS `ATTRIBUTE41`,0 AS `ATTRIBUTE51`,0 AS `AREA_ID` from (`kaf_cpcuser` `cu` join `kaf_cpcent` `ct`) where (`cu`.`ISSALEEMPLOYEE` = 2) */;", - output: "create view sale_employee as select ct.ENTID as ORGANIZATION_ID, cu.SYSUSERID as SALE_EMPLOYEE_ID, cu.SYSUSERID as EMPLOYEE_ID, cu.ACTIVED as ISUSEABLE, cu.CREATOR as CREATED_BY, cu.CREATETIME as CREATION_DATE, cu.UPDATOR as LAST_UPDATED_BY, cu.UPDATETIME as LAST_UPDATE_DATE, as ATTRIBUTE11, as ATTRIBUTE21, as ATTRIBUTE31, 0 as ATTRIBUTE41, 0 as ATTRIBUTE51, 0 as AREA_ID from kaf_cpcuser as cu inner join kaf_cpcent as ct where (cu.ISSALEEMPLOYEE = 2)", + output: "create sql security definer view sale_employee as select ct.ENTID as ORGANIZATION_ID, cu.SYSUSERID as SALE_EMPLOYEE_ID, cu.SYSUSERID as EMPLOYEE_ID, cu.ACTIVED as ISUSEABLE, cu.CREATOR as CREATED_BY, cu.CREATETIME as CREATION_DATE, cu.UPDATOR as LAST_UPDATED_BY, cu.UPDATETIME as LAST_UPDATE_DATE, as ATTRIBUTE11, as ATTRIBUTE21, as ATTRIBUTE31, 0 as ATTRIBUTE41, 0 as ATTRIBUTE51, 0 as AREA_ID from kaf_cpcuser as cu inner join kaf_cpcent as ct where (cu.ISSALEEMPLOYEE = 2)", }, { input: "/*!50001 CREATE ALGORITHM=UNDEFINED *//*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER *//*!50001 VIEW `xab0100` AS (select `a`.`SYSUSERID` AS `sysuserid`,`a`.`USERID` AS `userid`,`a`.`USERNAME` AS `usernm`,`a`.`PWDHASH` AS `userpwd`,`a`.`USERTYPE` AS `usertype`,`a`.`EMPID` AS `empid`,`a`.`EMAIL` AS `email`,`a`.`TELO` AS `telo`,`a`.`TELH` AS `telh`,`a`.`MOBIL` AS `mobil`,(case `a`.`ACTIVED` when '1' then 'N' when '2' then 'Y' else 'Y' end) AS `useyn`,`a`.`ENABLEPWD` AS `enablepwd`,`a`.`ENABLEMMSG` AS `enablemmsg`,`a`.`FEECENTER` AS `feecenter`,left(concat(ifnull(`c`.`ORGID`,''),'|'),(char_length(concat(ifnull(`c`.`ORGID`,''),'|')) - 1)) AS `orgid`,left(concat(ifnull(`c`.`ORGNAME`,''),'|'),(char_length(concat(ifnull(`c`.`ORGNAME`,''),'|')) - 1)) AS `orgname`,ifnull(`a`.`ISPLANNER`,'') AS `isplanner`,ifnull(`a`.`ISWHEMPLOYEE`,'') AS `iswhemployee`,ifnull(`a`.`ISBUYER`,'') AS `isbuyer`,ifnull(`a`.`ISQCEMPLOYEE`,'') AS `isqceemployee`,ifnull(`a`.`ISSALEEMPLOYEE`,'') AS `issaleemployee`,`a`.`SEX` AS `sex`,ifnull(`c`.`ENTID`,'3') AS `ORGANIZATION_ID`,ifnull(`a`.`NOTICEUSER`,'') AS `NOTICEUSER` from ((`kaf_cpcuser` `a` left join `kaf_cpcorguser` `b` on((`a`.`SYSUSERID` = `b`.`SYSUSERID`))) left join `kaf_cpcorg` `c` on((`b`.`ORGID` = `c`.`ORGID`))) order by `a`.`SYSUSERID`,`a`.`USERID`,`a`.`USERNAME`,`a`.`USERPASS`,`a`.`USERTYPE`,`a`.`EMPID`,`a`.`EMAIL`,`a`.`TELO`,`a`.`TELH`,`a`.`MOBIL`,`a`.`ACTIVED`,`a`.`ENABLEPWD`,`a`.`ENABLEMMSG`,`a`.`FEECENTER`,`a`.`ISPLANNER`,`a`.`ISWHEMPLOYEE`,`a`.`ISBUYER`,`a`.`ISQCEMPLOYEE`,`a`.`ISSALEEMPLOYEE`,`a`.`SEX`,`c`.`ENTID`) */;", - output: "create view xab0100 as (select a.SYSUSERID as sysuserid, a.USERID as userid, a.USERNAME as usernm, a.PWDHASH as userpwd, a.USERTYPE as usertype, a.EMPID as empid, a.EMAIL as email, a.TELO as telo, a.TELH as telh, a.MOBIL as mobil, (case a.ACTIVED when 1 then N when 2 then Y else Y end) as useyn, a.ENABLEPWD as enablepwd, a.ENABLEMMSG as enablemmsg, a.FEECENTER as feecenter, left(concat(ifnull(c.ORGID, ), |), (char_length(concat(ifnull(c.ORGID, ), |)) - 1)) as orgid, left(concat(ifnull(c.ORGNAME, ), |), (char_length(concat(ifnull(c.ORGNAME, ), |)) - 1)) as orgname, ifnull(a.ISPLANNER, ) as isplanner, ifnull(a.ISWHEMPLOYEE, ) as iswhemployee, ifnull(a.ISBUYER, ) as isbuyer, ifnull(a.ISQCEMPLOYEE, ) as isqceemployee, ifnull(a.ISSALEEMPLOYEE, ) as issaleemployee, a.SEX as sex, ifnull(c.ENTID, 3) as ORGANIZATION_ID, ifnull(a.NOTICEUSER, ) as NOTICEUSER from kaf_cpcuser as a left join kaf_cpcorguser as b on ((a.SYSUSERID = b.SYSUSERID)) left join kaf_cpcorg as c on ((b.ORGID = c.ORGID)) order by a.SYSUSERID, a.USERID, a.USERNAME, a.USERPASS, a.USERTYPE, a.EMPID, a.EMAIL, a.TELO, a.TELH, a.MOBIL, a.ACTIVED, a.ENABLEPWD, a.ENABLEMMSG, a.FEECENTER, a.ISPLANNER, a.ISWHEMPLOYEE, a.ISBUYER, a.ISQCEMPLOYEE, a.ISSALEEMPLOYEE, a.SEX, c.ENTID)", + output: "create sql security definer view xab0100 as (select a.SYSUSERID as sysuserid, a.USERID as userid, a.USERNAME as usernm, a.PWDHASH as userpwd, a.USERTYPE as usertype, a.EMPID as empid, a.EMAIL as email, a.TELO as telo, a.TELH as telh, a.MOBIL as mobil, (case a.ACTIVED when 1 then N when 2 then Y else Y end) as useyn, a.ENABLEPWD as enablepwd, a.ENABLEMMSG as enablemmsg, a.FEECENTER as feecenter, left(concat(ifnull(c.ORGID, ), |), (char_length(concat(ifnull(c.ORGID, ), |)) - 1)) as orgid, left(concat(ifnull(c.ORGNAME, ), |), (char_length(concat(ifnull(c.ORGNAME, ), |)) - 1)) as orgname, ifnull(a.ISPLANNER, ) as isplanner, ifnull(a.ISWHEMPLOYEE, ) as iswhemployee, ifnull(a.ISBUYER, ) as isbuyer, ifnull(a.ISQCEMPLOYEE, ) as isqceemployee, ifnull(a.ISSALEEMPLOYEE, ) as issaleemployee, a.SEX as sex, ifnull(c.ENTID, 3) as ORGANIZATION_ID, ifnull(a.NOTICEUSER, ) as NOTICEUSER from kaf_cpcuser as a left join kaf_cpcorguser as b on ((a.SYSUSERID = b.SYSUSERID)) left join kaf_cpcorg as c on ((b.ORGID = c.ORGID)) order by a.SYSUSERID, a.USERID, a.USERNAME, a.USERPASS, a.USERTYPE, a.EMPID, a.EMAIL, a.TELO, a.TELH, a.MOBIL, a.ACTIVED, a.ENABLEPWD, a.ENABLEMMSG, a.FEECENTER, a.ISPLANNER, a.ISWHEMPLOYEE, a.ISBUYER, a.ISQCEMPLOYEE, a.ISSALEEMPLOYEE, a.SEX, c.ENTID)", }, { input: "CREATE TABLE `ecbase_push_log` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间') ENGINE=InnoDB AUTO_INCREMENT=654 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='推送记录表'/*!50500 PARTITION BY RANGE COLUMNS(create_time)(PARTITION p20240115 VALUES LESS THAN ('2024-01-15 00:00:00') ENGINE = InnoDB,PARTITION p20240116 VALUES LESS THAN ('2024-01-16 00:00:00') ENGINE = InnoDB,PARTITION p20240117 VALUES LESS THAN ('2024-01-17 00:00:00') ENGINE = InnoDB,PARTITION p20240118 VALUES LESS THAN ('2024-01-18 00:00:00') ENGINE = InnoDB,PARTITION p20240119 VALUES LESS THAN ('2024-01-19 00:00:00') ENGINE = InnoDB,PARTITION p20240120 VALUES LESS THAN ('2024-01-20 00:00:00') ENGINE = InnoDB,PARTITION p20240121 VALUES LESS THAN ('2024-01-21 00:00:00') ENGINE = InnoDB,PARTITION p20240122 VALUES LESS THAN ('2024-01-22 00:00:00') ENGINE = InnoDB,PARTITION p20240123 VALUES LESS THAN ('2024-01-23 00:00:00') ENGINE = InnoDB,PARTITION p20240124 VALUES LESS THAN ('2024-01-24 00:00:00') ENGINE = InnoDB,PARTITION p20240125 VALUES LESS THAN ('2024-01-25 00:00:00') ENGINE = InnoDB) */;", @@ -3776,3 +3791,41 @@ func TestLimitByRank(t *testing.T) { }) } } + +func TestViewSecurityType(t *testing.T) { + cases := []struct { + input string + securityType string + output string + }{ + {"CREATE SQL SECURITY DEFINER VIEW v AS SELECT 1", "DEFINER", "create sql security definer view v as select 1"}, + {"CREATE SQL SECURITY INVOKER VIEW v AS SELECT 1", "INVOKER", "create sql security invoker view v as select 1"}, + {"CREATE OR REPLACE SQL SECURITY INVOKER VIEW v AS SELECT 1", "INVOKER", "create or replace sql security invoker view v as select 1"}, + {"CREATE VIEW v AS SELECT 1", "", "create view v as select 1"}, + {"ALTER SQL SECURITY INVOKER VIEW v AS SELECT 1", "INVOKER", "alter sql security invoker view v as select 1"}, + {"ALTER SQL SECURITY DEFINER VIEW v AS SELECT 1", "DEFINER", "alter sql security definer view v as select 1"}, + {"ALTER VIEW v AS SELECT 1", "", "alter view v as select 1"}, + } + for _, c := range cases { + stmts, err := ParseOne(context.TODO(), c.input, 1) + if err != nil { + t.Fatalf("parse %q failed: %v", c.input, err) + } + switch s := stmts.(type) { + case *tree.CreateView: + if s.SecurityType != c.securityType { + t.Errorf("CreateView %q: SecurityType = %q, want %q", c.input, s.SecurityType, c.securityType) + } + case *tree.AlterView: + if s.SecurityType != c.securityType { + t.Errorf("AlterView %q: SecurityType = %q, want %q", c.input, s.SecurityType, c.securityType) + } + default: + t.Fatalf("unexpected stmt type %T for %q", stmts, c.input) + } + + if out := tree.String(stmts, dialect.MYSQL); out != c.output { + t.Errorf("tree.String(%q) = %q, want %q", c.input, out, c.output) + } + } +} diff --git a/pkg/sql/parsers/tree/alter.go b/pkg/sql/parsers/tree/alter.go index fdc1b129d0549..4bd59784a9b94 100644 --- a/pkg/sql/parsers/tree/alter.go +++ b/pkg/sql/parsers/tree/alter.go @@ -16,6 +16,7 @@ package tree import ( "fmt" + "strings" "github.com/matrixorigin/matrixone/pkg/common/reuse" ) @@ -505,18 +506,20 @@ func (node *AlterAccount) reset() { type AlterView struct { statementImpl - IfExists bool - Name *TableName - ColNames IdentifierList - AsSource *Select + IfExists bool + Name *TableName + ColNames IdentifierList + AsSource *Select + SecurityType string // "DEFINER", "INVOKER", or "" (not specified) } -func NewAlterView(exist bool, name *TableName, colNames IdentifierList, asSource *Select) *AlterView { +func NewAlterView(exist bool, name *TableName, colNames IdentifierList, asSource *Select, securityType string) *AlterView { a := reuse.Alloc[AlterView](nil) a.IfExists = exist a.Name = name a.ColNames = colNames a.AsSource = asSource + a.SecurityType = securityType return a } @@ -524,6 +527,11 @@ func (node *AlterView) Free() { reuse.Free[AlterView](node, nil) } func (node *AlterView) Format(ctx *FmtCtx) { ctx.WriteString("alter ") + if node.SecurityType != "" { + ctx.WriteString("sql security ") + ctx.WriteString(strings.ToLower(node.SecurityType)) + ctx.WriteByte(' ') + } ctx.WriteString("view ") diff --git a/pkg/sql/parsers/tree/revoke.go b/pkg/sql/parsers/tree/revoke.go index 48aab9cc76878..67614062ca8e1 100644 --- a/pkg/sql/parsers/tree/revoke.go +++ b/pkg/sql/parsers/tree/revoke.go @@ -219,6 +219,8 @@ func (node *ObjectType) String() string { return "function" case OBJECT_TYPE_PROCEDURE: return "procedure" + case OBJECT_TYPE_VIEW: + return "view" case OBJECT_TYPE_ACCOUNT: return "account" case OBJECT_TYPE_DATABASE: diff --git a/pkg/sql/parsers/tree/revoke_test.go b/pkg/sql/parsers/tree/revoke_test.go new file mode 100644 index 0000000000000..db102ccf4e602 --- /dev/null +++ b/pkg/sql/parsers/tree/revoke_test.go @@ -0,0 +1,32 @@ +// Copyright 2026 Matrix Origin +// +// 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. + +package tree + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestObjectTypeString(t *testing.T) { + tableType := OBJECT_TYPE_TABLE + require.Equal(t, "table", (&tableType).String()) + + viewType := OBJECT_TYPE_VIEW + require.Equal(t, "view", (&viewType).String()) + + accountType := OBJECT_TYPE_ACCOUNT + require.Equal(t, "account", (&accountType).String()) +} diff --git a/pkg/sql/parsers/tree/view.go b/pkg/sql/parsers/tree/view.go index 016d9e9c11d2a..825a2adf92ae0 100644 --- a/pkg/sql/parsers/tree/view.go +++ b/pkg/sql/parsers/tree/view.go @@ -14,7 +14,11 @@ package tree -import "github.com/matrixorigin/matrixone/pkg/common/reuse" +import ( + "strings" + + "github.com/matrixorigin/matrixone/pkg/common/reuse" +) func init() { reuse.CreatePool[CreateView]( @@ -26,20 +30,22 @@ func init() { type CreateView struct { statementImpl - Replace bool - Name *TableName - ColNames IdentifierList - AsSource *Select - IfNotExists bool + Replace bool + Name *TableName + ColNames IdentifierList + AsSource *Select + IfNotExists bool + SecurityType string // "DEFINER", "INVOKER", or "" (not specified) } -func NewCreateView(replace bool, name *TableName, colNames IdentifierList, asSource *Select, ifNotExists bool) *CreateView { +func NewCreateView(replace bool, name *TableName, colNames IdentifierList, asSource *Select, ifNotExists bool, securityType string) *CreateView { c := reuse.Alloc[CreateView](nil) c.Replace = replace c.Name = name c.ColNames = colNames c.AsSource = asSource c.IfNotExists = ifNotExists + c.SecurityType = securityType return c } @@ -54,6 +60,12 @@ func (node *CreateView) Format(ctx *FmtCtx) { ctx.WriteString("or replace ") } + if node.SecurityType != "" { + ctx.WriteString("sql security ") + ctx.WriteString(strings.ToLower(node.SecurityType)) + ctx.WriteByte(' ') + } + ctx.WriteString("view ") if node.IfNotExists { diff --git a/pkg/sql/plan/bind_context.go b/pkg/sql/plan/bind_context.go index de380a640586c..fa3a6475c9ad1 100644 --- a/pkg/sql/plan/bind_context.go +++ b/pkg/sql/plan/bind_context.go @@ -56,6 +56,10 @@ func NewBindContext(builder *QueryBuilder, parent *BindContext) *BindContext { } bc.snapshot = parent.snapshot bc.remapOption = parent.remapOption + if len(parent.viewChain) > 0 { + bc.viewChain = append([]string{}, parent.viewChain...) + } + bc.directView = parent.directView } return bc diff --git a/pkg/sql/plan/build_ddl.go b/pkg/sql/plan/build_ddl.go index 56e64253982bc..8f474d62df185 100644 --- a/pkg/sql/plan/build_ddl.go +++ b/pkg/sql/plan/build_ddl.go @@ -74,6 +74,7 @@ func genDynamicTableDef(ctx CompilerContext, stmt *tree.Select) (*plan.TableDef, viewData, err := json.Marshal(ViewData{ Stmt: ctx.GetRootSql(), DefaultDatabase: ctx.DefaultDatabase(), + SecurityType: getViewSecurityTypeFromContext(ctx), }) if err != nil { return nil, err @@ -98,6 +99,36 @@ func genDynamicTableDef(ctx CompilerContext, stmt *tree.Select) (*plan.TableDef, return &tableDef, nil } +func getViewSecurityTypeFromContext(ctx CompilerContext) string { + securityType := "" + val, err := ctx.ResolveVariable("view_security_type", true, false) + if err == nil { + if s, ok := val.(string); ok { + securityType = s + } + } + securityType = strings.TrimSpace(strings.ToUpper(securityType)) + if securityType == "INVOKER" { + return "INVOKER" + } + return "DEFINER" +} + +// overrideViewDefSecurityType replaces the SecurityType in the ViewDef's JSON data. +func overrideViewDefSecurityType(tableDef *plan.TableDef, securityType string) { + if tableDef.ViewSql == nil || tableDef.ViewSql.View == "" { + return + } + var viewData ViewData + if err := json.Unmarshal([]byte(tableDef.ViewSql.View), &viewData); err != nil { + return + } + viewData.SecurityType = strings.ToUpper(securityType) + if data, err := json.Marshal(viewData); err == nil { + tableDef.ViewSql.View = string(data) + } +} + func genViewTableDef(ctx CompilerContext, stmt *tree.Select) (*plan.TableDef, error) { var tableDef plan.TableDef @@ -149,6 +180,7 @@ func genViewTableDef(ctx CompilerContext, stmt *tree.Select) (*plan.TableDef, er viewData, err := json.Marshal(ViewData{ Stmt: viewSql, DefaultDatabase: ctx.DefaultDatabase(), + SecurityType: getViewSecurityTypeFromContext(ctx), }) if err != nil { return nil, err @@ -385,6 +417,11 @@ func buildCreateView(stmt *tree.CreateView, ctx CompilerContext) (*Plan, error) return nil, err } + // If the DDL explicitly specifies SQL SECURITY, override the session variable + if stmt.SecurityType != "" { + overrideViewDefSecurityType(tableDef, stmt.SecurityType) + } + createView.TableDef.Cols = tableDef.Cols createView.TableDef.ViewSql = tableDef.ViewSql createView.TableDef.Defs = tableDef.Defs @@ -3572,6 +3609,21 @@ func buildAlterView(stmt *tree.AlterView, ctx CompilerContext) (*Plan, error) { return nil, err } + // SecurityType priority: AST explicit > old view inherited > default DEFINER for legacy views + if stmt.SecurityType != "" { + overrideViewDefSecurityType(tableDef, stmt.SecurityType) + } else if oldViewDef != nil && oldViewDef.ViewSql != nil { + var oldViewData ViewData + if e := json.Unmarshal([]byte(oldViewDef.ViewSql.View), &oldViewData); e == nil { + if oldViewData.SecurityType != "" { + overrideViewDefSecurityType(tableDef, oldViewData.SecurityType) + } else { + // Legacy views without security_type field are DEFINER by default + overrideViewDefSecurityType(tableDef, "DEFINER") + } + } + } + alterView.TableDef.Cols = tableDef.Cols alterView.TableDef.ViewSql = tableDef.ViewSql alterView.TableDef.Defs = tableDef.Defs diff --git a/pkg/sql/plan/build_ddl_test.go b/pkg/sql/plan/build_ddl_test.go index 9ac90230f6418..06067643b939d 100644 --- a/pkg/sql/plan/build_ddl_test.go +++ b/pkg/sql/plan/build_ddl_test.go @@ -17,18 +17,20 @@ package plan import ( "context" "encoding/json" - "github.com/stretchr/testify/require" + "strings" "testing" "time" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" moruntime "github.com/matrixorigin/matrixone/pkg/common/runtime" "github.com/matrixorigin/matrixone/pkg/container/types" "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/pb/timestamp" "github.com/matrixorigin/matrixone/pkg/sql/parsers" "github.com/matrixorigin/matrixone/pkg/sql/parsers/dialect" "github.com/matrixorigin/matrixone/pkg/sql/parsers/tree" @@ -53,6 +55,7 @@ func TestBuildAlterView(t *testing.T) { vData, err := json.Marshal(ViewData{ "create view v as select a from a", "db", + "DEFINER", }) assert.NoError(t, err) @@ -67,6 +70,7 @@ func TestBuildAlterView(t *testing.T) { vxData, err := json.Marshal(ViewData{ "create view vx as select a from v", "db", + "DEFINER", }) assert.NoError(t, err) store["db.vx"] = arg{&plan.ObjectRef{}, @@ -162,6 +166,152 @@ func TestBuildAlterView(t *testing.T) { assert.Error(t, err) } +func TestBuildShowCreateViewSecurityType(t *testing.T) { + ctx := NewMockCompilerContext(false) + ctx.SetContext(context.Background()) + ctx.dbs["db"] = true + + makePlan := func(stmtSQL, securityType string) *Plan { + vData, err := json.Marshal(ViewData{ + Stmt: stmtSQL, + DefaultDatabase: "db", + SecurityType: securityType, + }) + require.NoError(t, err) + + ctx.tables["v"] = &plan.TableDef{ + TableType: catalog.SystemViewRel, + ViewSql: &plan.ViewDef{ + View: string(vData), + }, + } + + stmt := tree.NewShowCreateView(tree.NewUnresolvedObjectName("db", "v")) + pl, err := buildShowCreateView(stmt, ctx) + require.NoError(t, err) + return pl + } + + pl := makePlan("create view v as select 1", "INVOKER") + require.True(t, planStringLiteralsContain(pl, "SQL SECURITY INVOKER")) + + pl = makePlan("create view v as select 1", "") + require.True(t, planStringLiteralsContain(pl, "SQL SECURITY DEFINER")) + + pl = makePlan("create SQL SECURITY DEFINER view v as select 1", "DEFINER") + var matched string + for _, lit := range collectPlanStringLiterals(pl) { + if strings.Contains(lit, "SQL SECURITY DEFINER") { + matched = lit + break + } + } + require.NotEmpty(t, matched) + require.Equal(t, 1, strings.Count(matched, "SQL SECURITY DEFINER")) + + pl = makePlan("create /* SQL SECURITY INVOKER */ view v as select 1", "") + matched = "" + for _, lit := range collectPlanStringLiterals(pl) { + if strings.Contains(lit, "SQL SECURITY DEFINER") { + matched = lit + break + } + } + require.NotEmpty(t, matched) + require.Contains(t, matched, "create /* SQL SECURITY INVOKER */ SQL SECURITY DEFINER view v as select 1") + require.Equal(t, 1, strings.Count(matched, "SQL SECURITY DEFINER")) + + pl = makePlan("/*!50001 CREATE DEFINER = `root`@`%` VIEW v AS select 1 */", "") + matched = "" + for _, lit := range collectPlanStringLiterals(pl) { + if strings.Contains(lit, "SQL SECURITY DEFINER") { + matched = lit + break + } + } + require.NotEmpty(t, matched) + require.Contains(t, matched, "/*!50001 CREATE DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW v AS select 1 */") + require.Equal(t, 1, strings.Count(matched, "SQL SECURITY DEFINER")) +} + +func TestOverrideViewDefSecurityTypeNoOpCases(t *testing.T) { + tableDef := &plan.TableDef{} + overrideViewDefSecurityType(tableDef, "invoker") + require.Nil(t, tableDef.ViewSql) + + tableDef = &plan.TableDef{ + ViewSql: &plan.ViewDef{View: "not-json"}, + } + overrideViewDefSecurityType(tableDef, "invoker") + require.Equal(t, "not-json", tableDef.ViewSql.View) + + viewData, err := json.Marshal(ViewData{ + Stmt: "create view v as select 1", + DefaultDatabase: "db", + }) + require.NoError(t, err) + + tableDef = &plan.TableDef{ + ViewSql: &plan.ViewDef{View: string(viewData)}, + } + overrideViewDefSecurityType(tableDef, "invoker") + + var got ViewData + require.NoError(t, json.Unmarshal([]byte(tableDef.ViewSql.View), &got)) + require.Equal(t, "INVOKER", got.SecurityType) +} + +func TestFormatViewKeyWithSnapshot(t *testing.T) { + require.Equal(t, "db.v", FormatViewKeyWithSnapshot("db.v", nil)) + require.Equal(t, "db.v", FormatViewKeyWithSnapshot("db.v", &Snapshot{})) + + snapshot := &Snapshot{ + TS: ×tamp.Timestamp{PhysicalTime: 42}, + } + require.Equal(t, "db.v@ts=42", FormatViewKeyWithSnapshot("db.v", snapshot)) +} + +func planStringLiteralsContain(pl *Plan, want string) bool { + for _, lit := range collectPlanStringLiterals(pl) { + if strings.Contains(lit, want) { + return true + } + } + return false +} + +func collectPlanStringLiterals(pl *Plan) []string { + query, ok := pl.Plan.(*plan.Plan_Query) + if !ok { + return nil + } + var literals []string + for _, node := range query.Query.Nodes { + for _, expr := range node.ProjectList { + collectExprStringLiterals(expr, &literals) + } + } + return literals +} + +func collectExprStringLiterals(expr *plan.Expr, literals *[]string) { + if expr == nil { + return + } + switch impl := expr.Expr.(type) { + case *plan.Expr_Lit: + if lit := impl.Lit; lit != nil { + if sval, ok := lit.Value.(*plan.Literal_Sval); ok { + *literals = append(*literals, sval.Sval) + } + } + case *plan.Expr_F: + for _, arg := range impl.F.Args { + collectExprStringLiterals(arg, literals) + } + } +} + func TestBuildLockTables(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() diff --git a/pkg/sql/plan/build_show.go b/pkg/sql/plan/build_show.go index 568ec32ce5dd6..2a4cda4cd30b3 100644 --- a/pkg/sql/plan/build_show.go +++ b/pkg/sql/plan/build_show.go @@ -192,7 +192,22 @@ func buildShowCreateView(stmt *tree.ShowCreateView, ctx CompilerContext) (*Plan, } // FixMe We need a better escape function - stmtStr := strings.ReplaceAll(viewData.Stmt, "\"", "\\\"") + stmtStr := viewData.Stmt + // MySQL always shows SQL SECURITY in SHOW CREATE VIEW output. + // Legacy views may not have persisted security_type, so default to DEFINER. + securityType := strings.TrimSpace(strings.ToUpper(viewData.SecurityType)) + if securityType == "" { + securityType = "DEFINER" + } + upper := strings.ToUpper(stmtStr) + viewIdx := findViewKeyword(upper) + if viewIdx > 0 { + header := upper[:viewIdx] + if !hasSQLSecurityClause(header) { + stmtStr = stmtStr[:viewIdx] + "SQL SECURITY " + securityType + " " + stmtStr[viewIdx:] + } + } + stmtStr = strings.ReplaceAll(stmtStr, "\"", "\\\"") sqlStr = fmt.Sprintf(sqlStr, tblName, fmt.Sprint(stmtStr)) // logutil.Info(sqlStr) @@ -200,6 +215,135 @@ func buildShowCreateView(stmt *tree.ShowCreateView, ctx CompilerContext) (*Plan, return returnByRewriteSQL(ctx, sqlStr, plan.DataDefinition_SHOW_CREATETABLE) } +// findViewKeyword finds the position of the VIEW keyword in an uppercased SQL string. +// It skips comments and quoted segments so VIEW inside them is ignored. +// Returns -1 if not found. +func findViewKeyword(upper string) int { + viewIdx := -1 + scanSQLTokens(upper, func(token string, start int) bool { + if token == "VIEW" { + viewIdx = start + return false + } + return true + }) + return viewIdx +} + +func hasSQLSecurityClause(upper string) bool { + lastTokenWasSQL := false + hasClause := false + scanSQLTokens(upper, func(token string, _ int) bool { + if lastTokenWasSQL && token == "SECURITY" { + hasClause = true + return false + } + lastTokenWasSQL = token == "SQL" + return true + }) + return hasClause +} + +func scanSQLTokens(s string, yield func(token string, start int) bool) { + inVersionedComment := false + for i := 0; i < len(s); { + if inVersionedComment && i+1 < len(s) && s[i] == '*' && s[i+1] == '/' { + inVersionedComment = false + i += 2 + continue + } + + switch s[i] { + case ' ', '\t', '\n', '\r': + i++ + continue + case '/': + if i+1 < len(s) && s[i+1] == '*' { + if i+2 < len(s) && s[i+2] == '!' { + inVersionedComment = true + i += 3 + for i < len(s) && s[i] >= '0' && s[i] <= '9' { + i++ + } + continue + } + i = skipBlockComment(s, i+2) + continue + } + case '-': + if startsDashComment(s, i) { + i = skipLineComment(s, i+2) + continue + } + case '#': + i = skipLineComment(s, i+1) + continue + case '\'', '"', '`': + i = skipQuotedSegment(s, i, s[i]) + continue + } + + if isSQLIdentChar(s[i]) { + begin := i + for i < len(s) && isSQLIdentChar(s[i]) { + i++ + } + if !yield(s[begin:i], begin) { + return + } + continue + } + i++ + } +} + +func skipBlockComment(s string, start int) int { + for i := start; i < len(s); i++ { + if s[i] == '*' && i+1 < len(s) && s[i+1] == '/' { + return i + 2 + } + } + return len(s) +} + +func skipLineComment(s string, start int) int { + for i := start; i < len(s); i++ { + if s[i] == '\n' || s[i] == '\r' { + return i + } + } + return len(s) +} + +func skipQuotedSegment(s string, start int, quote byte) int { + for i := start + 1; i < len(s); i++ { + if s[i] == '\\' && i+1 < len(s) { + i++ + continue + } + if s[i] != quote { + continue + } + if i+1 < len(s) && s[i+1] == quote { + i++ + continue + } + return i + 1 + } + return len(s) +} + +func startsDashComment(s string, idx int) bool { + return idx+1 < len(s) && s[idx+1] == '-' && + (idx+2 == len(s) || s[idx+2] == ' ' || s[idx+2] == '\t' || s[idx+2] == '\n' || s[idx+2] == '\r') +} + +func isSQLIdentChar(ch byte) bool { + return ch == '_' || + (ch >= 'A' && ch <= 'Z') || + (ch >= '0' && ch <= '9') +} + func buildShowDatabases(stmt *tree.ShowDatabases, ctx CompilerContext) (*Plan, error) { if stmt.Like != nil && stmt.Where != nil { return nil, moerr.NewSyntaxError(ctx.GetContext(), "like clause and where clause cannot exist at the same time") diff --git a/pkg/sql/plan/build_show_util_test.go b/pkg/sql/plan/build_show_util_test.go index 1164414d00d06..f0ad0e4ce9a6a 100644 --- a/pkg/sql/plan/build_show_util_test.go +++ b/pkg/sql/plan/build_show_util_test.go @@ -15,13 +15,35 @@ package plan import ( + "strings" "testing" "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/sql/parsers/dialect/mysql" + "github.com/stretchr/testify/require" ) +func TestFindViewKeywordRequiresBoundaries(t *testing.T) { + require.Equal(t, -1, findViewKeyword("PREVIEW V")) + require.Equal(t, -1, findViewKeyword("CREATE VIEWER V")) + require.Equal(t, strings.Index("CREATE VIEW V", "VIEW"), findViewKeyword("CREATE VIEW V")) + require.Equal(t, strings.Index("CREATE\tVIEW\nV", "VIEW"), findViewKeyword("CREATE\tVIEW\nV")) + require.Equal(t, strings.LastIndex("CREATE /* VIEW */ VIEW V", "VIEW"), findViewKeyword("CREATE /* VIEW */ VIEW V")) + require.Equal(t, strings.LastIndex("CREATE -- VIEW\nVIEW V", "VIEW"), findViewKeyword("CREATE -- VIEW\nVIEW V")) + require.Equal(t, strings.LastIndex("CREATE # VIEW\nVIEW V", "VIEW"), findViewKeyword("CREATE # VIEW\nVIEW V")) + require.Equal(t, strings.Index("/*!50001 CREATE DEFINER = `ROOT`@`%` VIEW V AS SELECT 1 */", "VIEW"), + findViewKeyword("/*!50001 CREATE DEFINER = `ROOT`@`%` VIEW V AS SELECT 1 */")) +} + +func TestHasSQLSecurityClauseIgnoresComments(t *testing.T) { + require.True(t, hasSQLSecurityClause("CREATE SQL SECURITY DEFINER ")) + require.False(t, hasSQLSecurityClause("CREATE /* SQL SECURITY INVOKER */ ")) + require.False(t, hasSQLSecurityClause("CREATE -- SQL SECURITY DEFINER\n")) + require.False(t, hasSQLSecurityClause("CREATE # SQL SECURITY DEFINER\n")) + require.True(t, hasSQLSecurityClause("/*!50001 CREATE DEFINER = `ROOT`@`%` SQL SECURITY DEFINER VIEW V AS SELECT 1 */")) +} + func Test_buildTestShowCreateTable(t *testing.T) { tests := []struct { name string diff --git a/pkg/sql/plan/deepcopy.go b/pkg/sql/plan/deepcopy.go index ed4920f6d747b..80afd8bc7b479 100644 --- a/pkg/sql/plan/deepcopy.go +++ b/pkg/sql/plan/deepcopy.go @@ -228,6 +228,8 @@ func DeepCopyNode(node *plan.Node) *plan.Node { DedupColTypes: slices.Clone(node.DedupColTypes), UpdateCtxList: DeepCopyUpdateCtxList(node.UpdateCtxList), DedupJoinCtx: DeepCopyDedupJoinCtx(node.DedupJoinCtx), + OriginViews: slices.Clone(node.OriginViews), + DirectView: node.DirectView, } newNode.Uuid = append(newNode.Uuid, node.Uuid...) diff --git a/pkg/sql/plan/mock.go b/pkg/sql/plan/mock.go index 36384838327d4..8b8468b5f2146 100644 --- a/pkg/sql/plan/mock.go +++ b/pkg/sql/plan/mock.go @@ -1129,6 +1129,7 @@ func NewMockCompilerContext(isDml bool) *MockCompilerContext { viewData, _ := json.Marshal(ViewData{ Stmt: table.viewCfg.sql, DefaultDatabase: table.viewCfg.db, + SecurityType: "DEFINER", }) tableDef.ViewSql = &plan.ViewDef{ View: string(viewData), diff --git a/pkg/sql/plan/query_builder.go b/pkg/sql/plan/query_builder.go index 49c75dfb4152a..854b93e46a2fc 100644 --- a/pkg/sql/plan/query_builder.go +++ b/pkg/sql/plan/query_builder.go @@ -4318,6 +4318,14 @@ func (builder *QueryBuilder) appendStep(nodeID int32) int32 { func (builder *QueryBuilder) appendNode(node *plan.Node, ctx *BindContext) int32 { nodeID := int32(len(builder.qry.Nodes)) + if ctx != nil && len(ctx.viewChain) > 0 { + if len(node.OriginViews) == 0 { + node.OriginViews = append([]string{}, ctx.viewChain...) + } + if node.DirectView == "" { + node.DirectView = ctx.directView + } + } node.NodeId = nodeID builder.qry.Nodes = append(builder.qry.Nodes, node) builder.ctxByNode = append(builder.ctxByNode, ctx) @@ -4522,6 +4530,21 @@ func (builder *QueryBuilder) bindView( defaultDatabase = obj.SubscriptionName } viewCtx.defaultDatabase = defaultDatabase + viewKey := schema + "#" + table + viewKeyWithSnapshot := viewKey + if IsSnapshotValid(snapshot) { + viewKeyWithSnapshot = FormatViewKeyWithSnapshot(viewKey, snapshot) + } + if ctx != nil && ctx.directView != "" { + viewCtx.directView = ctx.directView + } else { + viewCtx.directView = viewKeyWithSnapshot + } + if ctx != nil && len(ctx.viewChain) > 0 { + viewCtx.viewChain = append(append([]string{}, ctx.viewChain...), viewKey) + } else { + viewCtx.viewChain = []string{viewKey} + } if viewCtx.viewInBinding(schema, table, viewStmt) { return 0, moerr.NewParseErrorf(builder.GetContext(), "view %s reference itself", table) diff --git a/pkg/sql/plan/query_builder_test.go b/pkg/sql/plan/query_builder_test.go index 40a0f15d5eb0a..c16967ad4661a 100644 --- a/pkg/sql/plan/query_builder_test.go +++ b/pkg/sql/plan/query_builder_test.go @@ -59,6 +59,7 @@ func TestBuildTable_AlterView(t *testing.T) { vData, err := json.Marshal(ViewData{ "create view v as select a from a", "db", + "DEFINER", }) assert.NoError(t, err) diff --git a/pkg/sql/plan/types.go b/pkg/sql/plan/types.go index 329fa0681fc8c..336a7fbc9f6a2 100644 --- a/pkg/sql/plan/types.go +++ b/pkg/sql/plan/types.go @@ -75,6 +75,15 @@ type Snapshot = plan.Snapshot type SnapshotTenant = plan.SnapshotTenant type ExternAttr = plan.ExternAttr +const ViewSnapshotKeySuffix = "@ts=" + +func FormatViewKeyWithSnapshot(viewKey string, snapshot *Snapshot) string { + if !IsSnapshotValid(snapshot) || snapshot.TS == nil { + return viewKey + } + return fmt.Sprintf("%s%s%d", viewKey, ViewSnapshotKeySuffix, snapshot.TS.PhysicalTime) +} + type CompilerContext interface { // Default database/schema in context DefaultDatabase() string @@ -161,6 +170,7 @@ type BaseOptimizer struct { type ViewData struct { Stmt string DefaultDatabase string + SecurityType string `json:"security_type,omitempty"` } type QueryBuilder struct { @@ -329,8 +339,12 @@ type BindContext struct { snapshot *Snapshot // all view keys(dbName#viewName) views []string - //view in binding or already bound + // view in binding or already bound boundViews map[[2]string]*tree.CreateView + // viewChain tracks view lineage for the current bind context. + viewChain []string + // directView tracks the outermost view referenced by the user. + directView string // lower is sys var lower_case_table_names lower int64 diff --git a/proto/plan.proto b/proto/plan.proto index 5c35f9b0fc92f..ba80a5cbdb672 100644 --- a/proto/plan.proto +++ b/proto/plan.proto @@ -881,6 +881,9 @@ message Node { string dedup_col_name = 67; repeated Type dedup_col_types = 68 [(gogoproto.nullable) = false]; bool rollup_filter = 69; + + repeated string origin_views = 71; + string direct_view = 72; } message SnapshotExtraInfo { diff --git a/test/distributed/cases/database/create_table_like.result b/test/distributed/cases/database/create_table_like.result index 2229a2f2f029e..5cf7ae2cb5456 100644 --- a/test/distributed/cases/database/create_table_like.result +++ b/test/distributed/cases/database/create_table_like.result @@ -27,7 +27,7 @@ table test already exists create view view1 as select * from test; show create view view1; View Create View character_set_client collation_connection -view1 create view view1 as select * from test; utf8mb4 utf8mb4_general_ci +view1 create SQL SECURITY DEFINER view view1 as select * from test; utf8mb4 utf8mb4_general_ci create table new_test like view1; internal error: test1.view1 is not BASE TABLE drop database test1; diff --git a/test/distributed/cases/ddl/alter_table_change_column.result b/test/distributed/cases/ddl/alter_table_change_column.result index 5d2469e65292a..9602fe9dc249f 100644 --- a/test/distributed/cases/ddl/alter_table_change_column.result +++ b/test/distributed/cases/ddl/alter_table_change_column.result @@ -1953,14 +1953,14 @@ insert into view02 values (1); create view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); show create view v0; View Create View character_set_client collation_connection -v0 create view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci +v0 create SQL SECURITY DEFINER view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci alter table view01 change a aCOL float; show create table view01; Table Create Table view01 CREATE TABLE `view01` (\n `aCOL` float DEFAULT NULL\n) show create view v0; View Create View character_set_client collation_connection -v0 create view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci +v0 create SQL SECURITY DEFINER view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci drop table view01; drop table view02; drop view v0; diff --git a/test/distributed/cases/ddl/alter_table_modify_column.result b/test/distributed/cases/ddl/alter_table_modify_column.result index 74972b7fb1b33..eac2b1c98190f 100644 --- a/test/distributed/cases/ddl/alter_table_modify_column.result +++ b/test/distributed/cases/ddl/alter_table_modify_column.result @@ -1511,14 +1511,14 @@ insert into view02 values (1); create view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); show create view v0; View Create View character_set_client collation_connection -v0 create view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci +v0 create SQL SECURITY DEFINER view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci alter table view01 modify a float; show create table view01; Table Create Table view01 CREATE TABLE `view01` (\n `a` float DEFAULT NULL\n) show create view v0; View Create View character_set_client collation_connection -v0 create view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci +v0 create SQL SECURITY DEFINER view v0 as select view01.a, view02.a as b from view01 left join view02 using(a); utf8mb4 utf8mb4_general_ci drop table view01; drop table view02; drop view v0; diff --git a/test/distributed/cases/ddl/alter_table_rename_column.result b/test/distributed/cases/ddl/alter_table_rename_column.result index 931218ed291c7..e5f41ffb53b14 100644 --- a/test/distributed/cases/ddl/alter_table_rename_column.result +++ b/test/distributed/cases/ddl/alter_table_rename_column.result @@ -469,7 +469,7 @@ invalid input: column 'a' specified in USING clause does not exist in left table create view v0 as select view01.cwhuenwjfdwcweffcfwef, view02.cwhuenwjfdwcweffcfwef as b from view01 left join view02 using(cwhuenwjfdwcweffcfwef); show create view v0; View Create View character_set_client collation_connection -v0 create view v0 as select view01.cwhuenwjfdwcweffcfwef, view02.cwhuenwjfdwcweffcfwef as b from view01 left join view02 using(cwhuenwjfdwcweffcfwef); utf8mb4 utf8mb4_general_ci +v0 create SQL SECURITY DEFINER view v0 as select view01.cwhuenwjfdwcweffcfwef, view02.cwhuenwjfdwcweffcfwef as b from view01 left join view02 using(cwhuenwjfdwcweffcfwef); utf8mb4 utf8mb4_general_ci drop table view01; drop table view02; drop role if exists role_r1; diff --git a/test/distributed/cases/ddl/create_table_like.result b/test/distributed/cases/ddl/create_table_like.result index e26b99c34a676..64e7031554b24 100644 Binary files a/test/distributed/cases/ddl/create_table_like.result and b/test/distributed/cases/ddl/create_table_like.result differ diff --git a/test/distributed/cases/ddl/lowercase.result b/test/distributed/cases/ddl/lowercase.result index 821b3f173ba0e..c8d4488d7d867 100644 --- a/test/distributed/cases/ddl/lowercase.result +++ b/test/distributed/cases/ddl/lowercase.result @@ -348,7 +348,7 @@ CREATE TABLE TaB(Field int); CREATE VIEW ViE AS SELECT * FROM TAb; show CREATE TABLE VIe; View Create View character_set_client collation_connection -vie CREATE VIEW ViE AS SELECT * FROM TAb; utf8mb4 utf8mb4_general_ci +vie CREATE SQL SECURITY DEFINER VIEW ViE AS SELECT * FROM TAb; utf8mb4 utf8mb4_general_ci DROP VIEW vie; DROP table TAB; DROP TABLE IF EXISTS t13; @@ -359,7 +359,7 @@ CREATE VIEW view01 AS SELECT * FROM t13; ALTER VIEW VIEW01 AS SELECT * FROM t13 WHERE a=1 or a = 2; show CREATE TABLE vieW01; View Create View character_set_client collation_connection -view01 CREATE VIEW VIEW01 AS SELECT * FROM t13 WHERE a=1 or a = 2; utf8mb4 utf8mb4_general_ci +view01 CREATE SQL SECURITY DEFINER VIEW VIEW01 AS SELECT * FROM t13 WHERE a=1 or a = 2; utf8mb4 utf8mb4_general_ci SELECT * FROM view01; a 1 @@ -585,7 +585,7 @@ INSERT INTO TAB VALUES(10); CREATE VIEW `ViE` AS SELECT * FROM `TAb`; show CREATE TABLE `VIe`; View Create View character_set_client collation_connection -vie CREATE VIEW `ViE` AS SELECT * FROM `TAb`; utf8mb4 utf8mb4_general_ci +vie CREATE SQL SECURITY DEFINER VIEW `ViE` AS SELECT * FROM `TAb`; utf8mb4 utf8mb4_general_ci DROP view `VIE`; DROP table `TAB`; DROP TABLE IF EXISTS `t22`; diff --git a/test/distributed/cases/ddl/mysql_ddl_3.result b/test/distributed/cases/ddl/mysql_ddl_3.result index bd602cbd2f423..266f8b33983a9 100644 --- a/test/distributed/cases/ddl/mysql_ddl_3.result +++ b/test/distributed/cases/ddl/mysql_ddl_3.result @@ -5,7 +5,7 @@ create table mysql_ddl_test_t31(id int); /*!50001 CREATE DEFINER = `root`@`%` VIEW mysql_ddl_test_v31 AS Select id from mysql_ddl_test_t31 */; show create view mysql_ddl_test_v31; View Create View character_set_client collation_connection -mysql_ddl_test_v31 /*!50001 CREATE DEFINER = `root`@`%` VIEW mysql_ddl_test_v31 AS Select id from mysql_ddl_test_t31 */; utf8mb4 utf8mb4_general_ci +mysql_ddl_test_v31 /*!50001 CREATE DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW mysql_ddl_test_v31 AS Select id from mysql_ddl_test_t31 */; utf8mb4 utf8mb4_general_ci DROP TABLE IF EXISTS `mysql_ddl_test_t32`; CREATE TABLE `mysql_ddl_test_t32` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', @@ -265,7 +265,7 @@ id name CREATE VIEW mysql_ddl_test_v32 AS select convert(`mysql_ddl_test_t39`.`name` using utf8mb4) as converted_name from mysql_ddl_test_t39; SHOW CREATE VIEW mysql_ddl_test_v32; View Create View character_set_client collation_connection -mysql_ddl_test_v32 CREATE VIEW mysql_ddl_test_v32 AS select convert(`mysql_ddl_test_t39`.`name` using utf8mb4) as converted_name from mysql_ddl_test_t39; utf8mb4 utf8mb4_general_ci +mysql_ddl_test_v32 CREATE SQL SECURITY DEFINER VIEW mysql_ddl_test_v32 AS select convert(`mysql_ddl_test_t39`.`name` using utf8mb4) as converted_name from mysql_ddl_test_t39; utf8mb4 utf8mb4_general_ci select * from mysql_ddl_test_v32; converted_name ashley diff --git a/test/distributed/cases/ddl/mysql_ddl_4.result b/test/distributed/cases/ddl/mysql_ddl_4.result index 4411e3306d0b4..d8cf5f4b4930a 100644 --- a/test/distributed/cases/ddl/mysql_ddl_4.result +++ b/test/distributed/cases/ddl/mysql_ddl_4.result @@ -191,7 +191,7 @@ on((`a`.`PMS_CONTRACT_ID` = `b`.`PMS_CONTRACT_ID`))) where (now() between `b`.`CONTRACT_EFFECTIVE_START` and `b`.`CONTRACT_EFFECTIVE_END`) ; SHOW CREATE VIEW mysql_ddl_test_v41; View Create View character_set_client collation_connection -mysql_ddl_test_v41 CREATE VIEW `mysql_ddl_test_v41` AS\nselect 'U' AS `TYPE`,`b`.`ORGANIZATION_ID` AS `ORGANIZATION_ID`,\n`a`.`SA_CONTRACT_HEAD_ID` AS `CONTRACT`,`a`.`ITEM_ID` AS `ITEM_ID`,`a`.`BASE_LEVEL_ID` AS `BASE_LEVEL_ID`,`a`.`CONTRACT_PRICE` AS `CONTRACT_PRICE`\nfrom (\n`mysql_ddl_test_t41` `a`\nleft join `mysql_ddl_test_t42` `b`\non((`a`.`SA_CONTRACT_HEAD_ID` = `b`.`SA_CONTRACT_HEAD_ID`)))\nwhere (now() between `b`.`BEGINDATE` and `b`.`ENDDATE`)\nunion\nselect 'P' AS `TYPE`,'1111' AS `ORGANIZATION_ID`,`a`.`PMS_CONTRACT_ID` AS `CONTRACT`,`a`.`ITEM_ID` AS `ITEM_ID`,`a`.`BASE_LEVEL_ID` AS `BASE_LEVEL_ID`,`a`.`PRICE_SLICE` AS `CONTRACT_PRICE`\nfrom (\n`mysql_ddl_test_t43` `a`\nleft join `mysql_ddl_test_t44` `b`\non((`a`.`PMS_CONTRACT_ID` = `b`.`PMS_CONTRACT_ID`)))\nwhere (now() between `b`.`CONTRACT_EFFECTIVE_START` and `b`.`CONTRACT_EFFECTIVE_END`) ; utf8mb4 utf8mb4_general_ci +mysql_ddl_test_v41 CREATE SQL SECURITY DEFINER VIEW `mysql_ddl_test_v41` AS\nselect 'U' AS `TYPE`,`b`.`ORGANIZATION_ID` AS `ORGANIZATION_ID`,\n`a`.`SA_CONTRACT_HEAD_ID` AS `CONTRACT`,`a`.`ITEM_ID` AS `ITEM_ID`,`a`.`BASE_LEVEL_ID` AS `BASE_LEVEL_ID`,`a`.`CONTRACT_PRICE` AS `CONTRACT_PRICE`\nfrom (\n`mysql_ddl_test_t41` `a`\nleft join `mysql_ddl_test_t42` `b`\non((`a`.`SA_CONTRACT_HEAD_ID` = `b`.`SA_CONTRACT_HEAD_ID`)))\nwhere (now() between `b`.`BEGINDATE` and `b`.`ENDDATE`)\nunion\nselect 'P' AS `TYPE`,'1111' AS `ORGANIZATION_ID`,`a`.`PMS_CONTRACT_ID` AS `CONTRACT`,`a`.`ITEM_ID` AS `ITEM_ID`,`a`.`BASE_LEVEL_ID` AS `BASE_LEVEL_ID`,`a`.`PRICE_SLICE` AS `CONTRACT_PRICE`\nfrom (\n`mysql_ddl_test_t43` `a`\nleft join `mysql_ddl_test_t44` `b`\non((`a`.`PMS_CONTRACT_ID` = `b`.`PMS_CONTRACT_ID`)))\nwhere (now() between `b`.`CONTRACT_EFFECTIVE_START` and `b`.`CONTRACT_EFFECTIVE_END`) ; utf8mb4 utf8mb4_general_ci DROP VIEW IF EXISTS mysql_ddl_test_v42; [unknown result because it is related to issue#moc 1229] /*!50001 CREATE ALGORITHM=UNDEFINED */ diff --git a/test/distributed/cases/dml/show/show.result b/test/distributed/cases/dml/show/show.result index 3384442044f76..459ad80f01e0e 100644 --- a/test/distributed/cases/dml/show/show.result +++ b/test/distributed/cases/dml/show/show.result @@ -333,10 +333,10 @@ Table Create Table a CREATE TABLE `a` (\n `a` int DEFAULT NULL,\n `b` int DEFAULT NULL\n) show create table va; View Create View character_set_client collation_connection -va create view va as select a from a; utf8mb4 utf8mb4_general_ci +va create SQL SECURITY DEFINER view va as select a from a; utf8mb4 utf8mb4_general_ci show create view va; View Create View character_set_client collation_connection -va create view va as select a from a; utf8mb4 utf8mb4_general_ci +va create SQL SECURITY DEFINER view va as select a from a; utf8mb4 utf8mb4_general_ci show collation like 'utf8mb4_general_ci'; Collation Charset Id Default Compiled Sortlen Pad_attribute utf8mb4_general_ci utf8mb4 45 Yes 1 PAD SPACE @@ -464,5 +464,5 @@ create database test; use test; SHOW CREATE TABLE information_schema.columns; View Create View character_set_client collation_connection -columns CREATE VIEW information_schema.COLUMNS AS select 'def' as TABLE_CATALOG,mc.att_database as TABLE_SCHEMA,mc.att_relname AS TABLE_NAME,mc.attname AS COLUMN_NAME,mc.attnum AS ORDINAL_POSITION,mo_show_visible_bin(mc.att_default,1) as COLUMN_DEFAULT,(case when mc.attnotnull != 0 then 'NO' else 'YES' end) as IS_NULLABLE,mo_show_visible_bin(mc.atttyp,2) as DATA_TYPE,internal_char_length(mc.atttyp) AS CHARACTER_MAXIMUM_LENGTH,internal_char_size(mc.atttyp) AS CHARACTER_OCTET_LENGTH,internal_numeric_precision(mc.atttyp) AS NUMERIC_PRECISION,internal_numeric_scale(mc.atttyp) AS NUMERIC_SCALE,internal_datetime_scale(mc.atttyp) AS DATETIME_PRECISION,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8' WHEN 1 then 'utf8' else NULL end) AS CHARACTER_SET_NAME,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8_bin' WHEN 1 then 'utf8_bin' else NULL end) AS COLLATION_NAME,mo_show_visible_bin(mc.atttyp,3) as COLUMN_TYPE,case when mc.att_constraint_type = 'p' then 'PRI' when mo_show_col_unique(mt.`constraint`, mc.attname) then 'UNI' else '' end as COLUMN_KEY,case when mc.att_is_auto_increment = 1 then 'auto_increment' else '' end as EXTRA,'select,insert,update,references' as `PRIVILEGES`,mc.att_comment as COLUMN_COMMENT,cast('' as varchar(500)) as GENERATION_EXPRESSION,if(true, NULL, 0) as SRS_ID from mo_catalog.mo_columns mc join mo_catalog.mo_tables mt ON mc.account_id = mt.account_id AND mc.att_database = mt.reldatabase AND mc.att_relname = mt.relname where mc.account_id = current_account_id() and mc.att_relname!='mo_increment_columns' and mc.att_relname not like '__mo_cpkey_%' and mc.attname != '__mo_rowid' and mc.att_relname not like '\%!\%%\%!\%%' and mc.att_relname != '__mo_account_lock' utf8mb4 utf8mb4_general_ci +columns CREATE SQL SECURITY DEFINER VIEW information_schema.COLUMNS AS select 'def' as TABLE_CATALOG,mc.att_database as TABLE_SCHEMA,mc.att_relname AS TABLE_NAME,mc.attname AS COLUMN_NAME,mc.attnum AS ORDINAL_POSITION,mo_show_visible_bin(mc.att_default,1) as COLUMN_DEFAULT,(case when mc.attnotnull != 0 then 'NO' else 'YES' end) as IS_NULLABLE,mo_show_visible_bin(mc.atttyp,2) as DATA_TYPE,internal_char_length(mc.atttyp) AS CHARACTER_MAXIMUM_LENGTH,internal_char_size(mc.atttyp) AS CHARACTER_OCTET_LENGTH,internal_numeric_precision(mc.atttyp) AS NUMERIC_PRECISION,internal_numeric_scale(mc.atttyp) AS NUMERIC_SCALE,internal_datetime_scale(mc.atttyp) AS DATETIME_PRECISION,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8' WHEN 1 then 'utf8' else NULL end) AS CHARACTER_SET_NAME,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8_bin' WHEN 1 then 'utf8_bin' else NULL end) AS COLLATION_NAME,mo_show_visible_bin(mc.atttyp,3) as COLUMN_TYPE,case when mc.att_constraint_type = 'p' then 'PRI' when mo_show_col_unique(mt.`constraint`, mc.attname) then 'UNI' else '' end as COLUMN_KEY,case when mc.att_is_auto_increment = 1 then 'auto_increment' else '' end as EXTRA,'select,insert,update,references' as `PRIVILEGES`,mc.att_comment as COLUMN_COMMENT,cast('' as varchar(500)) as GENERATION_EXPRESSION,if(true, NULL, 0) as SRS_ID from mo_catalog.mo_columns mc join mo_catalog.mo_tables mt ON mc.account_id = mt.account_id AND mc.att_database = mt.reldatabase AND mc.att_relname = mt.relname where mc.account_id = current_account_id() and mc.att_relname!='mo_increment_columns' and mc.att_relname not like '__mo_cpkey_%' and mc.attname != '__mo_rowid' and mc.att_relname not like '\%!\%%\%!\%%' and mc.att_relname != '__mo_account_lock' utf8mb4 utf8mb4_general_ci drop database test; diff --git a/test/distributed/cases/dtype/binary.result b/test/distributed/cases/dtype/binary.result index 8405840050487..b7e3de6eee742 100644 Binary files a/test/distributed/cases/dtype/binary.result and b/test/distributed/cases/dtype/binary.result differ diff --git a/test/distributed/cases/git4data/clone/clone.result b/test/distributed/cases/git4data/clone/clone.result index 2f7bcc9de9c45..b301437089d5d 100644 --- a/test/distributed/cases/git4data/clone/clone.result +++ b/test/distributed/cases/git4data/clone/clone.result @@ -801,7 +801,7 @@ select * from v1; a show create table v1; View Create View character_set_client collation_connection -v1 create view v1 as select * from t1; utf8mb4 utf8mb4_general_ci +v1 create SQL SECURITY DEFINER view v1 as select * from t1; utf8mb4 utf8mb4_general_ci select * from v2; a b c show tables; @@ -882,7 +882,7 @@ select * from v1; a show create table v1; View Create View character_set_client collation_connection -v1 create view v1 as select * from t1; utf8mb4 utf8mb4_general_ci +v1 create SQL SECURITY DEFINER view v1 as select * from t1; utf8mb4 utf8mb4_general_ci select * from v2; a b c use test09_table; @@ -957,7 +957,7 @@ select * from v1; a show create table v1; View Create View character_set_client collation_connection -v1 create view v1 as select * from t1; utf8mb4 utf8mb4_general_ci +v1 create SQL SECURITY DEFINER view v1 as select * from t1; utf8mb4 utf8mb4_general_ci select * from v2; a b c use test09_table; diff --git a/test/distributed/cases/mo_cloud/mo_cloud.result b/test/distributed/cases/mo_cloud/mo_cloud.result index 17d388a6c9cfe..b1489736777a5 100644 --- a/test/distributed/cases/mo_cloud/mo_cloud.result +++ b/test/distributed/cases/mo_cloud/mo_cloud.result @@ -254,16 +254,16 @@ Table Create Table metric CREATE TABLE `metric` (\n `metric_name` varchar(1024) DEFAULT 'sys' COMMENT 'metric name, like: sql_statement_total, server_connections, process_cpu_percent, sys_memory_used, ...',\n `collecttime` datetime(6) NOT NULL COMMENT 'metric data collect time',\n `value` double DEFAULT '0.0' COMMENT 'metric value',\n `node` varchar(1024) DEFAULT 'monolithic' COMMENT 'mo node uuid',\n `role` varchar(1024) DEFAULT 'monolithic' COMMENT 'mo node role, like: CN, DN, LOG',\n `account` varchar(1024) DEFAULT 'sys' COMMENT 'account name',\n `type` varchar(1024) NOT NULL COMMENT 'sql type, like: insert, select, ...'\n) COMMENT='metric data' CLUSTER BY (`account`, `metric_name`, `collecttime`) SHOW CREATE TABLE system_metrics.server_connections; View Create View character_set_client collation_connection -server_connections CREATE VIEW IF NOT EXISTS `system_metrics`.`server_connections` as select `collecttime`, `value`, `node`, `role`, `account` from `system_metrics`.`metric` where `metric_name` = "server_connections" utf8mb4 utf8mb4_general_ci +server_connections CREATE SQL SECURITY DEFINER VIEW IF NOT EXISTS `system_metrics`.`server_connections` as select `collecttime`, `value`, `node`, `role`, `account` from `system_metrics`.`metric` where `metric_name` = "server_connections" utf8mb4 utf8mb4_general_ci SHOW CREATE TABLE system_metrics.server_storage_usage; View Create View character_set_client collation_connection -server_storage_usage CREATE VIEW IF NOT EXISTS `system_metrics`.`server_storage_usage` as select `collecttime`, `value`, `node`, `role`, `account` from `system_metrics`.`metric` where `metric_name` = "server_storage_usage" utf8mb4 utf8mb4_general_ci +server_storage_usage CREATE SQL SECURITY DEFINER VIEW IF NOT EXISTS `system_metrics`.`server_storage_usage` as select `collecttime`, `value`, `node`, `role`, `account` from `system_metrics`.`metric` where `metric_name` = "server_storage_usage" utf8mb4 utf8mb4_general_ci SHOW CREATE TABLE system_metrics.sql_statement_errors; View Create View character_set_client collation_connection -sql_statement_errors CREATE VIEW IF NOT EXISTS `system_metrics`.`sql_statement_errors` as select `collecttime`, `value`, `node`, `role`, `account`, `type` from `system_metrics`.`metric` where `metric_name` = "sql_statement_errors" utf8mb4 utf8mb4_general_ci +sql_statement_errors CREATE SQL SECURITY DEFINER VIEW IF NOT EXISTS `system_metrics`.`sql_statement_errors` as select `collecttime`, `value`, `node`, `role`, `account`, `type` from `system_metrics`.`metric` where `metric_name` = "sql_statement_errors" utf8mb4 utf8mb4_general_ci SHOW CREATE TABLE system_metrics.sql_transaction_total; View Create View character_set_client collation_connection -sql_transaction_total CREATE VIEW IF NOT EXISTS `system_metrics`.`sql_transaction_total` as select `collecttime`, `value`, `node`, `role`, `account` from `system_metrics`.`metric` where `metric_name` = "sql_transaction_total" utf8mb4 utf8mb4_general_ci +sql_transaction_total CREATE SQL SECURITY DEFINER VIEW IF NOT EXISTS `system_metrics`.`sql_transaction_total` as select `collecttime`, `value`, `node`, `role`, `account` from `system_metrics`.`metric` where `metric_name` = "sql_transaction_total" utf8mb4 utf8mb4_general_ci SHOW GLOBAL VARIABLES LIKE 'save_query_result'; Variable_name Value save_query_result off diff --git a/test/distributed/cases/optimistic/isolation_2.result b/test/distributed/cases/optimistic/isolation_2.result index 39a1b73eb195c..29ef7baf3d423 100644 --- a/test/distributed/cases/optimistic/isolation_2.result +++ b/test/distributed/cases/optimistic/isolation_2.result @@ -173,7 +173,7 @@ begin; create view aaa as select * from dis_table_02; show create table aaa ; View Create View character_set_client collation_connection -aaa create view aaa as select * from dis_table_02; utf8mb4 utf8mb4_general_ci +aaa create SQL SECURITY DEFINER view aaa as select * from dis_table_02; utf8mb4 utf8mb4_general_ci insert into dis_table_02(b,c) values ('vvv','2000-09-08'); begin ; select b, c from dis_table_02; diff --git a/test/distributed/cases/pessimistic_transaction/isolation_2.result b/test/distributed/cases/pessimistic_transaction/isolation_2.result index 637787b306385..75179a2f161c0 100644 --- a/test/distributed/cases/pessimistic_transaction/isolation_2.result +++ b/test/distributed/cases/pessimistic_transaction/isolation_2.result @@ -179,7 +179,7 @@ begin; create view aaa as select * from dis_table_02; show create table aaa ; View Create View character_set_client collation_connection -aaa create view aaa as select * from dis_table_02; utf8mb4 utf8mb4_general_ci +aaa create SQL SECURITY DEFINER view aaa as select * from dis_table_02; utf8mb4 utf8mb4_general_ci use isolation_2; insert into dis_table_02(b,c) values ('vvv','2000-09-08'); begin ; diff --git a/test/distributed/cases/result_count/result_count.result b/test/distributed/cases/result_count/result_count.result index bee000a4c3f0e..80af4f7b8d6bc 100644 --- a/test/distributed/cases/result_count/result_count.result +++ b/test/distributed/cases/result_count/result_count.result @@ -52,7 +52,7 @@ Database Create Database db1 CREATE DATABASE `db1` show create view v1; View Create View character_set_client collation_connection -v1 create view v1 as select * from t1; utf8mb4 utf8mb4_general_ci +v1 create SQL SECURITY DEFINER view v1 as select * from t1; utf8mb4 utf8mb4_general_ci show create table t1; Table Create Table t1 CREATE TABLE `t1` (\n `a` int DEFAULT NULL,\n `b` varchar(65535) DEFAULT NULL\n) diff --git a/test/distributed/cases/save_query_result/save_query_result.result b/test/distributed/cases/save_query_result/save_query_result.result index 374a85426714a..3cba47d91f74a 100644 --- a/test/distributed/cases/save_query_result/save_query_result.result +++ b/test/distributed/cases/save_query_result/save_query_result.result @@ -764,10 +764,10 @@ test_table test_view show create view test_view; View Create View character_set_client collation_connection -test_view create view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci +test_view create SQL SECURITY DEFINER view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci select * from result_scan(last_query_id()) as u; view create view character_set_client collation_connection -test_view create view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci +test_view create SQL SECURITY DEFINER view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci /* save_result */select * from test_view; col1 col2 col3 col4 col5 col6 0 0.1 true 1982-03-24 varchar_0 text_0 diff --git a/test/distributed/cases/snapshot/cluster/restore_cluster_table.result b/test/distributed/cases/snapshot/cluster/restore_cluster_table.result index 65d1a71b8e18c..ae0af4184e71f 100644 --- a/test/distributed/cases/snapshot/cluster/restore_cluster_table.result +++ b/test/distributed/cases/snapshot/cluster/restore_cluster_table.result @@ -272,7 +272,7 @@ use test02; create view v01 as select * from test01.sales; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from test01.sales; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from test01.sales; utf8mb4 utf8mb4_general_ci select * from v01; id sale_date amount 1 2018-12-25 100.00 @@ -283,7 +283,7 @@ use test03; create view v02 as select * from test02.v01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select * from test02.v01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select * from test02.v01; utf8mb4 utf8mb4_general_ci select * from v02; id sale_date amount 1 2018-12-25 100.00 diff --git a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result index 3871b1896f74d..02a4e4e4ee27e 100644 --- a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result +++ b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result @@ -307,7 +307,7 @@ use test02; create view v01 as select * from test01.sales; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from test01.sales; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from test01.sales; utf8mb4 utf8mb4_general_ci select * from v01; id sale_date amount 1 2018-12-25 100.00 @@ -318,7 +318,7 @@ use test03; create view v02 as select * from test02.v01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select * from test02.v01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select * from test02.v01; utf8mb4 utf8mb4_general_ci select * from v02; id sale_date amount 1 2018-12-25 100.00 diff --git a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_newnonsys.result b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_newnonsys.result index 481aa05b4b8d1..a1948fbe4d046 100644 --- a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_newnonsys.result +++ b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_newnonsys.result @@ -20,7 +20,7 @@ drop view if exists v01; create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -33,7 +33,7 @@ drop view if exists v02; create view v02 as select col1, col2 from table01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -76,7 +76,7 @@ restore account acc01 from snapshot sp100 to account acc02; use test; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -87,7 +87,7 @@ col1 col2 col3 2 -1 null show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -140,7 +140,7 @@ drop view if exists v04; create view v04 as select avg(sal) from aff01 group by mgr; show create view v04; View Create View character_set_client collation_connection -v04 create view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci +v04 create SQL SECURITY DEFINER view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci select * from v04; avg(sal) 800.00000000 @@ -565,7 +565,7 @@ Bob Physics Dr. Johnson 2024-01-15 Charlie Mathematics Mr. Smith 2024-02-01 show create view StudentCoursesView; View Create View character_set_client collation_connection -studentcoursesview create view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci +studentcoursesview create SQL SECURITY DEFINER view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci drop view StudentCoursesView; drop table Enrollments; drop table students; @@ -611,19 +611,19 @@ restore account acc01 from snapshot sp10 to account acc02; use test02; show create view employees_view; View Create View character_set_client collation_connection -employees_view create view employees_view AS SELECT * FROM employees; utf8mb4 utf8mb4_general_ci +employees_view create SQL SECURITY DEFINER view employees_view AS SELECT * FROM employees; utf8mb4 utf8mb4_general_ci show create view it_employees_view; View Create View character_set_client collation_connection -it_employees_view create view it_employees_view AS SELECT * FROM employees WHERE department = 'IT'; utf8mb4 utf8mb4_general_ci +it_employees_view create SQL SECURITY DEFINER view it_employees_view AS SELECT * FROM employees WHERE department = 'IT'; utf8mb4 utf8mb4_general_ci show create view employees_by_department_view; View Create View character_set_client collation_connection -employees_by_department_view create view employees_by_department_view AS\nselect name, department\nfrom employees\norder by department; utf8mb4 utf8mb4_general_ci +employees_by_department_view create SQL SECURITY DEFINER view employees_by_department_view AS\nselect name, department\nfrom employees\norder by department; utf8mb4 utf8mb4_general_ci show create view employees_by_salary_view; View Create View character_set_client collation_connection -employees_by_salary_view create view employees_by_salary_view AS\nselect name, salary\nfrom employees\norder by salary desc; utf8mb4 utf8mb4_general_ci +employees_by_salary_view create SQL SECURITY DEFINER view employees_by_salary_view AS\nselect name, salary\nfrom employees\norder by salary desc; utf8mb4 utf8mb4_general_ci show create view avg_salary_per_department_view; View Create View character_set_client collation_connection -avg_salary_per_department_view create view avg_salary_per_department_view AS\nselect department, avg(salary) as avg_salary\nfrom employees\ngroup by department; utf8mb4 utf8mb4_general_ci +avg_salary_per_department_view create SQL SECURITY DEFINER view avg_salary_per_department_view AS\nselect department, avg(salary) as avg_salary\nfrom employees\ngroup by department; utf8mb4 utf8mb4_general_ci drop view if exists employees_view; drop view if exists it_employees_view; drop view if exists employees_by_department_view; diff --git a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_nonsys.result b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_nonsys.result index 0fe5bd4adea37..0ef0222f64ca1 100644 --- a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_nonsys.result +++ b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_nonsys.result @@ -18,7 +18,7 @@ drop view if exists v01; create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -31,7 +31,7 @@ drop view if exists v02; create view v02 as select col1, col2 from table01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -74,7 +74,7 @@ restore account acc01 from snapshot sp100; use test; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -85,7 +85,7 @@ col1 col2 col3 2 -1 null show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -134,7 +134,7 @@ drop view if exists v04; create view v04 as select avg(sal) from aff01 group by mgr; show create view v04; View Create View character_set_client collation_connection -v04 create view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci +v04 create SQL SECURITY DEFINER view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci select * from v04; avg(sal) 800.00000000 diff --git a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_sys.result b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_sys.result index ac79e8a1b9f56..62e9dd4412f84 100644 --- a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_sys.result +++ b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_view_to_sys.result @@ -16,7 +16,7 @@ drop view if exists v01; create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -29,7 +29,7 @@ drop view if exists v02; create view v02 as select col1, col2 from table01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -93,7 +93,7 @@ col1 col2 col3 restore account sys from snapshot sp100; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -104,7 +104,7 @@ col1 col2 col3 2 -1 null show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -168,7 +168,7 @@ drop view if exists v04; create view v04 as select avg(sal) from aff01 group by mgr; show create view v04; View Create View character_set_client collation_connection -v04 create view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci +v04 create SQL SECURITY DEFINER view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci select * from v04; avg(sal) 800.00000000 diff --git a/test/distributed/cases/snapshot/nonsys_restore_view_to_nonsys_account.result b/test/distributed/cases/snapshot/nonsys_restore_view_to_nonsys_account.result index 27e8352770482..a7ae0bf87571a 100644 --- a/test/distributed/cases/snapshot/nonsys_restore_view_to_nonsys_account.result +++ b/test/distributed/cases/snapshot/nonsys_restore_view_to_nonsys_account.result @@ -18,7 +18,7 @@ drop view if exists v01; create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -31,7 +31,7 @@ drop view if exists v02; create view v02 as select col1, col2 from table01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -95,7 +95,7 @@ col1 col2 col3 restore account acc01 from snapshot sp100; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -106,7 +106,7 @@ col1 col2 col3 2 -1 null show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -170,7 +170,7 @@ drop view if exists v04; create view v04 as select avg(sal) from aff01 group by mgr; show create view v04; View Create View character_set_client collation_connection -v04 create view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci +v04 create SQL SECURITY DEFINER view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci select * from v04; avg(sal) 800.00000000 @@ -686,7 +686,7 @@ Bob Physics Dr. Johnson 2024-01-15 Charlie Mathematics Mr. Smith 2024-02-01 show create view StudentCoursesView; View Create View character_set_client collation_connection -studentcoursesview create view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci +studentcoursesview create SQL SECURITY DEFINER view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci drop view StudentCoursesView; drop table Enrollments; drop table students; diff --git a/test/distributed/cases/snapshot/restore_dropped_account.result b/test/distributed/cases/snapshot/restore_dropped_account.result index 9bc0800fda941..91d048a5740d5 100644 --- a/test/distributed/cases/snapshot/restore_dropped_account.result +++ b/test/distributed/cases/snapshot/restore_dropped_account.result @@ -127,7 +127,7 @@ id body title 10 null null show create table v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from src; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from src; utf8mb4 utf8mb4_general_ci drop snapshot if exists spsp02; create snapshot spsp02 for account acc02; drop account acc02; diff --git a/test/distributed/cases/snapshot/snapshot_database_level.result b/test/distributed/cases/snapshot/snapshot_database_level.result index 8fabb9330dadf..44a01d2128dfc 100644 --- a/test/distributed/cases/snapshot/snapshot_database_level.result +++ b/test/distributed/cases/snapshot/snapshot_database_level.result @@ -206,7 +206,7 @@ id body title 10 null null show create table v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from src; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from src; utf8mb4 utf8mb4_general_ci drop snapshot if exists spsp02; create snapshot spsp02 for account acc02; drop account acc02; diff --git a/test/distributed/cases/snapshot/snapshot_read_3.result b/test/distributed/cases/snapshot/snapshot_read_3.result index 6c164361d72c8..6bd0c7cb09547 100644 --- a/test/distributed/cases/snapshot/snapshot_read_3.result +++ b/test/distributed/cases/snapshot/snapshot_read_3.result @@ -16,7 +16,7 @@ Table Create Table test_snapshot_read CREATE TABLE `test_snapshot_read` (\n `a` int DEFAULT NULL\n) show create table test_snapshot_read_view; View Create View character_set_client collation_connection -test_snapshot_read_view create view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci +test_snapshot_read_view create SQL SECURITY DEFINER view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci drop table test_snapshot_read; drop view test_snapshot_read_view; select count(*) from snapshot_read.test_snapshot_read{snapshot = 'snapshot_01'}; @@ -37,7 +37,7 @@ Table Create Table test_snapshot_read CREATE TABLE `test_snapshot_read` (\n `a` int DEFAULT NULL\n) show create table test_snapshot_read_view {snapshot = 'snapshot_01'}; View Create View character_set_client collation_connection -test_snapshot_read_view create view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci +test_snapshot_read_view create SQL SECURITY DEFINER view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci drop database if exists snapshot_read; drop snapshot snapshot_01; create database if not exists snapshot_read; @@ -58,7 +58,7 @@ Table Create Table test_snapshot_read CREATE TABLE `test_snapshot_read` (\n `a` int DEFAULT NULL\n) show create table test_snapshot_read_view; View Create View character_set_client collation_connection -test_snapshot_read_view create view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci +test_snapshot_read_view create SQL SECURITY DEFINER view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci show databases like 'snapshot_read'; Database snapshot_read @@ -82,7 +82,7 @@ Table Create Table test_snapshot_read CREATE TABLE `test_snapshot_read` (\n `a` int DEFAULT NULL\n) show create table test_snapshot_read_view {snapshot = 'snapshot_01'}; View Create View character_set_client collation_connection -test_snapshot_read_view create view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci +test_snapshot_read_view create SQL SECURITY DEFINER view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci show databases like 'snapshot_read'; Database snapshot_read @@ -96,7 +96,7 @@ Table Create Table test_snapshot_read CREATE TABLE `test_snapshot_read` (\n `a` int DEFAULT NULL\n) show create table snapshot_read.test_snapshot_read_view {snapshot = 'snapshot_01'}; View Create View character_set_client collation_connection -test_snapshot_read_view create view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci +test_snapshot_read_view create SQL SECURITY DEFINER view test_snapshot_read_view as select * from test_snapshot_read; utf8mb4 utf8mb4_general_ci show databases like 'snapshot_read' {snapshot = 'snapshot_01'}; Database snapshot_read diff --git a/test/distributed/cases/snapshot/snapshot_restore_lower_case.result b/test/distributed/cases/snapshot/snapshot_restore_lower_case.result index 488b5fc4c3b86..2b54ab27fc1cf 100644 --- a/test/distributed/cases/snapshot/snapshot_restore_lower_case.result +++ b/test/distributed/cases/snapshot/snapshot_restore_lower_case.result @@ -182,7 +182,7 @@ EmployeeDepartmentView Employees show create table EmployeeDepartmentView; View Create View character_set_client collation_connection -EmployeeDepartmentView create view EmployeeDepartmentView as\nselect\ne.FirstName,\ne.LastName,\nd.DepartmentName\nfrom\nEmployees e\ninner join\nDepartments d ON e.DepartmentID = d.DepartmentID; utf8mb4 utf8mb4_general_ci +EmployeeDepartmentView create SQL SECURITY DEFINER view EmployeeDepartmentView as\nselect\ne.FirstName,\ne.LastName,\nd.DepartmentName\nfrom\nEmployees e\ninner join\nDepartments d ON e.DepartmentID = d.DepartmentID; utf8mb4 utf8mb4_general_ci restore account acc01 from snapshot sp02_restore_lower to account acc04; use test02; show tables; @@ -204,7 +204,7 @@ EmployeeDepartmentView Employees show create table EmployeeDepartmentView; View Create View character_set_client collation_connection -EmployeeDepartmentView create view EmployeeDepartmentView as\nselect\ne.FirstName,\ne.LastName,\nd.DepartmentName\nfrom\nEmployees e\ninner join\nDepartments d ON e.DepartmentID = d.DepartmentID; utf8mb4 utf8mb4_general_ci +EmployeeDepartmentView create SQL SECURITY DEFINER view EmployeeDepartmentView as\nselect\ne.FirstName,\ne.LastName,\nd.DepartmentName\nfrom\nEmployees e\ninner join\nDepartments d ON e.DepartmentID = d.DepartmentID; utf8mb4 utf8mb4_general_ci drop account if exists acc01; drop account if exists acc02; drop account if exists acc04; diff --git a/test/distributed/cases/snapshot/sys_restore_view_to_newnonsys_account.result b/test/distributed/cases/snapshot/sys_restore_view_to_newnonsys_account.result index 9e88ac977e838..fa07334b7d076 100644 --- a/test/distributed/cases/snapshot/sys_restore_view_to_newnonsys_account.result +++ b/test/distributed/cases/snapshot/sys_restore_view_to_newnonsys_account.result @@ -20,7 +20,7 @@ drop view if exists v01; create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -33,7 +33,7 @@ drop view if exists v02; create view v02 as select col1, col2 from table01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -76,7 +76,7 @@ restore account acc01 from snapshot sp100 to account acc02; use test; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -87,7 +87,7 @@ col1 col2 col3 2 -1 null show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -140,7 +140,7 @@ drop view if exists v04; create view v04 as select avg(sal) from aff01 group by mgr; show create view v04; View Create View character_set_client collation_connection -v04 create view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci +v04 create SQL SECURITY DEFINER view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci select * from v04; avg(sal) 800.00000000 @@ -565,7 +565,7 @@ Bob Physics Dr. Johnson 2024-01-15 Charlie Mathematics Mr. Smith 2024-02-01 show create view StudentCoursesView; View Create View character_set_client collation_connection -studentcoursesview create view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci +studentcoursesview create SQL SECURITY DEFINER view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci drop view StudentCoursesView; drop table Enrollments; drop table students; @@ -611,19 +611,19 @@ restore account acc01 from snapshot sp10 to account acc02; use test02; show create view employees_view; View Create View character_set_client collation_connection -employees_view create view employees_view AS SELECT * FROM employees; utf8mb4 utf8mb4_general_ci +employees_view create SQL SECURITY DEFINER view employees_view AS SELECT * FROM employees; utf8mb4 utf8mb4_general_ci show create view it_employees_view; View Create View character_set_client collation_connection -it_employees_view create view it_employees_view AS SELECT * FROM employees WHERE department = 'IT'; utf8mb4 utf8mb4_general_ci +it_employees_view create SQL SECURITY DEFINER view it_employees_view AS SELECT * FROM employees WHERE department = 'IT'; utf8mb4 utf8mb4_general_ci show create view employees_by_department_view; View Create View character_set_client collation_connection -employees_by_department_view create view employees_by_department_view AS\nselect name, department\nfrom employees\norder by department; utf8mb4 utf8mb4_general_ci +employees_by_department_view create SQL SECURITY DEFINER view employees_by_department_view AS\nselect name, department\nfrom employees\norder by department; utf8mb4 utf8mb4_general_ci show create view employees_by_salary_view; View Create View character_set_client collation_connection -employees_by_salary_view create view employees_by_salary_view AS\nselect name, salary\nfrom employees\norder by salary desc; utf8mb4 utf8mb4_general_ci +employees_by_salary_view create SQL SECURITY DEFINER view employees_by_salary_view AS\nselect name, salary\nfrom employees\norder by salary desc; utf8mb4 utf8mb4_general_ci show create view avg_salary_per_department_view; View Create View character_set_client collation_connection -avg_salary_per_department_view create view avg_salary_per_department_view AS\nselect department, avg(salary) as avg_salary\nfrom employees\ngroup by department; utf8mb4 utf8mb4_general_ci +avg_salary_per_department_view create SQL SECURITY DEFINER view avg_salary_per_department_view AS\nselect department, avg(salary) as avg_salary\nfrom employees\ngroup by department; utf8mb4 utf8mb4_general_ci drop view if exists employees_view; drop view if exists it_employees_view; drop view if exists employees_by_department_view; diff --git a/test/distributed/cases/snapshot/sys_restore_view_to_nonsys_account.result b/test/distributed/cases/snapshot/sys_restore_view_to_nonsys_account.result index 9230dc6a4e38a..1979869583067 100644 --- a/test/distributed/cases/snapshot/sys_restore_view_to_nonsys_account.result +++ b/test/distributed/cases/snapshot/sys_restore_view_to_nonsys_account.result @@ -18,7 +18,7 @@ drop view if exists v01; create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -31,7 +31,7 @@ drop view if exists v02; create view v02 as select col1, col2 from table01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -74,7 +74,7 @@ restore account acc01 from snapshot sp100; use test; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -85,7 +85,7 @@ col1 col2 col3 2 -1 null show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -134,7 +134,7 @@ drop view if exists v04; create view v04 as select avg(sal) from aff01 group by mgr; show create view v04; View Create View character_set_client collation_connection -v04 create view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci +v04 create SQL SECURITY DEFINER view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci select * from v04; avg(sal) 800.00000000 @@ -553,7 +553,7 @@ Bob Physics Dr. Johnson 2024-01-15 Charlie Mathematics Mr. Smith 2024-02-01 show create view StudentCoursesView; View Create View character_set_client collation_connection -studentcoursesview create view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci +studentcoursesview create SQL SECURITY DEFINER view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci drop view StudentCoursesView; drop table Enrollments; drop table students; diff --git a/test/distributed/cases/snapshot/sys_restore_view_to_sys_account.result b/test/distributed/cases/snapshot/sys_restore_view_to_sys_account.result index cff09a35a9b72..3cb4f59660da8 100644 --- a/test/distributed/cases/snapshot/sys_restore_view_to_sys_account.result +++ b/test/distributed/cases/snapshot/sys_restore_view_to_sys_account.result @@ -16,7 +16,7 @@ drop view if exists v01; create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -29,7 +29,7 @@ drop view if exists v02; create view v02 as select col1, col2 from table01; show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -93,7 +93,7 @@ col1 col2 col3 restore account sys from snapshot sp100; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci select * from v01; col1 col2 col3 1 null database @@ -104,7 +104,7 @@ col1 col2 col3 2 -1 null show create view v02; View Create View character_set_client collation_connection -v02 create view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci +v02 create SQL SECURITY DEFINER view v02 as select col1, col2 from table01; utf8mb4 utf8mb4_general_ci select * from v02; col1 col2 1 null @@ -168,7 +168,7 @@ drop view if exists v04; create view v04 as select avg(sal) from aff01 group by mgr; show create view v04; View Create View character_set_client collation_connection -v04 create view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci +v04 create SQL SECURITY DEFINER view v04 as select avg(sal) from aff01 group by mgr; utf8mb4 utf8mb4_general_ci select * from v04; avg(sal) 800.00000000 @@ -702,7 +702,7 @@ Bob Physics Dr. Johnson 2024-01-15 Charlie Mathematics Mr. Smith 2024-02-01 show create view StudentCoursesView; View Create View character_set_client collation_connection -studentcoursesview create view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci +studentcoursesview create SQL SECURITY DEFINER view StudentCoursesView as\nselect\ns.Name as StudentName,\nc.Title as CourseTitle,\nc.Teacher,\ne.EnrollmentDate\nfrom\nStudents s\njoin\nEnrollments e on s.StudentID = e.StudentID\njoin\nCourses c on e.CourseID = c.CourseID\norder by\ns.Name, c.Title; utf8mb4 utf8mb4_general_ci drop view StudentCoursesView; drop table Enrollments; drop table students; diff --git a/test/distributed/cases/statement_query_type/regression.result b/test/distributed/cases/statement_query_type/regression.result index abff2f86675d6..c3e147d02fa15 100644 --- a/test/distributed/cases/statement_query_type/regression.result +++ b/test/distributed/cases/statement_query_type/regression.result @@ -7,7 +7,7 @@ create table test_table(col1 int,col2 varchar); create view test_view as select * from test_table; show create view test_view; View Create View character_set_client collation_connection -test_view create view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci +test_view create SQL SECURITY DEFINER view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci show collation like 'utf8mb4_general_ci'; Collation Charset Id Default Compiled Sortlen Pad_attribute utf8mb4_general_ci utf8mb4 45 Yes 1 PAD SPACE diff --git a/test/distributed/cases/statement_query_type/statement_query_type_1.result b/test/distributed/cases/statement_query_type/statement_query_type_1.result index f9d807a56bc22..433a07f746e70 100644 --- a/test/distributed/cases/statement_query_type/statement_query_type_1.result +++ b/test/distributed/cases/statement_query_type/statement_query_type_1.result @@ -23,7 +23,7 @@ Table Create Table test_table CREATE TABLE `test_table` (\n `col1` int DEFAULT NULL,\n `col2` varchar(65535) DEFAULT NULL\n) show create view test_view; View Create View character_set_client collation_connection -test_view create view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci +test_view create SQL SECURITY DEFINER view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci show triggers; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation show procedure status; diff --git a/test/distributed/cases/statement_query_type/statement_query_type_2.result b/test/distributed/cases/statement_query_type/statement_query_type_2.result index 39d4910228c40..8817404b38fc0 100644 --- a/test/distributed/cases/statement_query_type/statement_query_type_2.result +++ b/test/distributed/cases/statement_query_type/statement_query_type_2.result @@ -20,7 +20,7 @@ Table Create Table test_table CREATE TABLE `test_table` (\n `col1` int DEFAULT NULL,\n `col2` varchar(65535) DEFAULT NULL\n) /* cloud_user */ show create view test_view; View Create View character_set_client collation_connection -test_view create view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci +test_view create SQL SECURITY DEFINER view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci /* cloud_user */ show triggers; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation /* cloud_user */ show procedure status; diff --git a/test/distributed/cases/statement_query_type/statement_query_type_3.result b/test/distributed/cases/statement_query_type/statement_query_type_3.result index dfc161eae5535..9bd4cee19087a 100644 --- a/test/distributed/cases/statement_query_type/statement_query_type_3.result +++ b/test/distributed/cases/statement_query_type/statement_query_type_3.result @@ -23,7 +23,7 @@ Table Create Table test_table CREATE TABLE `test_table` (\n `col1` int DEFAULT NULL,\n `col2` varchar(65535) DEFAULT NULL\n) /* cloud_nonuser */ show create view test_view; View Create View character_set_client collation_connection -test_view create view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci +test_view create SQL SECURITY DEFINER view test_view as select * from test_table; utf8mb4 utf8mb4_general_ci /* cloud_nonuser */ show triggers; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation /* cloud_nonuser */ show procedure status; diff --git a/test/distributed/cases/table/create_table.result b/test/distributed/cases/table/create_table.result index 06dff3a787da2..56922ea31967d 100644 Binary files a/test/distributed/cases/table/create_table.result and b/test/distributed/cases/table/create_table.result differ diff --git a/test/distributed/cases/view/alter_view.result b/test/distributed/cases/view/alter_view.result index 7930bfc329b0c..57c7135bffee3 100644 --- a/test/distributed/cases/view/alter_view.result +++ b/test/distributed/cases/view/alter_view.result @@ -15,7 +15,7 @@ a b 1 1 SHOW CREATE VIEW v0; View Create View character_set_client collation_connection -v0 CREATE VIEW v0 AS SELECT t00.a, t01.a AS b FROM t00 LEFT JOIN t01 USING(a); utf8mb4 utf8mb4_general_ci +v0 CREATE SQL SECURITY DEFINER VIEW v0 AS SELECT t00.a, t01.a AS b FROM t00 LEFT JOIN t01 USING(a); utf8mb4 utf8mb4_general_ci ALTER VIEW v0 AS SELECT t00.a FROM t00; SELECT t00.a FROM t00; a @@ -27,7 +27,7 @@ a 2 SHOW CREATE VIEW v0; View Create View character_set_client collation_connection -v0 CREATE VIEW v0 AS SELECT t00.a FROM t00; utf8mb4 utf8mb4_general_ci +v0 CREATE SQL SECURITY DEFINER VIEW v0 AS SELECT t00.a FROM t00; utf8mb4 utf8mb4_general_ci SELECT * FROM t00; a 1 @@ -57,7 +57,7 @@ CREATE VIEW v1 AS SELECT CAST(1/3 AS DOUBLE), CAST(1/3 AS FLOAT(2)), CAST(1/3 AS table v1 already exists SHOW CREATE VIEW v1; View Create View character_set_client collation_connection -v1 create view v1 as select 'foo' from dual; utf8mb4 utf8mb4_general_ci +v1 create SQL SECURITY DEFINER view v1 as select 'foo' from dual; utf8mb4 utf8mb4_general_ci SELECT * FROM v1; foo foo @@ -65,7 +65,7 @@ alter view if exists v1 AS SELECT CAST(1/3 AS DOUBLE), CAST(1/3 AS FLOAT(2)), CA alter view v1 AS SELECT CAST(1/3 AS DOUBLE), CAST(1/3 AS FLOAT(2)), CAST(1/3 AS FLOAT(50)); SHOW CREATE VIEW v1; View Create View character_set_client collation_connection -v1 create view v1 AS SELECT CAST(1/3 AS DOUBLE), CAST(1/3 AS FLOAT(2)), CAST(1/3 AS FLOAT(50)); utf8mb4 utf8mb4_general_ci +v1 create SQL SECURITY DEFINER view v1 AS SELECT CAST(1/3 AS DOUBLE), CAST(1/3 AS FLOAT(2)), CAST(1/3 AS FLOAT(50)); utf8mb4 utf8mb4_general_ci SELECT * FROM v1; cast(1 / 3 as double) cast(1 / 3 as float(2)) cast(1 / 3 as float(50)) 0.3333333333333333 0.33333334 0.3333333333333333 diff --git a/test/distributed/cases/view/view.result b/test/distributed/cases/view/view.result index a8e8860d3a4db..c655b5aa99395 100644 --- a/test/distributed/cases/view/view.result +++ b/test/distributed/cases/view/view.result @@ -38,14 +38,14 @@ invalid input: show view 'vvvv' is not a valid view create view v1 as select "a"; show create view v1; View Create View character_set_client collation_connection -v1 create view v1 as select "a"; utf8mb4 utf8mb4_general_ci +v1 create SQL SECURITY DEFINER view v1 as select "a"; utf8mb4 utf8mb4_general_ci create view v2 as select 'a'; show create view v2; View Create View character_set_client collation_connection -v2 create view v2 as select 'a'; utf8mb4 utf8mb4_general_ci +v2 create SQL SECURITY DEFINER view v2 as select 'a'; utf8mb4 utf8mb4_general_ci show create table v2; View Create View character_set_client collation_connection -v2 create view v2 as select 'a'; utf8mb4 utf8mb4_general_ci +v2 create SQL SECURITY DEFINER view v2 as select 'a'; utf8mb4 utf8mb4_general_ci drop view v1; drop view v2; create table tt(a int); @@ -150,5 +150,5 @@ drop view if exists v01; /* cloud_user */create view v01 as select * from table01; show create view v01; View Create View character_set_client collation_connection -v01 create view v01 as select * from table01; utf8mb4 utf8mb4_general_ci +v01 create SQL SECURITY DEFINER view v01 as select * from table01; utf8mb4 utf8mb4_general_ci drop database if exists test; diff --git a/test/distributed/cases/view/view_all.result b/test/distributed/cases/view/view_all.result index db741207bf781..bc26305ee014a 100644 --- a/test/distributed/cases/view/view_all.result +++ b/test/distributed/cases/view/view_all.result @@ -15,7 +15,7 @@ a b 1 1 SHOW CREATE VIEW v0; View Create View character_set_client collation_connection -v0 CREATE VIEW v0 AS SELECT t00.a, t01.a AS b FROM t00 LEFT JOIN t01 USING(a); utf8mb4 utf8mb4_general_ci +v0 CREATE SQL SECURITY DEFINER VIEW v0 AS SELECT t00.a, t01.a AS b FROM t00 LEFT JOIN t01 USING(a); utf8mb4 utf8mb4_general_ci DROP TABLE IF EXISTS t00; DROP TABLE IF EXISTS t01; DROP TABLE IF EXISTS v0; @@ -33,7 +33,7 @@ CREATE VIEW v1 AS SELECT CAST(1/3 AS DOUBLE), CAST(1/3 AS FLOAT(2)), CAST(1/3 AS table v1 already exists SHOW CREATE VIEW v1; View Create View character_set_client collation_connection -v1 CREATE VIEW v1 AS SELECT 1; utf8mb4 utf8mb4_general_ci +v1 CREATE SQL SECURITY DEFINER VIEW v1 AS SELECT 1; utf8mb4 utf8mb4_general_ci SELECT * FROM v1; 1 1 @@ -103,7 +103,7 @@ table t1 already exists create table if not exists t1 (a int,b int); show create table t1; View Create View character_set_client collation_connection -t1 create view t1 as select a from t2; utf8mb4 utf8mb4_general_ci +t1 create SQL SECURITY DEFINER view t1 as select a from t2; utf8mb4 utf8mb4_general_ci select * from t1; a drop table t2; diff --git a/test/distributed/cases/window/window.result b/test/distributed/cases/window/window.result index f3a34260daa29..dd7ea05cb48bb 100644 --- a/test/distributed/cases/window/window.result +++ b/test/distributed/cases/window/window.result @@ -2456,7 +2456,7 @@ id sum(id) over (partition by sex order by id rows between 2 preceding and 1 create view v as select id, sum(id) over (partition by sex order by id rows between 2 preceding and 1 following), sex from row_number01; show create view v; View Create View character_set_client collation_connection -v create view v as select id, sum(id) over (partition by sex order by id rows between 2 preceding and 1 following), sex from row_number01; utf8mb4 utf8mb4_general_ci +v create SQL SECURITY DEFINER view v as select id, sum(id) over (partition by sex order by id rows between 2 preceding and 1 following), sex from row_number01; utf8mb4 utf8mb4_general_ci select * from v; id sum(id) over (partition by sex order by id rows between 2 preceding and 1 following) sex 2 5 f diff --git a/test/distributed/cases/zz_accesscontrol/account_restricted.result b/test/distributed/cases/zz_accesscontrol/account_restricted.result index f3abf048d3fbd..2bc447ada99a9 100644 --- a/test/distributed/cases/zz_accesscontrol/account_restricted.result +++ b/test/distributed/cases/zz_accesscontrol/account_restricted.result @@ -158,7 +158,7 @@ GRANT values ON table *.* `admin`@`localhost` GRANT connect ON account `admin`@`localhost` SHOW CREATE TABLE information_schema.columns; View Create View character_set_client collation_connection -columns CREATE VIEW information_schema.COLUMNS AS select 'def' as TABLE_CATALOG,mc.att_database as TABLE_SCHEMA,mc.att_relname AS TABLE_NAME,mc.attname AS COLUMN_NAME,mc.attnum AS ORDINAL_POSITION,mo_show_visible_bin(mc.att_default,1) as COLUMN_DEFAULT,(case when mc.attnotnull != 0 then 'NO' else 'YES' end) as IS_NULLABLE,mo_show_visible_bin(mc.atttyp,2) as DATA_TYPE,internal_char_length(mc.atttyp) AS CHARACTER_MAXIMUM_LENGTH,internal_char_size(mc.atttyp) AS CHARACTER_OCTET_LENGTH,internal_numeric_precision(mc.atttyp) AS NUMERIC_PRECISION,internal_numeric_scale(mc.atttyp) AS NUMERIC_SCALE,internal_datetime_scale(mc.atttyp) AS DATETIME_PRECISION,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8' WHEN 1 then 'utf8' else NULL end) AS CHARACTER_SET_NAME,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8_bin' WHEN 1 then 'utf8_bin' else NULL end) AS COLLATION_NAME,mo_show_visible_bin(mc.atttyp,3) as COLUMN_TYPE,case when mc.att_constraint_type = 'p' then 'PRI' when mo_show_col_unique(mt.`constraint`, mc.attname) then 'UNI' else '' end as COLUMN_KEY,case when mc.att_is_auto_increment = 1 then 'auto_increment' else '' end as EXTRA,'select,insert,update,references' as `PRIVILEGES`,mc.att_comment as COLUMN_COMMENT,cast('' as varchar(500)) as GENERATION_EXPRESSION,if(true, NULL, 0) as SRS_ID from mo_catalog.mo_columns mc join mo_catalog.mo_tables mt ON mc.account_id = mt.account_id AND mc.att_database = mt.reldatabase AND mc.att_relname = mt.relname where mc.account_id = current_account_id() and mc.att_relname!='mo_increment_columns' and mc.att_relname not like '__mo_cpkey_%' and mc.attname != '__mo_rowid' and mc.att_relname not like '\%!\%%\%!\%%' and mc.att_relname != '__mo_account_lock' utf8mb4 utf8mb4_general_ci +columns CREATE SQL SECURITY DEFINER VIEW information_schema.COLUMNS AS select 'def' as TABLE_CATALOG,mc.att_database as TABLE_SCHEMA,mc.att_relname AS TABLE_NAME,mc.attname AS COLUMN_NAME,mc.attnum AS ORDINAL_POSITION,mo_show_visible_bin(mc.att_default,1) as COLUMN_DEFAULT,(case when mc.attnotnull != 0 then 'NO' else 'YES' end) as IS_NULLABLE,mo_show_visible_bin(mc.atttyp,2) as DATA_TYPE,internal_char_length(mc.atttyp) AS CHARACTER_MAXIMUM_LENGTH,internal_char_size(mc.atttyp) AS CHARACTER_OCTET_LENGTH,internal_numeric_precision(mc.atttyp) AS NUMERIC_PRECISION,internal_numeric_scale(mc.atttyp) AS NUMERIC_SCALE,internal_datetime_scale(mc.atttyp) AS DATETIME_PRECISION,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8' WHEN 1 then 'utf8' else NULL end) AS CHARACTER_SET_NAME,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8_bin' WHEN 1 then 'utf8_bin' else NULL end) AS COLLATION_NAME,mo_show_visible_bin(mc.atttyp,3) as COLUMN_TYPE,case when mc.att_constraint_type = 'p' then 'PRI' when mo_show_col_unique(mt.`constraint`, mc.attname) then 'UNI' else '' end as COLUMN_KEY,case when mc.att_is_auto_increment = 1 then 'auto_increment' else '' end as EXTRA,'select,insert,update,references' as `PRIVILEGES`,mc.att_comment as COLUMN_COMMENT,cast('' as varchar(500)) as GENERATION_EXPRESSION,if(true, NULL, 0) as SRS_ID from mo_catalog.mo_columns mc join mo_catalog.mo_tables mt ON mc.account_id = mt.account_id AND mc.att_database = mt.reldatabase AND mc.att_relname = mt.relname where mc.account_id = current_account_id() and mc.att_relname!='mo_increment_columns' and mc.att_relname not like '__mo_cpkey_%' and mc.attname != '__mo_rowid' and mc.att_relname not like '\%!\%%\%!\%%' and mc.att_relname != '__mo_account_lock' utf8mb4 utf8mb4_general_ci show index from r_test; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Index_params Visible Expression r_test 0 ui 1 c1 A 0 NULL NULL YES YES c1 @@ -271,7 +271,7 @@ show grants for 'hnadmin'@'localhost'; Grants for hnadmin@localhost SHOW CREATE TABLE information_schema.columns; View Create View character_set_client collation_connection -columns CREATE VIEW information_schema.COLUMNS AS select 'def' as TABLE_CATALOG,mc.att_database as TABLE_SCHEMA,mc.att_relname AS TABLE_NAME,mc.attname AS COLUMN_NAME,mc.attnum AS ORDINAL_POSITION,mo_show_visible_bin(mc.att_default,1) as COLUMN_DEFAULT,(case when mc.attnotnull != 0 then 'NO' else 'YES' end) as IS_NULLABLE,mo_show_visible_bin(mc.atttyp,2) as DATA_TYPE,internal_char_length(mc.atttyp) AS CHARACTER_MAXIMUM_LENGTH,internal_char_size(mc.atttyp) AS CHARACTER_OCTET_LENGTH,internal_numeric_precision(mc.atttyp) AS NUMERIC_PRECISION,internal_numeric_scale(mc.atttyp) AS NUMERIC_SCALE,internal_datetime_scale(mc.atttyp) AS DATETIME_PRECISION,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8' WHEN 1 then 'utf8' else NULL end) AS CHARACTER_SET_NAME,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8_bin' WHEN 1 then 'utf8_bin' else NULL end) AS COLLATION_NAME,mo_show_visible_bin(mc.atttyp,3) as COLUMN_TYPE,case when mc.att_constraint_type = 'p' then 'PRI' when mo_show_col_unique(mt.`constraint`, mc.attname) then 'UNI' else '' end as COLUMN_KEY,case when mc.att_is_auto_increment = 1 then 'auto_increment' else '' end as EXTRA,'select,insert,update,references' as `PRIVILEGES`,mc.att_comment as COLUMN_COMMENT,cast('' as varchar(500)) as GENERATION_EXPRESSION,if(true, NULL, 0) as SRS_ID from mo_catalog.mo_columns mc join mo_catalog.mo_tables mt ON mc.account_id = mt.account_id AND mc.att_database = mt.reldatabase AND mc.att_relname = mt.relname where mc.account_id = current_account_id() and mc.att_relname!='mo_increment_columns' and mc.att_relname not like '__mo_cpkey_%' and mc.attname != '__mo_rowid' and mc.att_relname not like '\%!\%%\%!\%%' and mc.att_relname != '__mo_account_lock' utf8mb4 utf8mb4_general_ci +columns CREATE SQL SECURITY DEFINER VIEW information_schema.COLUMNS AS select 'def' as TABLE_CATALOG,mc.att_database as TABLE_SCHEMA,mc.att_relname AS TABLE_NAME,mc.attname AS COLUMN_NAME,mc.attnum AS ORDINAL_POSITION,mo_show_visible_bin(mc.att_default,1) as COLUMN_DEFAULT,(case when mc.attnotnull != 0 then 'NO' else 'YES' end) as IS_NULLABLE,mo_show_visible_bin(mc.atttyp,2) as DATA_TYPE,internal_char_length(mc.atttyp) AS CHARACTER_MAXIMUM_LENGTH,internal_char_size(mc.atttyp) AS CHARACTER_OCTET_LENGTH,internal_numeric_precision(mc.atttyp) AS NUMERIC_PRECISION,internal_numeric_scale(mc.atttyp) AS NUMERIC_SCALE,internal_datetime_scale(mc.atttyp) AS DATETIME_PRECISION,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8' WHEN 1 then 'utf8' else NULL end) AS CHARACTER_SET_NAME,(case internal_column_character_set(mc.atttyp) WHEN 0 then 'utf8_bin' WHEN 1 then 'utf8_bin' else NULL end) AS COLLATION_NAME,mo_show_visible_bin(mc.atttyp,3) as COLUMN_TYPE,case when mc.att_constraint_type = 'p' then 'PRI' when mo_show_col_unique(mt.`constraint`, mc.attname) then 'UNI' else '' end as COLUMN_KEY,case when mc.att_is_auto_increment = 1 then 'auto_increment' else '' end as EXTRA,'select,insert,update,references' as `PRIVILEGES`,mc.att_comment as COLUMN_COMMENT,cast('' as varchar(500)) as GENERATION_EXPRESSION,if(true, NULL, 0) as SRS_ID from mo_catalog.mo_columns mc join mo_catalog.mo_tables mt ON mc.account_id = mt.account_id AND mc.att_database = mt.reldatabase AND mc.att_relname = mt.relname where mc.account_id = current_account_id() and mc.att_relname!='mo_increment_columns' and mc.att_relname not like '__mo_cpkey_%' and mc.attname != '__mo_rowid' and mc.att_relname not like '\%!\%%\%!\%%' and mc.att_relname != '__mo_account_lock' utf8mb4 utf8mb4_general_ci show index from r_test; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Index_params Visible Expression r_test 0 ui 1 c1 A 0 NULL NULL YES YES c1 diff --git a/test/distributed/cases/zz_accesscontrol/grant_privs_role.result b/test/distributed/cases/zz_accesscontrol/grant_privs_role.result index c5bcc1304a348..92ebde0f664fb 100644 --- a/test/distributed/cases/zz_accesscontrol/grant_privs_role.result +++ b/test/distributed/cases/zz_accesscontrol/grant_privs_role.result @@ -42,7 +42,7 @@ table ownership table *.* false grant select,insert,update on testdb.* to test_role; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 36 near " testdb.* to test_role;"; grant select,insert,update on account * to 'test_role'; -internal error: the privilege "select" can only be granted to the object type "table" +internal error: the privilege "select" can only be granted to the object type "table" or "view" grant show tables,create,drop,alter on testdb.* to 'test_role'; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 30 near ",alter on testdb.* to 'test_role';"; grant show tables,create,drop,alter on table testdb.* to 'test_role'; @@ -54,7 +54,7 @@ SQL parser error: You have an error in your SQL syntax; check the manual that co grant select,insert,update on table testdb.* to 'trole'; internal error: there is no role trole grant select,insert,create database on account * to test_role; -internal error: the privilege "select" can only be granted to the object type "table" +internal error: the privilege "select" can only be granted to the object type "table" or "view" grant select,insert,create database on account *.* to testuser; internal error: there is no role testuser grant role_not_exists to dump; @@ -331,7 +331,7 @@ r5 database create table *.* grant create table on database *.* to r1,r2,r15,r4,r5; internal error: there is no role r15 grant select on database *.* to r1,r2,r3,r4,r5; -internal error: the privilege "select" can only be granted to the object type "table" +internal error: the privilege "select" can only be granted to the object type "table" or "view" create user user1 identified by '12345678',user2 identified by '12345678',user3 identified by '12345678',user4 identified by '12345678',user5 identified by '12345678'; grant r1,r2,r3,r4,r5 to user1,user2,user3,user4,user5; select count(*) from mo_catalog.mo_user_grant,mo_catalog.mo_user,mo_catalog.mo_role_privs where mo_user_grant.user_id=mo_user.user_id and mo_role_privs.role_id=mo_user_grant.role_id and role_name in ('r1','r2','r3','r4','r5'); diff --git a/test/distributed/cases/zz_accesscontrol/grant_view.result b/test/distributed/cases/zz_accesscontrol/grant_view.result new file mode 100644 index 0000000000000..b1b363a403cf8 --- /dev/null +++ b/test/distributed/cases/zz_accesscontrol/grant_view.result @@ -0,0 +1,143 @@ +set global enable_privilege_cache = off; +drop user if exists user_v1, user_no_db, user_invoker; +drop role if exists role_v1, role_no_db, role_invoker; +drop database if exists db_v1; +create role role_v1; +create user user_v1 identified by '111' default role role_v1; +grant role_v1 to user_v1; +create database db_v1; +use db_v1; +create table t1 (a int, b varchar(20)); +insert into t1 values (1, 'base'); +create view v1 as select * from t1; +create view v_on_v as select * from v1; +grant select on view db_v1.v1 to role_v1; +grant connect on account * to role_v1; +select current_role(); +➤ current_role()[12,-1,0] 𝄀 +role_v1 +use db_v1; +select * from v1; +a b +1 base +create role role_no_db; +create user user_no_db identified by '111' default role role_no_db; +grant role_no_db to user_no_db; +grant select on view db_v1.v1 to role_no_db; +use db_v1; +internal error: do not have privilege to execute the statement +select * from db_v1.v1; +a b +1 base +grant select on view db_v1.v_on_v to role_v1; +use db_v1; +select * from v_on_v; +a b +1 base +use db_v1; +set view_security_type = 'INVOKER'; +create view v_invoker as select * from t1; +set view_security_type = 'DEFINER'; +show create view v_invoker; +➤ View[12,-1,0] Create View[12,-1,0] character_set_client[12,-1,0] collation_connection[12,-1,0] 𝄀 +v_invoker create SQL SECURITY INVOKER view v_invoker as select * from t1; utf8mb4 utf8mb4_general_ci +create role role_invoker; +create user user_invoker identified by '111' default role role_invoker; +grant role_invoker to user_invoker; +grant connect on account * to role_invoker; +grant select on view db_v1.v_invoker to role_invoker; +use db_v1; +select * from v_invoker; +internal error: do not have privilege to execute the statement +grant select on table db_v1.t1 to role_invoker; +use db_v1; +select * from v_invoker; +a b +1 base +grant all on view db_v1.v1 to role_v1; +show grants for role_v1; +➤ Grants for role_v1@localhost[12,-1,0] +revoke all on view db_v1.v1 from role_v1; +grant select on view db_v1.v1 to role_v1; +revoke select on view db_v1.v1 from role_v1; +use db_v1; +select * from v1; +internal error: do not have privilege to execute the statement +drop role if exists role_bypass; +drop user if exists user_bypass; +create role role_bypass; +create user user_bypass identified by '111' default role role_bypass; +grant role_bypass to user_bypass; +grant connect on account * to role_bypass; +grant all on table db_v1.t1 to role_bypass; +use db_v1; +select * from v1; +internal error: do not have privilege to execute the statement +grant ownership on table db_v1.t1 to role_bypass; +use db_v1; +select * from v1; +internal error: do not have privilege to execute the statement +drop user user_bypass; +drop role role_bypass; +drop role if exists role_parent, role_child; +drop user if exists user_definer_inh, user_definer_reader; +create role role_parent; +create role role_child; +grant role_parent to role_child; +grant select on table db_v1.t1 to role_parent; +create user user_definer_inh identified by '111' default role role_child; +grant role_child to user_definer_inh; +grant connect on account * to role_child; +grant create view on database db_v1 to role_child; +grant show tables on database db_v1 to role_child; +use db_v1; +create sql security definer view v_definer_inh as select * from t1; +create role role_reader; +create user user_definer_reader identified by '111' default role role_reader; +grant role_reader to user_definer_reader; +grant connect on account * to role_reader; +grant select on view db_v1.v_definer_inh to role_reader; +use db_v1; +select * from v_definer_inh; +a b +1 base +drop user user_definer_inh; +drop user user_definer_reader; +drop role role_parent; +drop role role_child; +drop role role_reader; +drop view db_v1.v_definer_inh; +drop role if exists role_wgo_src, role_wgo_tgt; +drop user if exists user_wgo; +create role role_wgo_src; +create role role_wgo_tgt; +create user user_wgo identified by '111' default role role_wgo_src; +grant role_wgo_src to user_wgo; +grant connect on account * to role_wgo_src; +grant select on view db_v1.v1 to role_wgo_src with grant option; +grant select on view db_v1.v1 to role_wgo_tgt; +grant select on view db_v1.v_on_v to role_wgo_tgt; +internal error: do not have privilege to execute the statement +drop user user_wgo; +drop role role_wgo_src; +drop role role_wgo_tgt; +use db_v1; +create sql security invoker view v_alter_sec as select * from t1; +show create view v_alter_sec; +➤ View[12,-1,0] Create View[12,-1,0] character_set_client[12,-1,0] collation_connection[12,-1,0] 𝄀 +v_alter_sec create sql security invoker view v_alter_sec as select * from t1; utf8mb4 utf8mb4_general_ci +drop view v_alter_sec; +use db_v1; +create sql security invoker view v_body_trick as select 'sql security definer' as note from t1; +show create view v_body_trick; +➤ View[12,-1,0] Create View[12,-1,0] character_set_client[12,-1,0] collation_connection[12,-1,0] 𝄀 +v_body_trick create sql security invoker view v_body_trick as select 'sql security definer' as note from t1; utf8mb4 utf8mb4_general_ci +drop view v_body_trick; +drop user user_v1; +drop user user_no_db; +drop user user_invoker; +drop role role_v1; +drop role role_no_db; +drop role role_invoker; +drop database db_v1; +set global enable_privilege_cache = on; diff --git a/test/distributed/cases/zz_accesscontrol/grant_view.sql b/test/distributed/cases/zz_accesscontrol/grant_view.sql new file mode 100644 index 0000000000000..e9b8c7cef5e6e --- /dev/null +++ b/test/distributed/cases/zz_accesscontrol/grant_view.sql @@ -0,0 +1,220 @@ +set global enable_privilege_cache = off; + +-- cleanup +drop user if exists user_v1, user_no_db, user_invoker; +drop role if exists role_v1, role_no_db, role_invoker; +drop database if exists db_v1; + +-- setup +create role role_v1; +create user user_v1 identified by '111' default role role_v1; +grant role_v1 to user_v1; + +create database db_v1; +use db_v1; +create table t1 (a int, b varchar(20)); +insert into t1 values (1, 'base'); +create view v1 as select * from t1; +create view v_on_v as select * from v1; + +grant select on view db_v1.v1 to role_v1; +grant connect on account * to role_v1; + +-- @session:id=1&user=user_v1&password=111 +select current_role(); +use db_v1; +select * from v1; +-- @session + +create role role_no_db; +create user user_no_db identified by '111' default role role_no_db; +grant role_no_db to user_no_db; +grant select on view db_v1.v1 to role_no_db; + +-- @session:id=2&user=user_no_db&password=111 +use db_v1; +select * from db_v1.v1; +-- @session + +grant select on view db_v1.v_on_v to role_v1; + +-- @session:id=1&user=user_v1&password=111 +use db_v1; +select * from v_on_v; +-- @session + +use db_v1; +set view_security_type = 'INVOKER'; +create view v_invoker as select * from t1; +set view_security_type = 'DEFINER'; + +-- verify SHOW CREATE VIEW shows SQL SECURITY INVOKER even though DDL didn't have it +show create view v_invoker; + +create role role_invoker; +create user user_invoker identified by '111' default role role_invoker; +grant role_invoker to user_invoker; +grant connect on account * to role_invoker; +grant select on view db_v1.v_invoker to role_invoker; + +-- @session:id=3&user=user_invoker&password=111 +use db_v1; +select * from v_invoker; +-- @session + +grant select on table db_v1.t1 to role_invoker; + +-- @session:id=3&user=user_invoker&password=111 +use db_v1; +select * from v_invoker; +-- @session + +grant all on view db_v1.v1 to role_v1; +show grants for role_v1; + +revoke all on view db_v1.v1 from role_v1; +grant select on view db_v1.v1 to role_v1; +revoke select on view db_v1.v1 from role_v1; + +-- @session:id=1&user=user_v1&password=111 +use db_v1; +select * from v1; +-- @session + +-- ============================================================ +-- Regression: base table ALL/OWNERSHIP must NOT bypass view +-- ============================================================ +drop role if exists role_bypass; +drop user if exists user_bypass; +create role role_bypass; +create user user_bypass identified by '111' default role role_bypass; +grant role_bypass to user_bypass; +grant connect on account * to role_bypass; +-- grant ALL on the base table, but nothing on the view +grant all on table db_v1.t1 to role_bypass; + +-- @session:id=4&user=user_bypass&password=111 +use db_v1; +-- should fail: no view privilege, even though base table has ALL +select * from v1; +-- @session + +-- also test OWNERSHIP: grant ownership on base table +grant ownership on table db_v1.t1 to role_bypass; + +-- @session:id=4&user=user_bypass&password=111 +use db_v1; +-- should still fail: ownership on base table doesn't grant view access +select * from v1; +-- @session + +drop user user_bypass; +drop role role_bypass; + +-- ============================================================ +-- Regression: DEFINER view with role inheritance +-- ============================================================ +drop role if exists role_parent, role_child; +drop user if exists user_definer_inh, user_definer_reader; +create role role_parent; +create role role_child; +grant role_parent to role_child; +-- base table privilege on parent role (role_child inherits this) +grant select on table db_v1.t1 to role_parent; + +create user user_definer_inh identified by '111' default role role_child; +grant role_child to user_definer_inh; +grant connect on account * to role_child; +-- let role_child create views in db_v1 +grant create view on database db_v1 to role_child; +grant show tables on database db_v1 to role_child; + +-- user_definer_inh creates the DEFINER view, so definer = role_child +-- role_child itself has SELECT on t1 via inheriting role_parent +-- @session:id=5&user=user_definer_inh&password=111 +use db_v1; +create sql security definer view v_definer_inh as select * from t1; +-- @session + +-- now a separate user with only view privilege should succeed, +-- because the definer (role_child) has SELECT on t1 via role_parent inheritance +create role role_reader; +create user user_definer_reader identified by '111' default role role_reader; +grant role_reader to user_definer_reader; +grant connect on account * to role_reader; +grant select on view db_v1.v_definer_inh to role_reader; + +-- @session:id=7&user=user_definer_reader&password=111 +use db_v1; +select * from v_definer_inh; +-- @session + +drop user user_definer_inh; +drop user user_definer_reader; +drop role role_parent; +drop role role_child; +drop role role_reader; +drop view db_v1.v_definer_inh; + +-- ============================================================ +-- Regression: WGO object-level check +-- ============================================================ +drop role if exists role_wgo_src, role_wgo_tgt; +drop user if exists user_wgo; +create role role_wgo_src; +create role role_wgo_tgt; +create user user_wgo identified by '111' default role role_wgo_src; +grant role_wgo_src to user_wgo; +grant connect on account * to role_wgo_src; + +-- give WGO on v1 only +grant select on view db_v1.v1 to role_wgo_src with grant option; + +-- user_wgo should be able to grant on v1 +-- @session:id=6&user=user_wgo&password=111 +grant select on view db_v1.v1 to role_wgo_tgt; +-- @session + +-- but should NOT be able to grant on v_on_v (no WGO on that object) +-- @session:id=6&user=user_wgo&password=111 +grant select on view db_v1.v_on_v to role_wgo_tgt; +-- @session + +drop user user_wgo; +drop role role_wgo_src; +drop role role_wgo_tgt; + +-- ============================================================ +-- Regression: ALTER VIEW preserves SecurityType +-- ============================================================ +use db_v1; +-- Use explicit DDL syntax so SQL SECURITY appears in the stored Stmt +create sql security invoker view v_alter_sec as select * from t1; + +-- verify SHOW CREATE VIEW preserves SQL SECURITY from DDL +show create view v_alter_sec; + +drop view v_alter_sec; + +-- ============================================================ +-- Regression: SHOW CREATE VIEW with SQL SECURITY in view body +-- should not confuse the output (body is just data, not DDL) +-- ============================================================ +use db_v1; +create sql security invoker view v_body_trick as select 'sql security definer' as note from t1; + +-- The header should still get SQL SECURITY INVOKER spliced in, +-- even though the view body contains the text 'sql security' +show create view v_body_trick; + +drop view v_body_trick; + +-- cleanup +drop user user_v1; +drop user user_no_db; +drop user user_invoker; +drop role role_v1; +drop role role_no_db; +drop role role_invoker; +drop database db_v1; +set global enable_privilege_cache = on; diff --git a/test/distributed/cases/zz_accesscontrol/revoke_privs_role.result b/test/distributed/cases/zz_accesscontrol/revoke_privs_role.result index 74da045ff4f45..3d6d12b843186 100644 --- a/test/distributed/cases/zz_accesscontrol/revoke_privs_role.result +++ b/test/distributed/cases/zz_accesscontrol/revoke_privs_role.result @@ -49,9 +49,9 @@ internal error: do not have privilege to execute the statement drop table revoke_db_01.revoke_table_1; internal error: do not have privilege to execute the statement revoke create table,select,insert on database * from revoke_role_2,revoke_role_3; -internal error: the privilege "select" can only be granted to the object type "table" +internal error: the privilege "select" can only be granted to the object type "table" or "view" revoke if exists create table,select,insert on database * from revoke_role_2,revoke_role_3; -internal error: the privilege "select" can only be granted to the object type "table" +internal error: the privilege "select" can only be granted to the object type "table" or "view" revoke all on account * from revoke_role_2,revoke_role_3; revoke if exists all on account * from revoke_role_2,revoke_role_3; grant all on table *.* to revoke_role_4,revoke_role_5 with grant option;