From a742213f7660bd93ed33734db139ba9fd5ec6a75 Mon Sep 17 00:00:00 2001 From: DThielke Date: Wed, 18 Jan 2012 12:17:29 -0500 Subject: [PATCH] Updated Starburst logic. --- lib/Starburst.jar | Bin 34871 -> 35710 bytes .../plugins/Permission_Starburst.java | 496 ++++++++---------- 2 files changed, 228 insertions(+), 268 deletions(-) mode change 100644 => 100755 lib/Starburst.jar mode change 100644 => 100755 src/net/milkbowl/vault/permission/plugins/Permission_Starburst.java diff --git a/lib/Starburst.jar b/lib/Starburst.jar old mode 100644 new mode 100755 index 8905ca123eb5e6e9382605813f4d9baa4b4d3970..1abe9e4a0385f3b0c50d9d0f9886b03b2c71e0fc GIT binary patch literal 35710 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 J@&EDH{{wPQ;&T81 literal 34871 zcma&N18^?wvNjyswy|Q{wr$%sR=i@{wr$(ClNCEzasKRozx#Y=zo))$pQ&f+shaAZ zyJxQMp4Kfd1q=cO00031kl#+r5Afd(NB|H384+ax8VOlZy3cU{0QtX2Apr8eN!_n$ zlytwzEx%8c@AJP%Wdvj;L`9U8X=Oz3WhN)2rD$m9V5Mj%rzd9`6zLb4c8?qPNogJ;-PI{B6>v0ju`#iAc9L^(mNON!bFnpc5^*;& zv3Itxv!yk%HgIyvQna!{7C_-i7|e2Qc#2zpHgB@pV3vTUeU>2#00SjVg^$a9STJ_O zDp|{-$ynQ;QIz-g{{-+$ba!je#4iHTX!W{I^P0|bO0(PH^8>X6ZR}{W>graitf6)*fFTRqNW4+@k5aoXppW zLgtzN>vI#GTx2+l&H|p)!pCXVn&r&tG~S@a{scK?$LLeA&=pRElEAv$V;O|XZg~FM zW7$lrn8QBWt8D{=4P&J-2px*&#iQ8BJR44R;Ku6lszYr=NFe1C4t2k2>z|!t%;jmY zkC3a$IzY{CG(?RaL2NE1%v9l1hu`qfOp)8bm{CD_*e#zXI8UEXn;dFxA2_yN;vIVr zhJYc8&8Xv&iE4ZDozhFt>OlY*Z!D@W0rL}gedLLlVE76z{!(w?*9Kiv8d4}J^2MVH z7(OhOs7jrkV5ePykH;yQNrAGo2a{M(n3{UqO`pL3vXp=7 z$3x{3OVqc1v;zSEQ2Yn|5c;Q5|5Fo!V>e{``4K|Qj^u}s@#Jqo3=MaO$+kUBK!|^Z z2|Nf^Co?VvUnVzd5!W0C!|w`}El>(V{E}(!xW8s=_?jH~y}<>LDbVMi3FrYFje(&J zbyYA!phVqd>-ip>5l^+zxsoma#1S|I_nJ%&rr8?aXIjS$t=S0w zLfl#Y^w{1Xgxo6W*rjWdfG@)~mn>CwF#A1lvrSQ52q}P$9 zDc8xLVAiS})v29i%)$|u^GiHU=DW?wl3^!y1Lhl!*MT*gQdGXSIMo6lJeo9CSNl2?InUd;(VR85H(WzJx{512e0GstcCyhet&7d#_Df=Jv zg6#eScK?oP3Ux;S`!}YX-Q^I6*jb%Yih(%eyT;A;D<2MCNRgP2(C9QnE zoZ19{l65$micmT1xM@iTkk`U*a1@&=RcEs#*Gm`l)6jIo{19TpAF4hB?Im22iB+;K zEdh1V6=x2hTzV}w2FqZ@uCO>(5#*ljFR=fPLzU1E37>Bq#Qqn)_b=O0G%>Sqa&|Ou zB>C%tjDfR}`9CeLNKr>hPym6aVwtAHq|C=p<3*oL=Y%FQEQp{s0EWU-vnHZyJ4Suw zQw<*JVHW;GOr$|AFHBbw&D7LvCXI>d;%(#{+aLHa9%Epi1WBFIbgjQUm<3GhSMr7B zP!kL=^f^qLn7mBi-N$B zABBdgIIrW7PhN0-c-os~2A{*ofxtwW1!*9fz;KK)!6Uc)o@!O=N4oB}>9q2)+1 zg=J~+>|`0GnOM2G%V-3LyRv;~b%&Z5^}0o|caHq&co}4zRich4i3@BnFlNsg zAO&M%brj4zjI5W^aiCl2EDY*O{Q!B$J4_Njz<);;l2U0Z@*7!_Z)8RPcNX?Pkp0(% z|MPJzirz>VzFibJfbvX{*kL>5Hd$><_C|FFBk zH7t>G!J&+_wY9A4oVBf#l@c=mFZBt6s24;S!WtQY3{YSxuw+oj=p9?B8r3#Zu_aVc zpoF91&V**FF6_7bbrSMTbozZKAZ!!3OU+gJ!{*Uy(W+#qOZN@hF0X2gVlT)1Su?{u zXolSO3Guhc{*aoPBKX9TexaWg`)+$b8+}XcbfF6+eWO6?O^)U~7ONHQNh@eiIef(0 zR~Y3zamke`mk?9K*HWAdI1LDdj=X@5%YG}!JDQXTd7rq)UhzWoy~2y*@hROF^yVQK zEt$PWxIUVb4c8j>_tySGG?tF+XRf8Rf6(*s{raRr7e{++viS;*Qu$P}__UFbKIi2~ zU#@!McALnqNgly4%Q;Gl0IBg<@eHbMZWmYI&>^YHqE&>?lp`2%O)gt6rXOkasGc^0 z0+qI3_N*BpG4B*1sZ3VEmg$y~3g20{jjndA{Sl|D{L$ z7rc&t8LtMUyYdq1ryV1co#`C`0*1c-XsxL@BM7iC1V-{`yd;t(Lgebc(Oo=u>SSaC z!Q8rK1oU$Aa(iv7Kt-93GPUfWaxd-rx=&NpaSU0U1F(0(l!^pIWds3jOA;4JKi?NOa zG$!r0i8#2<`xY-7#Q1u&{E*pk^`V>U{sVW9VaPM%X*KM(Di+sP^LHyO+`ot2x#`rp z^Y$`qQ4T!X?gB#W+V&FY8g6aax&yB*pR=)dM&J(*La}@c_eLCV$rb;UVCgz9^yQ%L z{(cU2ek6Ty*BGEHdZxniJrX7Ly&Sf?DG%9cXMnHayyZIGzGitBuze9LdrSB3yc*8A zF@xP;ejk$2`#KB3w`0F$qxf`tc@Fh{SCajbivFbe_>A%XsPXQk(D9VQyMS$b<%6|@ zK52@Jh9llov?B?)^sa&qol>_M4I7zi?Jb==BQ?!Hl^cu zhon+guoFgyYE7?fu8k8PmIiG2I?I2s8ii<4VJ0M-wFJ5QU|NA(wIrq~ewc#FfE|mLF}1F$qZmxfUy92` z)HEBUe#uU2ba2ZyUe;*qm&u}0VVZoFsRbHT(2?UJ7l*zEpLb@EbO}{R9 zk{(?oi$8nlCzs`5BwRvBnMPt&etiO#Eiq0s2_wg8uDMr`edJ7hWLgy=r-DMwaw((1 zfPMur;}2$$soW*YF=Es#Pokd;9}A^S>lu>SN}Jlsnho*;uvpu3_PEe+R5`u&N_p1H zPa!wad51F`YT*qKo#C3Z;=@OI_0x^bJZNp2*-1Y@9QntbiJ9joHHnu^$?BENC6m2% zei%1n<`wnjVqT|Ac~9}5%9OD*z;;6VSM0A>rW_HtzRmD-_zo|Wo`b9gs$i7fg z6Jf=KP$z?GMa0p&cR@x*4@=)|UWD>q!+ym&a*E->ULE#cG%v&%gC~%i4kr+L9&h8+ z^;;+bF@12bmR4k>HI&|>{A%Sk3;@;@E)JZ%M$;dC{MiI&@k!$o5~XAe05I;gJ?R|`uzsZ>X1 zU4Wy1ZMndHJpOEy8`#Adrr-)G=LRMa1EOphQpJY^j|c+4-rh zsVfYJEx{ULDU7wTY5DXY$K?fT%B5!PU+dyO1Q()@k1EvIs@2%s-~iWlFy~4sHGXRI zOj<;&0K9Y)d3$=85zTAqiM=@`&jYPlE;HSUW^m+|j9X@Ik)K1HSEA}|Bg!Cz7+i{a z%PdREx&WC#H?-uVBGubbc`<&R9~N5bLU{9`dtuk~11ec3lsd*?!rW3?Nq|Qs41J~r zHfs%(HZoTPXPony)Ld-Ixq6|JH<_D~OjVvr#koGWCV;wjbb7(%Z1_tK6U*bc~F zN+=d$_t$-h$88~@iT+X)^kJ-w!W0-!KHS%n)rSsD^@Kb+5i8>x5m=izOhs+A7QbBCwK1#Sj&yi}uWC@jtkx`h_N3~I z5drUsUO)7AiPjU3*6%>nqSTV`+nUrI+dy+knE0hxb`eg_HpJvId@!@spaMUYvI$PH z8{HKJahp<>=}}=KM8wq#M@9YRNNDP!&xl2j4ZwG4+%UY;kyE$KEL(=xqP&{@VOK3Y22{eFD*A zgB}!GByod9+r>naZ8$?`JgpfGU=$wZL?oj^Z-cp2Ypx<)Y+Q^LSi7b!Xf{=@*K0Hm^}x7HwGaYuah1~ne=ESOAn=BJU=dyGn*@fO zWT@xwl^5J$R;(bT1W6I3k)^SVho3I`6jBFMP)JwN@hKzU5@(#yMWPqY~?Tl)o-LG+6Xv!4~^OF}>?749Z+d>V@mKJBkWY-pHpB>GrHEnLeKH{7`oMjQh zA>g6WYBg_9l@z3NXzTv)4_ppoWYa?gh+tu65g~H)7|zW87wVH4eFsO+1%$TDR5QO4 z)bE<>{vf~#4XLC0=0bY0kWYCy(a=$jV5%0D)B(YlXdLf&l#I;Blj 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 z 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 diff --git a/src/net/milkbowl/vault/permission/plugins/Permission_Starburst.java b/src/net/milkbowl/vault/permission/plugins/Permission_Starburst.java old mode 100644 new mode 100755 index be43acf..01d5143 --- a/src/net/milkbowl/vault/permission/plugins/Permission_Starburst.java +++ b/src/net/milkbowl/vault/permission/plugins/Permission_Starburst.java @@ -1,12 +1,8 @@ package net.milkbowl.vault.permission.plugins; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - +import com.dthielke.starburst.*; import net.milkbowl.vault.Vault; import net.milkbowl.vault.permission.Permission; - import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.World; @@ -19,17 +15,37 @@ import org.bukkit.event.server.ServerListener; import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; -import com.dthielke.starburst.Group; -import com.dthielke.starburst.GroupSet; -import com.dthielke.starburst.StarburstPlugin; -import com.dthielke.starburst.User; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; public class Permission_Starburst extends Permission { - private StarburstPlugin perms; private String name = "Starburst"; private PermissionServerListener permissionServerListener; + private class PermissionServerListener extends ServerListener { + public void onPluginEnable(PluginEnableEvent event) { + if (perms == null) { + Plugin p = event.getPlugin(); + if (p.getDescription().getName().equals("bPermissions") && p.isEnabled()) { + perms = (StarburstPlugin) p; + log.info(String.format("[%s][Permission] %s hooked.", plugin.getDescription().getName(), name)); + } + } + } + + public void onPluginDisable(PluginDisableEvent event) { + if (perms != null) { + if (event.getPlugin().getDescription().getName().equals("bPermissions")) { + perms = null; + log.info(String.format("[%s][Permission] %s un-hooked.", plugin.getDescription().getName(), name)); + } + } + } + } + public Permission_Starburst(Vault plugin) { this.plugin = plugin; @@ -47,264 +63,6 @@ public class Permission_Starburst extends Permission { } } } - private class PermissionServerListener extends ServerListener { - public void onPluginEnable(PluginEnableEvent event) { - if (perms == null) { - Plugin p = event.getPlugin(); - if(p.getDescription().getName().equals("bPermissions") && p.isEnabled()) { - perms = (StarburstPlugin) p; - log.info(String.format("[%s][Permission] %s hooked.", plugin.getDescription().getName(), name)); - } - } - } - - public void onPluginDisable(PluginDisableEvent event) { - if (perms != null) { - if (event.getPlugin().getDescription().getName().equals("bPermissions")) { - perms = null; - log.info(String.format("[%s][Permission] %s un-hooked.", plugin.getDescription().getName(), name)); - } - } - } - } - - - @Override - public String getName() { - return name; - } - - @Override - public boolean isEnabled() { - return perms != null && perms.isEnabled(); - } - - @Override - public boolean hasSuperPermsCompat() { - return true; - } - - @Override - public boolean playerHas(String world, String player, String permission) { - OfflinePlayer op = Bukkit.getOfflinePlayer(player); - if (op == null) { - return false; - } - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - Group g = set.getUser(op); - if (g == null) { - return false; - } - Map effective = g.aggregatePermissions(); - return effective.containsKey(permission.toLowerCase()) ? effective.get(permission.toLowerCase()) : false; - } - - @Override - public boolean playerAdd(String world, String player, String permission) { - OfflinePlayer op = Bukkit.getOfflinePlayer(player); - if (op == null) { - return false; - } - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - Group g = set.getUser(op); - if (g == null) { - return false; - } - g.addPermission(permission, true, true, op.isOnline()); - return true; - } - - @Override - public boolean playerRemove(String world, String player, String permission) { - OfflinePlayer op = Bukkit.getOfflinePlayer(player); - if (op == null) { - return false; - } - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - Group g = set.getUser(op); - if (g == null) { - return false; - } - g.removePermission(permission, op.isOnline()); - return true; - } - - @Override - public boolean groupHas(String world, String group, String permission) { - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - Group g = set.getGroup(group); - if (g == null) { - return false; - } - Map effective = g.aggregatePermissions(); - return effective.containsKey(permission.toLowerCase()) ? effective.get(permission.toLowerCase()) : false; - } - - @Override - public boolean groupAdd(String world, String group, String permission) { - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - Group g = set.getGroup(group); - if (g == null) { - return false; - } - g.addPermission(permission, true, true, true); - return true; - } - - @Override - public boolean groupRemove(String world, String group, String permission) { - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - Group g = set.getGroup(group); - if (g == null) { - return false; - } - g.removePermission(permission, true); - return true; - } - - @Override - public boolean playerInGroup(String world, String player, String group) { - Player p = Bukkit.getServer().getPlayer(player); - if (p != null) { - return p.hasPermission("group." + group); - } - - OfflinePlayer op = Bukkit.getOfflinePlayer(player); - if (op == null) { - return false; - } - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - User u = set.getUser(op); - Group g = set.getGroup(group); - if (u == null || g == null) { - return false; - } - return u.getChildren().contains(g); - } - - @Override - public boolean playerAddGroup(String world, String player, String group) { - OfflinePlayer op = Bukkit.getOfflinePlayer(player); - if (op == null) { - return false; - } - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - User u = set.getUser(op); - Group g = set.getGroup(group); - if (u == null || g == null) { - return false; - } - u.addChild(g, op.isOnline()); - return true; - } - - @Override - public boolean playerRemoveGroup(String world, String player, String group) { - OfflinePlayer op = Bukkit.getOfflinePlayer(player); - if (op == null) { - return false; - } - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - User u = set.getUser(op); - Group g = set.getGroup(group); - if (u == null || g == null) { - return false; - } - u.removeChild(g, op.isOnline()); - return true; - } - - @Override - public String[] getPlayerGroups(String world, String player) { - Player p = Bukkit.getServer().getPlayer(player); - if (p == null) - throw new UnsupportedOperationException(getName() + " does not support offline player resolution."); - - List groups = new ArrayList(); - for (PermissionAttachmentInfo pai : p.getEffectivePermissions()) { - if (!pai.getPermission().startsWith("group.") || !pai.getValue()) - continue; - groups.add(pai.getPermission().substring(6)); - } - return groups.toArray(new String[0]); - } - - @Override - public String getPrimaryGroup(String world, String player) { - OfflinePlayer op = Bukkit.getOfflinePlayer(player); - if (op == null) { - return null; - } - GroupSet set; - World w = Bukkit.getWorld(world); - if (w != null) { - set = perms.getGroupManager().getDefaultGroupSet(); - } else { - set = perms.getGroupManager().getWorldSet(w); - } - User u = set.getUser(op); - if (u == null) { - return null; - } - if (u.getChildren().isEmpty()) { - return null; - } - return u.getChildren().toArray(new Group[] {})[0].getName(); - } @Override public String[] getGroups() { @@ -316,4 +74,206 @@ public class Permission_Starburst extends Permission { } return s; } + + @Override + public String getName() { + return name; + } + + @Override + public String[] getPlayerGroups(String world, String player) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + User user = set.getUser(op); + + Set children = user.getChildren(true); + List groups = new ArrayList(); + for (Group child : children) { + groups.add(child.getName()); + } + return groups.toArray(new String[groups.size()]); + } + + @Override + public String getPrimaryGroup(String world, String player) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + User user = set.getUser(op); + + Set children = user.getChildren(false); + if (!children.isEmpty()) { + return children.iterator().next().getName(); + } else { + return null; + } + } + + @Override + public boolean groupAdd(String world, String group, String permission) { + GroupManager gm = perms.getGroupManager(); + GroupSet set = gm.getWorldSet(Bukkit.getWorld(world)); + if (set.hasGroup(group)) { + Group g = set.getGroup(group); + + boolean value = !permission.startsWith("^"); + permission = value ? permission : permission.substring(1); + g.addPermission(permission, value, true, true); + + for (User user : gm.getAffectedUsers(g)) { + user.applyPermissions(gm.getFactory()); + } + return true; + } else { + return false; + } + } + + @Override + public boolean groupHas(String world, String group, String permission) { + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + if (set.hasGroup(group)) { + Group g = set.getGroup(group); + return g.hasPermission(permission, true); + } else { + return false; + } + } + + @Override + public boolean groupRemove(String world, String group, String permission) { + GroupManager gm = perms.getGroupManager(); + GroupSet set = gm.getWorldSet(Bukkit.getWorld(world)); + if (set.hasGroup(group)) { + Group g = set.getGroup(group); + + boolean value = !permission.startsWith("^"); + permission = value ? permission : permission.substring(1); + + if (g.hasPermission(permission, false)) { + g.removePermission(permission, true); + + for (User user : gm.getAffectedUsers(g)) { + user.applyPermissions(gm.getFactory()); + } + return true; + } else { + return false; + } + } else { + return false; + } + } + + @Override + public boolean hasSuperPermsCompat() { + return true; + } + + @Override + public boolean isEnabled() { + return perms != null && perms.isEnabled(); + } + + @Override + public boolean playerAdd(String world, String player, String permission) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + User user = set.getUser(op); + + boolean value = !permission.startsWith("^"); + permission = value ? permission : permission.substring(1); + user.addPermission(permission, value, true, true); + + if (user.isActive()) { + user.applyPermissions(perms.getGroupManager().getFactory()); + } + return true; + } + + @Override + public boolean playerAddGroup(String world, String player, String group) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + User user = set.getUser(op); + + if (set.hasGroup(group)) { + Group g = set.getGroup(group); + if (!user.hasChild(g, false)) { + user.addChild(g, true); + + if (user.isActive()) { + user.applyPermissions(perms.getGroupManager().getFactory()); + } + return true; + } else { + return false; + } + } else { + return false; + } + } + + @Override + public boolean playerHas(String world, String player, String permission) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + Group user = set.getUser(op); + return user.hasPermission(permission, true); + } + + @Override + public boolean playerInGroup(String world, String player, String group) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + User user = set.getUser(op); + + if (set.hasGroup(group)) { + Group g = set.getGroup(group); + return user.hasChild(g, true); + } else { + return false; + } + } + + @Override + public boolean playerRemove(String world, String player, String permission) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + User user = set.getUser(op); + + boolean value = !permission.startsWith("^"); + permission = value ? permission : permission.substring(1); + if (user.hasPermission(permission, false)) { + user.removePermission(permission, true); + if (user.isActive()) { + user.applyPermissions(perms.getGroupManager().getFactory()); + } + return true; + } else { + return false; + } + } + + @Override + public boolean playerRemoveGroup(String world, String player, String group) { + OfflinePlayer op = Bukkit.getOfflinePlayer(player); + GroupSet set = perms.getGroupManager().getWorldSet(Bukkit.getWorld(world)); + User user = set.getUser(op); + + if (set.hasGroup(group)) { + Group g = set.getGroup(group); + if (user.hasChild(g, false)) { + user.removeChild(g, true); + + if (user.isActive()) { + user.applyPermissions(perms.getGroupManager().getFactory()); + } + return true; + } else { + return false; + } + } else { + return false; + } + } }