From 2505a2c85fc2a20747b17c3456fedf1be221e57f Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action msg_contents (InspectorCaracal)
[Fix][pull3472]: The new filter_visible didn’t exclude oneself by default
(InspectorCaracal)
Fix: find #dbref results didn’t include the results of
+.get_extra_display_name_info (the #dbref display by default) (Griatch)
Fix: Add DefaultAccount.get_extra_display_name_info method for API
+compliance with DefaultObject in commands. (Griatch)
Fix: Show XYZRoom subclass when repr() it. (Griatch)
Fix: Typo in sethome message (chiizujin)
get_extra_display_name_info(looker, **kwargs)[source]¶Used in .get_display_name() to provide extra information to the looker. We split this +to be consistent with the Object version of this method.
+This is used e.g. by the find command by default.
+get_display_name(looker, **kwargs)[source]¶search_index_entry = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶search_index_entry = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶
search_index_entry = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶search_index_entry = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
aliases = ['@parent', '@update', '@type', '@typeclasses', '@swap']¶aliases = ['@type', '@swap', '@parent', '@typeclasses', '@update']¶
search_index_entry = {'aliases': '@parent @update @type @typeclasses @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent update type typeclasses swap', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶search_index_entry = {'aliases': '@type @swap @parent @typeclasses @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type swap parent typeclasses update', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
search_index_entry = {'aliases': '@search @locate', 'category': 'building', 'key': '@find', 'no_prefix': 'find search locate', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶search_index_entry = {'aliases': '@locate @search', 'category': 'building', 'key': '@find', 'no_prefix': 'find locate search', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶
search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpznkzt_9t/9cec25419659c3c1713e93b8dc0b7245d6ab5685/evennia/contrib/tutorials/red_button/red_button.py'>¶
search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callbacks callback calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶search_index_entry = {'aliases': '@calls @callbacks @callback', 'category': 'building', 'key': '@call', 'no_prefix': 'call calls callbacks callback', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delaliaschan delchanalias', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delchanalias delaliaschan', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
search_index_entry = {'aliases': 'quit q chicken out abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit q chicken out abort', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶search_index_entry = {'aliases': 'abort chicken out q quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort chicken out q quit', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
search_index_entry = {'aliases': 'shout whisper ;', 'category': 'general', 'key': 'say', 'no_prefix': ' shout whisper ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶search_index_entry = {'aliases': 'shout ; whisper', 'category': 'general', 'key': 'say', 'no_prefix': ' shout ; whisper', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
search_index_entry = {'aliases': 'e ex unfocus examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e ex unfocus examine', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶search_index_entry = {'aliases': 'unfocus examine e ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus examine e ex', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
search_index_entry = {'aliases': 'i inv give inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i inv give inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'inventory i give inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory i give inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
search_index_entry = {'aliases': 'fly dive', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' fly dive', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶search_index_entry = {'aliases': 'dive fly', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' dive fly', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
aliases = ['press button', 'push', 'press']¶
search_index_entry = {'aliases': 'press button push press', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button push press', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
aliases = ['smash', 'smash lid', 'break lid']¶
search_index_entry = {'aliases': 'smash smash lid break lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash smash lid break lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
aliases = ['press button', 'push', 'press']¶
search_index_entry = {'aliases': 'press button push press', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button push press', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
aliases = ['listen', 'ex', 'get', 'l', 'examine', 'feel']¶
search_index_entry = {'aliases': 'listen ex get l examine feel', 'category': 'general', 'key': 'look', 'no_prefix': ' listen ex get l examine feel', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}¶
search_index_entry = {'aliases': 'move shiftroot push pull', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move shiftroot push pull', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶search_index_entry = {'aliases': 'move shiftroot pull push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move shiftroot pull push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
aliases = ['button', 'push button', 'press button']¶aliases = ['press button', 'push button', 'button']¶
search_index_entry = {'aliases': 'button push button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' button push button press button', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button push button button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['kill', 'stab', 'chop', 'slash', 'defend', 'thrust', 'pierce', 'hit', 'fight', 'bash', 'parry']¶aliases = ['fight', 'chop', 'defend', 'stab', 'bash', 'thrust', 'kill', 'hit', 'pierce', 'parry', 'slash']¶
search_index_entry = {'aliases': 'kill stab chop slash defend thrust pierce hit fight bash parry', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' kill stab chop slash defend thrust pierce hit fight bash parry', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶search_index_entry = {'aliases': 'fight chop defend stab bash thrust kill hit pierce parry slash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' fight chop defend stab bash thrust kill hit pierce parry slash', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
search_index_entry = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶search_index_entry = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶
aliases = ['fiddle', 'feel around', 'l', 'search', 'feel']¶aliases = ['feel around', 'search', 'l', 'fiddle', 'feel']¶
search_index_entry = {'aliases': 'fiddle feel around l search feel', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' fiddle feel around l search feel', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶search_index_entry = {'aliases': 'feel around search l fiddle feel', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel around search l fiddle feel', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
directory = '/tmp/tmphacnr425/201ffc0da57815d600cc61a2cd6f45dd026c96c3/evennia'¶directory = '/tmp/tmpznkzt_9t/9cec25419659c3c1713e93b8dc0b7245d6ab5685/evennia'¶
directory = '/tmp/tmphacnr425/201ffc0da57815d600cc61a2cd6f45dd026c96c3/evennia/game_template'¶directory = '/tmp/tmpznkzt_9t/9cec25419659c3c1713e93b8dc0b7245d6ab5685/evennia/game_template'¶
aliases = [':u', ':h', ':r', ':j', ':<', ':wq', ':DD', ':::', ':dd', ':f', ':p', ':fd', ':i', ':dw', ':y', ':s', ':q', ':q!', ':fi', ':>', ':UU', ':A', ':!', ':', ':I', ':S', ':=', ':w', ':uu', ':echo', '::', ':x']¶aliases = [':s', ':dw', ':DD', ':I', ':<', ':=', ':q', ':r', ':echo', ':x', ':uu', ':::', ':h', ':y', ':u', ':A', ':wq', ':fi', ':fd', ':', ':q!', ':UU', ':f', ':i', ':S', ':>', ':w', ':dd', ':p', ':!', ':j', '::']¶
search_index_entry = {'aliases': ':u :h :r :j :< :wq :DD ::: :dd :f :p :fd :i :dw :y :s :q :q! :fi :> :UU :A :! : :I :S := :w :uu :echo :: :x', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :u :h :r :j :< :wq :DD ::: :dd :f :p :fd :i :dw :y :s :q :q! :fi :> :UU :A :! : :I :S := :w :uu :echo :: :x', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':s :dw :DD :I :< := :q :r :echo :x :uu ::: :h :y :u :A :wq :fi :fd : :q! :UU :f :i :S :> :w :dd :p :! :j ::', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :s :dw :DD :I :< := :q :r :echo :x :uu ::: :h :y :u :A :wq :fi :fd : :q! :UU :f :i :S :> :w :dd :p :! :j ::', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['__nomatch_command', 'yes', 'n', 'abort', 'a', 'y', 'no']¶
search_index_entry = {'aliases': '__nomatch_command yes n abort a y no', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' __nomatch_command yes n abort a y no', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['previous', 'e', 't', 'quit', 'abort', 'top', 'next', 'p', 'n', 'q', 'a', 'end']¶aliases = ['previous', 'top', 'e', 'p', 'next', 'end', 't', 'q', 'n', 'abort', 'a', 'quit']¶
search_index_entry = {'aliases': 'previous e t quit abort top next p n q a end', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' previous e t quit abort top next p n q a end', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'previous top e p next end t q n abort a quit', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' previous top e p next end t q n abort a quit', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
f&(~2@i}U*-oyKTpeAVqEr9Mj> zj}3iqhvDNpOihd)aU`PhC3zczE|Cz=#A|EKWf3yt8b^pLEGGpvB@O0I1)_}D2}oOlaCNC zX1f>O5eXcG68rVz=vpjbe@GfJ8tQkMCIj(Sj=nim$Z{W(S8sRpSz&E{fu<2Ox*_)E zfZ5lOAkLtUBn;)1J(@6V!sM0&9qicOe3x)z9OP&yH~beGzA@+gL8sjBJA1R!{~~AN z7aB9@EG3dOVKjy1rv8pZfxYhX7rJ{o&ylF@%D%y?g|%%a&JIB4GA*K@;#NW1;vfgL zy;C(}Wfh`La9SU+Jw_-UqwdbAYUi6ijaa;35g1;e1`98 GGgUDC4uT>D?H)D=sg z!73RfTDU_OjVS^c@YkJv|CI|7?kaWgmsMq~ML6a!ch&b3n(mvFEP2|3(HmE}X$}T2 z{5xJUi)_4h#8&_ja+5sr1XK=JJ7TxFJ=PXPGgL7o4u2XpYbL>8+!dG@vWR1xUrs|T zl|mk-%>^?SD4}!(ToR@wEOrube~|atb)eSmV$4P_s|IIngOl6 $#|5 zu6*R-Mn1ueR@DXC`Rd`GeI~>^Z&Cc^mo(fs$Vwu2|LOo@g(im5fnz;O5Og%HAr$w$ zpdWvJcgaJXs+;tdFIK%MElS;#rViv@@967bx<5KlP=TL21sAVV1zm3t7MJrn@hy!d z3twzL%q9K#AUq9JM*K##?m?)*d0`nAn)fh=|IOa7H7RWVAp%vKL%7&!aeQ~Q 9wtG#1LmU0IXv}F)sxD3SavwWLm8&ocIza0Hl9;7)0&X2S^%wLBrT;D z#jE-Ny3H!;N>T`oO1}gqR5K4i`ujY>)V7!FWH|t(1MBaR_K;-8S^#m(d=E1cp>a3l zTKbOus;y=0ur &TCShDPI -3xgWO&}k=?lVGwc32 z@16xh^eBTN`xL=pJW9axoI(F@7y2UryM}!%YJ%er3X)2F1J@*2=n-`UN@fw4RzO_R zoiooG6qB-)a#gR*qmw#bfpg`P5ttg?06?--BNR@$29hYchg#2hAhH*k69pef3v(RC zEsBKYthv8v{v2$iP&GJiIP!m2c#K3y*yUJrlz^ @Lmt=DhigTZnt{CaMa*hwDJBp=`K~q47&3sv$@(DwtbDmWD28dY_=3ZRpH3U~6 z{cFoxmtR`dtd~GGz7tuE1m^(1lKT{??j)ZMBeBY96y2{&Ye~BD^5)fXA*=0Xle1cU zbX+Ii+}HXmgB@r&Rl_PiOQY_7@2e43QfAo%X-bYA+}->&k?sfVWnKP;)6Wg2i-sFu z)Q9@-6uK?R%!yqgBLB^2tGu<)9p2q@hT6D_PJEBhMTAIBft>P4pj86C*-UWM^HIa9 zo?-|@LOIWZ(umlhKbt>JJqhVS5;tT)B~MA b zRt@-Fn;OQH1)bkc*@Wh#@JLRMNvh)ad{jucUQ4l0z$^nMhzo#kFm(((qRX8GyOgN+ z0tt+RB%ArZONbeAkwCksUlr*yN+WH;?mmWa%z$-Z*Pt5qICc(2HC{8Mycy{fZQPq5 zQ`Q-}`hRce9X@};Jg3Zlprcx#$-I@Y 8^kl-z$N5)(?F4v+dhQ5ZESy{d*4mB z(f7wo$K+2gW~1i!8eC7)-u2J5TjmIshs?I_6MgCzDyBunTV+xDU{W<=P5p&WAX#bm zf5`#GH2S>dVM(SNJYY5D_3z}0`Je84;Lk+eHZiH)A`(FPJ^0>hR7eSGPYMRUfs}|( zXj@pm>Tp26jR)`jlJWZIi_DnvrUs7;3M|np?OW)g_gEn1GYqW{udqtCcdw~i%kXGS zRx|y5qGT_O_-pc;Wkli)MHmHdf(=i^^fgS}DGu>pL!9^*P#+cRKc^xx;HT$b2Jb6& ze;*`xQ4K)jx{L?TE-uzQ8GOHX|9;rc`|2T!>TcodH0>Vou+DY6&ieK6t&$^4UGv?2 z(`aQ5>@|h2@%G(EN%G)qu|wz?4|-Q}7`P?HjBce_^2PKwuiFHhY~67vi}w#vHQ?0v z%g|(bSn-TL2CBx7(TRLVB(%~Oy`t;l-gro7whe%)_ww=Fbx?t*M6B{awz5};zSs#; z{|pN(VX0lizxlAgve+x=dM0_4S1I9bqG(lXlcfmv^Z$Ox?f%_`$NY0`vmbD4(|->f zR*URF>jrxbbByLVBokaa_=lIHikYFYA;;oE# yy9;FP_zk&qRCJZ~^n6d*tR3?fJ4`VMlsgK3cQK`y#Hj@PsV+ zJ1^1b)bBS1|BN9?2M4LeYhh!djD~T0&H^pe_77|m{^u0`!e_1h>FAExcDu$j8uU_% zCYTIHGU7u1kCe}Uq%Qw2sas{PKM}XuGh#Z7`H|<0S_0TjeM0^XdrdJlfb|P=$`*y8 zDG82qZ+n7Hapzojd*yr1I)+NyYuo6wwm^H#{|pDd{Iu+Q&A$A$)f${rgTu-`+0Gg0 zaK{2@oJ$cb+Mxt2#~`$Hxkx1H4xm;`>4**ldrJa=vAKmn$jlaZzyEv5R6Vr~#ZK!b zN@xW2S9vr(7I$STn2{Df;CFxfst-zFje7yPuI*q*s|HxywE zM~whi^eU)RN+L z|EGaCn%>3D7P9?}!vI}p;eF5ShV-duqelUevVaOdLdB|V=bn7Dn=wBd~WD*FoqRj*W zp;ov?& 6)D_gQ8agKm3BQ?{NRdVx0jif1Qv zI%))9j>{zLny^ZOeLHo`*Wiq=c@h;(n;QA=eE`qsD27-(O;=s_o%&TXY1al5o4zxt zhW?!?&8!3@iM;``!gG%q(^{TZB^4?Frf$Z`kG&fm->~8Jrs{=}h&9Fvw5PFbNm7J) zBNDJlXo&XJU_brcO|jC0|Mit5QC~&YIMKE 9)ig>3!F?9la<*Wy!7H^DPeS4)Cf z^;mmTnGscqNX)k8(H1V%22B$Y(}f+K~2pv?0la({XWOUSLyKK_rD5qucdJTc0La z{vQ9$q*mS8WydGrqs=trHFMt^Hu0OdvkUOOJ(mitNeu5x=dkfjO%f8W7_R!l+3AE} z+ryO8*hUy8x^6{-F9dRkR8fuG$ZG9nJNsMDKpbKb6G6{IKMX@?K4-=ZpaJ<76&yvp z$YGsPZY0iPhd#i>65F_Dkhuw|6!LiV+ 3>SL@_+XVF9 ziKq61n>$L^O_CIR@}whBU)>UdlCJtl30XTb!A=Kg+;ePBX(Yve`tP`*(I4d!$#lPL z)(`Af9f Xp5er|S74J8x zg+;p3bv9V#b9FYTXLFZdRGxnN5&-72YSg>mu!0RMwfj^}6HuQN{0F;=R jbYQ9R z*M;3WYaU;%%HT8B0V6tf*n- xTG{)MLU&6sY60@MQ<5z4Um zQ*x24xOn9Q5 VZI**!I--x933D!h#db$B3cboNlbGH~{jUNbLGENz6&f8g@(l6| z)EYzwiQ>Hl#p}#gxd70 kWUS>N#I%xu>2vV7o%y&u@K7EOH9gJ#$L zQi%e(XB#N-sfJP8-aq!a*4z`vGiU};a4;Kn{zaOk7b=3r|5 ME%-BFj cwE$}Bl{j1NHk>@+k&r~&BqRk}2O)%!d0N9 0K)BfL4p%g?E>k zdzARkl>tQCm=`;ELy#00oQY*96d_JA%R4bXiS(38&}bDa+4|8^v3-SD@|G`tCf(e9 zc78ieR@)r$JK EMt<6$4yMWtOAZ*~@t@FHcGjoOoQI|#ow*k1 zT@1$?vTV>mE;=?|oq~K!lBIpnp5B1xlk6UruX=s7I{pPkl^msGjR8_?SF4Qv?eg#y z1ORH9_nDx;NA4itRV=bZgLGHgFMa!OWa=rgDm=RCwEn*oS|g4)#RgkW=E|^rGB>#U z(Z2(W1a{6Ki0FbGAT@!(q2ibtfT%3yvyT^+ruZLqMkMQet pEXa5W`1; zJFW8uYa}UdoAW)yZRMsRg|``|%A2;n*JJBCA*BniA; navPoV;6WBJw$5L%EnCuU jQkS y_bwqIXLnLO%^Zyht;1WwMb2gQV{xX! UW3KeE^*lWIYnl zZX(bm*)->s)~b1c?(m-R{;5{NDr7hOAL=k)qj2&E~mfOXh7*yWf*z;+4@p*xG9!( zB^|$Sj{? NTaz>GgfAk5d}q~#%6EgNbr&^OXpAR|aM?49^J2o!A12kQo0DkP(% zuvC6!fAm^9 T@_5uI2^`)FL b^<<)1x=aL4}gwWJ7T$0HWtE{v&U zPhfwf4|y!X6F9ie1Uc$cdZtk|7X8dMgj@evz6^P1KLYp=BESM u)?jdeYy%%;F`DgAb{J__d- 7L!007M=e{Go_s4|e6)^J0N+h kuZZBK zvGSq(9h|9`Qe~Te6P20sb&Bfi;nXk3_S3A!_oDzWWu{H>G2KEl+Wa`WLV1>~e-{{B zH>xUNi2&jxZF8J|xEuauq&h(-wo-Xcsh4YVKeqxBXDto3bUOuSjs$q$Z!?ZxH+Um= zjvKQMA|-R#F-hK!a5peL8E72;;^;}2fHAZSzrCBG-S>5EUubJmLnBY$Q9k1Nmtwj6 zrcrzS9|pcp&U=U7b~Lv=teQ3zHZ6&Up)&t=j{_ioNA<--ZZ}@JZ H7>S;7KJDzvuvTSz1jJOM8$Y-LtE9M0%NoTPp?5oK8XxnrgNxXIudF- z@&-8GC@#03h|aCFJ&OjD3z&i=>k0tsQV-qf9B=rw+El3a&iReJHS^13@*HTqV4hy0 zT|AS;bp&Tkw*dq7eRK9}2*)4Wd!uHb>2yo}IUmpA6qHjuy&AM ?3%lrle)3Gn}GC}Qu@w+;U2^V1}dJB%H-!;qczdZgTObk z=vyqF+G+kGHRhYyaATlxzi*`&(|;v~i^~^|)vqC*;4c3Vn}r?kB*pM9>pin9#MiJs zfBbXvxR>~Q*0C)`4t;n}->rz4N2~3b!){H_2WsS<9o|WF j^0XbgM+`+mR4J96M)BL$A94b4F2{zRb4(q0nD?kfOK(>O%K1f&ve|Z zpwBYI=Jae8zba1$utGH|Fuj+L^IQ*DtAa^dwM*F+@NGH|*W7ud@3Aj~-8V`6$79If zRaMt^VWwzgc-=Hbyyr9l=x*-&+ L(qezE 0T3gl(^gX>CUMlNK~`LC`CCI>OqcQKGG=N7E}NOiy3f{?4=^hF_3?v&=-w-~ zi-r4Eww_=+IE@nd%#9fH*y-leT!wu^n!I5_Q <7W7P|vj$-oE@q*w3`NEkIWwM4@a_&^2wNr!tlcC?~aA*3*nmLS1 z%+hhYPk^g?WaLo06JVqz8)oDT`efm|5m=|dpoD^+hJF9b>AQ=3Iy1Gq EOoUw;fCl0kdEbt^FpquPw~TuHwz1R(6r7UMA8T)jZFi^h=~ zP1|RdWF mKVwzo+`mCoG@j7O}~*#A+@&VHe5d)R{_ysQ@d;KK_aekO#JrIc~1Qcf*eDB z3g;gd;adpoD`47KDZ`2`E^=_VIDJEYKh3c_P+po#Vl^)^bm+aXj)yw4IS^>Oh!tNi ztt*s7X}>U@-8@2JvxpVfDIK2@Vj9vd{Zo++hN- PluD!xjh zaysughLswu^$vP2*+6fY(4aaSk6pd|L10TK+F`|q22|yjiy>5*tAvAaWRBgSQ#sU| zj}~Qz^TdJqj^@5>FL4i?tZz;hmK{Jf0_Uj(nu5vEH)c3Tts}o0wKe0H4yG3ymzRQd ze5_J;@wjPLc4T~ NtO&0N#K&b67#+lXs_)D>sQ|) 70LctVP(Enjr9~sl$}EbefE~y z5$HVbZAz>Iqe#6M`@2g~;;i;%7W(6IulKF!^lqZx0tf%G?bKjEii3)qRJyg4Gh180 z1Un(#ZFfpihUvt%bIhNGA0%*|Q0Z=J90Rf@20`-X?ZrK&?XK2@vJIzl`*;kwc4%u7 z@MNIsZ|oa7GVFSa6;#ku=lI{~BlIAoWZu{z&t0QneSg*AwBC(=!uIh{k=L_b#xXl6 zbL)qpRY93zKB%R%9$hwqYA@SXTbo(HbIk0J_d7G878apq=$JMnYGNLLBQ&^VzDE1^ zd?b$6$sTc37f{0U6jl7x +e}rSkWG zb?%D?uI;DY_@ch=#czPAtEEH}p{XwoB4Tki&b$8Q#&&VRm2yA0ZgzR!ub`F-z@p#N zYI~wKG(D@@f3q3wRHBDy_AbZM&OIqWj+`3ln&t}IXJ5Iz=3Gq1IUXj6(W_%2S1 5LA@n8m$-j>?E<>6!)%R-(RQC9!?rp@dm|HiQ$fO0I0vg0Kea-`-C zl^#)sQ)tK2EncL^3X*v=7ly|-QvAioE_bOZb1X;Na`Ru-mC5Q*z(I06 zXfCF9Qj(vV2b5pjoWwaI5kDEL`YsJul=~iy0v@UpMCeU zOCPVHT-fUKl}=xVe(Jd}Jy886N@9@iXF|4u3ZK0IO&p!$z@EUovD%010`B7}fY* zjyfas!d%%eaPe{P-FcTh&XkbrUB?)9BUWbO!z zEbpHUu8_FxCQrP0v9T*vtMae-vH>Xp2Aet9mEzsC$}^0lV+g#m`1<{<6;mbAb>q^w z_yJ{lmF)DIu)ud8;ewx6fHEE)|9JeN@}=mX9E_HsXJ`7ZF;sEptK9{rYMP}O^$Sgi z3!tR6lWoyhgH>-A8_T!(Hbw*vxy{I9NtL;B1MVWELZYC!iv<>Ckw-_)$spoTvJ~yF z>F5{|Op7QVJh+t_Mr7+*NA*8E+1CMRu4T$j;r-B*pE|GXa1K|3fI+b$G4#syE2ylS z^z_3`j5`rGxM9n~i*mkJeP%{7nM<*Df5N09?p3B>uMfSqvvFwN$X$1s)(a;08l4u} zoeutb9mfe^n;;R#R?x^_ zDte{soI=b&H}9;FSr;moegX0uw=j>AN_`zAVGfwT!J75L|N#Zsaced6sU1Z^vzE zui~1iS0Y|fF!Pu0QFdgR=Gj;MpZ$gwH><57SsZZ-|5;c Z|C-qWbaK*w~dYnG|? z#t5IF=XUX$H<9|ehPaSOZm%rwq!izv(ym-2vG|E!8l02At(1ekiR0u~DEWiV)^Y z`AKPn_W2w5wGw0!L-7M)fVJQfv^=LyjJRN#>(xFEpernjhptO+fEZ4FXhEL8N};q% zMYt>o_fF#&I3#tIu(br*I%CH6>U9LiW8cId8G^6qpQ>?LJT@4oukc*4#)r#0A=KZc zaZkHJCpsT*f9zrN5UqJr>fz?Bl$2p+3FstdWK(9RQ>4%z#Kmzse1}3fFp?!=-k)(6 zh;^9-q=Lo_Z)W9Rb)>yFEQUYpS_BDS^!0;>Jck_DZVsbEH2#n#>W!%DEdE+?lb%{` z@y b5I 6E4C^n7PSRTZIR#n-VMI>g!5z)sMx>WfRlYILv}ClA48S2m(tz! zdY0DO< ulEiMuJAn0cY^U=rfH- eV@B)0eU~5Mdgr6Z-0$nXulAhu2cNjOypXds14MG?KVeuz z=X >1(2xC2B^Y38tv))j{hTYK<3_DI(UFI%7J=4-?V9+?LW{= AHGylx9yyhczAQtOM2F8U9{3MDwcL(5L@sP1|AYuWd(XKNRGemjm6 zXU96KJ%wC;tTU?hb>>lp+)g3Dl?frsGYQ1KJcmS$hk5sOCL8{#ukQH{^yh5jikB*4 z7ES#KE|UV^& i&6s{u=2zx-0`6)p`D?KAfu| z63Sz<$b|MmlVw07T2(S6$Be|l5VTzQ)%yi8B{}2?b54=unJUdP_c}4sgq9wX;$-sU z_Vh0kW~A&E9+JKy`LZ_NCIH1Bt^Cuu7?{6LW=6`|Zl~`e3NXRgnwtVl&7Fls jaxfNY=}IQ_85A&+Ma2 zzYyRI9NhMgWBN^rw~psmTuj7}Cz~|6x>DrJ&1pAbYg;ulKZp;?VdCDR`Gk#+a)T%a zhyH79k6@^JxXx5!9@QwVbYDu@=`BZ3E#JY&v=^|032ku_uW18B%4GRIF<&&%Gfe4c z>36vzu8I#Ox9MP`Deheie)+1?(-**pxTkqs+?urPfuZ@V02BOfVko=1nABzJVqHkz zI&H?J(nWhe!ddesRUV0aZp2h7Q}mOwjW%}rAY?X4{gczg6>#qA8cZm)9=Lht)KK!+ zW?b(h%%urgd_e&*^oCvEh Q7b(|HK?oj@ z6IC+$yAC$MPG38l?B|#E@_Ur)MO+n-G&X-5FZ6Ns!J%Vrb=ElsHWSz5YKr$^H%wU! z`>$uRhDf)W=0AUZ?JDhkbB9YGHV!B_RJEH;3mvU{ ;5t7-q%g&yWvot?AeYf D_HnQTpFB5w-iIb>zE=!a7DY8AT9r8Ww7Uo718TBiabLg$pDu%O7t*jiQC z*cU3qs~rFg1hwb}C!b50B(#cSu$p2&){8v8KtVV0=fa{7&cc&|pSZI+n^E?VXmaXG z^HbjjCl0xuvw JjEp4nnu^Hb7;dU;TiI4XECITz7@MP_fhmVYQnYsC| zbtNiyz8 1M61O^MQlCwaKRRp)Y_Gf66IC znrQ#?{+nW_ReCO=SOC3%^o>LQDio@OkQJ2jb8tWHmpnPA9@Ee`A+0reTZ~%l_F@kN zd0Vkt?Dl;R2syE^b@;R_%Y8Iwj;xP>L%l&rEU(HWqXTMWR(q%~D3OEkgiiZN(d|Bf zoa)@lTlw36br(xz!DT63{;A`Spi>ZLEYJt{DF*bH{*0AKWlM~OFKlYeNwMyjRVTL6 z$YVwd`0 2-K>t+ux@#|+ikt!j6= z@x80bqJp4kiOmb!c>4Yun^EVe;E*5a%}>CKxY$Z`1@!xI)bOXFX%E6)TXFH%E{V#M zH~0(M=T5-llY8(B*r(q<1t9~|NZ%f7Rx%C4TC~$0QEFo-uLO|j=FA` k}q$x`gj@-pAZlh^^aGfCs*58(#-gK%}dc+c{JU z>2c`e_z@!D=9w+Kn`OQW@9fw53{ud@tC3Rj%`D$;cS>oAE_PWKIxlu9$p^bwv!@G( zaJ@P^Uo1)a_Q#NQUg-MbU^W+!)-Zcag #$*oYv;4X-G=Mw>P38nlTVDIzzF&W7 z+EZadQ;X?|7yjcT;1ke{cqBvGXtg6pO5Oua``0n}OWgT2=t# Ha Ax5PtTp{z$$d031ws zVvaE3{|+e=QlPCwi<4@$Xwj3cM1>Y=lxWd@+4?J(W?IBZ0gTD);w)dfiyoS 2STx}I0s8-{ZD}wmgB%0`iw@4wDO_d+jLFloi3@Yl#dTNdkfg<$RS002 zK3p>+mPNzDt<23ftd4HS)KX^l&=#ve>9POX^n)!vCJ4TNLN9S4K>TW}7owma1SUK{ zMvD(4&?EeY2Gpw!s|dl1uSZY+i#i8pde8G65!g&hj8&JavHRP~NKFiu>QU_2!AUKw z$Gy(dJS $brKsz4SvOL_G|ky<|BMMX5(V%S*JW=25yI1gRXIxcH* zViXVVpe;mrO^Gm_F<_^*x3M3I?3paYeD`e^>rAh&0T5Ei_U;lQd__eVFAy;kGdSs& z$##VnVqSi_s +sjepeGHms(Nk;7c zU;q6pX<*Q2Q*v<~5*-{zgylx&R1>?}s#kJ#02iMo^(}R^kz@D&x8&8#So)g>LFQ(i zJdt^v2oRPd`D`R+*Em*qlERNIkNyh$Q?d-%3jauuVrOJT_7@x+k((T6Jc4VWUvvfz ziaE=`Y2v6WTb33+@`Qbi*OzHy9Y4eAoMU%h3%CzVP?K3FHt(cTYG#Kj=`58bQ(k#w zKC;OoijfjuI#jB%EY&NP;cP$(hF#?rrUz<^0ESc^ztzBnC;J#sN>WF#A|*mil+M(t zprU2WO^n9Xe}zSrqfbEUf&~jDxR7;t73t$(_!u*3UZKK+i!xr7{G3!ZZ1irC>oW%% zkSf7>$BL5e|Ay&sT2m4W(l1hicb^ff);~#@jU-)Y7>ZiS{lTh#xB0m?oLRXYHS}|$ z2N?X}1KL?|Re8@Q5n^+rOM6I-l%}KO$u;t3u3r})2YuZOx3?2!4v)Hk7h4@$0Uf7M z?jM*Do?jP>_bhbQZWMC{(c%w@4VGUq{BkOTM(=KG6Usq+uBrrqXy77l?yPU-i<%-@ z^sP!p#^s+O<}O1LS2s}Kn9hJ;&Pv>SfbUX@c-oE3&j>tQ9ter0Be$)f%iB$@)p1f$ z@&34gTM2!Z%57iu&u8d_!ZLjsWacD=`cLOeU5E*ZxwXElj~R5TRC)}->In_#K%^P% zqqnA}14bUoy8qBcvk62wqgv&HI>fXaM4?3~I%}r|PvEkJPGt&DpCapnE_{SF0Ns^G zQXFOyRk M<>wGX7PBy_=K zW>&iYMvW>xkN2w}`kLTLCB85O7(?xji;)~i;LsM1x<2 O;@Pk(<;TJ@NZT4I0 zEcw91!WVvr;MpP OC 2v;n$QuB8dS2iSH^8*JjiE<19YTw5C4Ttqu8bO3PTJp7COg+^_u(XJa21m@N z1fWI IcW?=M?3k2o4?qf=H6Bag;CvBnXz0a;sI- QGwCRW_4KQp>g0NcLq^&R)i>>y}tzzDow7 zT0fgo<|MWx4-o38v9rNv-jwNbqJoic?zyb4ESvVDnYexpXhrg6tdlEUq~m2+c}OC9 ziLO1Sz9WXZh>-#w@U$Y@mkg~xN|Rlt3Kd96sYf YRi6pAmqlG;E1`Y Dxfk~n9 zO6-JwNBG_6of0>9gqbin{V<{w%ioL%htpt6aIBJIY=Z>bC 8LB-vVq(OH(l%*$HhBStEkD|f(B-*Wiuwql zh0~05QdKjx`cNv0@|HR7z1B@g#C&B&-XvqLQoIbBx3fc)8X06)`Ag6-WR-gzK!aUu z`(2JdZz6{iObFs)l_*qZWYV#oPUHWu_0~agJW<;y?(QDkf;$NWTio5 =SjbLQ#Z?sLw_3YVL>Nr65C8j`%rodw&x z&E7xc()Bc3B`8JBl6;(nmsE?$AR6Gm#Fd(9CL$me`B)WV{e2hSMw}+XJT7ysr&CMq ze^A1iK@Xc5Q5#Fk!0@L`#P+qB`ugAnBcnat4dP@bx-4GJOlkisAFZH#1=m#PG-8&6 zft&u00^=-|yuQ@T%mqsXhz?JqM2#TNlH+&@!;wSr4|SU)#lPz-lT)S!WV {Xl{Z zAJTSFo6PWrv>Y49ux?l>CA|~BN@s;S(WYlHr|66f*@VLLvehgG1!Kv`R9Mq9qY`S} zisi*;p$PNj;b4~(3X2y(ZE^fH_{zx^UoHwqpYJx*&07ZIyLVRvI2kqLl!9me#G_yp zt=Nr-AB`)QZov_}7)hx)Lnl@26}u}0Mo9_&(3U#2sglf98%34l`rHEP;9QM({CE!m z>W+iMW2Dfi!SY7j=oV%i0$*L3=Q75)7ziP ~emLzyMk$w(q8(v%8N5owg0u zhp3&)+D%N;BtJfQG+3NIf3cdP K!@()!`ZD+0H&_#MGKVsF`Mm zAH`%UYuw54OZpTHm*0iv=$WFPZ9^s#>k_4*#I;JW%btNtC3_v8;zVqErmUn+Bl5tD zrn6m=Nb1d+&w24H(a1;yS#eSb618^OwDh6+Fw9b*1i6P@9|cZS0T@To`aRK}U_ST$ zq$04J-Oxgp{*nFWM*XRSqjBAc?2Y2Z{T_ L(Au(ol)t~6?>pZhoWodr4LO&4Z8WB4V2U;?^B8ro{UY!?XJxFSf2O|KsLz4b zL%pojMtO7!nh44Kh$7iD?5lbdtvqAn*kwe_VtH@Z9?3wsPvv&veiA2V(_v!SDTq5# zeH8Fe719KaB;MF28WoG>oQ~QN4>+367iy&A`onfV_za3rxDhDnd>zjtUB`r_)E)jl z+SP>Zn 3aJBvph}oy*A8DSAMm zcPLt*F16jFyh-f&g6Xvu%?|UZjQUZ}Y7q9oT^JeEFu9i}6xwt_t~LnW{{mALYu8!& zFU|T|p?Q;$gt~ya-Y)|B_-K TXQh#x8t4$YsR|Dt&-oXy~o1rND^ylQm;<9yoeq3jR>|st+`?pmg #65HoN9y0uUya)gup!KX^kQYM+K!-N<+m8*U1Q*m2Z<~dh4kGwT=6zKz z>@}$lT=*F#XY0=FPLVt<%Hy*n;3dtb6T*e>rudPj%dwy042~M)O!fF4EVO8A7wU7g zNt;0KTbci~jxAbpZ48GyQ^FLT9Dk~LP~-J!lvvQPP>|?1H3fUfjo<>G=s&k;!!%7$ zKUXXe_B+l?ObZ`d;y=Tu8p=Hc8Jw!cO~G_8rP_$^BBi*CgXYE;+O4uUIuxB3s!n6z zpmdwvNsz`r^G6Qt{G|VDIx{PoPQ8teXW{Z;=PLY*W$jRDDWqeB^){AROMH0P8=XKx zSX;=70McZ&+Zcv?ck>8f=RqZx*u)IuQ3kJ!CgT&+b{m-}l|MAJf?A=XcUYjIP{T4d z!+j~2a@Ld~MH@RXgX8aFln(EC^QUUM`LQ#m@-2c4|8vpJf!FaRf;-fTA0JT0a3+!r zwouiXG%5w_$(#J>i%okLE9-_P{n|yk?3Kc|wLLSnZARB>`B&Rz^O%h=gaYYWNb9 z%R@bcX-9w%Qnw`%XD%i}7mteeo4)Z=TRO^#G3X{caExsQ6R$_Po~l=k)|+#g2d655<%xz(N;GGxPhG`K D!`a- z@@`8PPn|;7L~VH&fk~iJNUs3)_mmX`Qqh3pn1Rv-CAmZR4aYoetFztL_m+pLv#B zA7*Lh#`|tv?zwU<26fKK$u>ukrvg$56T_C-J&u=+R3Lz*lr!S$oBs*lIxU*3eroBb z8FyLyP8$#|NYyj*nlnR%RjI#5h=m(Y5X&?NOVcLme{Ib(&U!!2N87T&^>Q`D-Okaj z`fPyc2!rB%`3tbX%%N^!^khW5Qfoy{$50% >gp(#=}k|Jyrqufsr#3jx8mrOTkG>tAPSR$&g z-sc~2D^q2-a9pL65qYm^hl5&Zk0*ZkYtg)?gn?)1MR6~}f4gg!Tp)U|KmQVg*b*-U z{yI|!hs<>KUp}7zwdjy()-nPP#lB8RfwRyflQa+uQ{&6v%*3|)nA7(-PK2azqkzD& zFv){FaTQ`N-WQKt9db#U9TiegWz)vEmclg6S*8P3v`>*C_dtDoT>>#I$e&uuGpw$Y z?Aq;|W9GZBkbBB$r#QUJZIflQ3JMX4$|e(p*1`RqBYh7gb+-F8KU<}tBcjVSNb1#% zSOO?#eP$Wo4T6$R`%@Ik)2SC}7EG2_W%ISe%U=iKaXdawyzlF>Yobo=Q7KUm&0 r_zOb?)61p--|1{{cgoAY5o57E~3R3Pe@1fkTH z{mC(x_+E_iWKj%K6sd8rx%wm_Oz&`uC;X32RjaxI_gzJ?*>T8W$&{CZAb)Gr0ZQ^t z+oAGm{T&H`U_^a}`AcE4lpZl{2#6AiON<(8t$1r!O3rvc78JP30Z?J73=NayVFKc5 zxNV90G6N&bEiyh;jyshQm8&ag5dM%~zd%|+-}b>2zZPJ8FL4HmvU5s)8P%@vOQ1VF zmT`Cn-43Jn(e$%R!`@=*dg~__J@0gVy?c>SXJd9!F-SE-6ubKeKkyn=7VWo+(wGi1 zTeDD*p8vj|T-a_AE3ssw5UApuNd*Y!OWg3v-YriCM_WjM8gbc5sBwE;xLPwlvXcxZ zJ{UUuk|J$I^Vq2 =mmq8{ZdC1VGlA0eh3k9$aYgy){1i!W8o C3 zRe~Y9uxdSmwI^4+moX~ysHjXu08ok|kEqk6x&IZL_PzU vnyK*gP2O?@XVe<<`N9kb(dwj;qNXMnX*p-U98j=sTWhUa z+NyQysNVS>$;^JU_G{%U1p7RWU{`#CMG|qoPp!MBO0yWvnt$Q_EB=y;uJm2z-ufZV z;LGEGt3nIz2+GAATX0i1TG7p}75eNfv5Q9pP6@XjIg8z kuwo8{RNRlTv?BnqugwZ$#>lh&@NT z1(;S{;;iHrH>tjCs^N$2CmeclU+kK;T|aY~w(aK(Q!|ei>Z}1o8&w_58Ov1{NsZq% z=UX5WD}NZ&>#v)p4V>jeV*ND2;J{^E(0P Uq%!LkeF5bG6Rt<7@+|;8WQ>xmpHJ1ZJAqHScA27c6=u1MRH_Cf_uyPdc}=8!~L8 znSj=vkk6kkc6$Nx<2-4(yu}ZniuacDaUpSBn8A(2odQoTsBJO3N}+9NuldhcHI4JU zY(CTl QJeUo@|9f~ zT1Gd-KdXc9|MjG)H^I7TEW_o`eMrpw4FMyH?JwxfN*xD~sHpH?BE-v#R9y Q}c59N9tsTEZ^m1n4%E aj _Af3;Kd?dv>g;VfZby2t$_ z6Du`EGWGZ!a^<7^heXeMvBJ#{#?MY7UCpT^e{?m)6{?cj%+eag_nH4~7;*M2U*H>V z0M8y7K7J20PtRwgk}=689QxODpJ1;kJqtbn@1D qPxpOB@+dT|Y}#&ncM79FEt#zFj1PhX!s&4KA8jx08fDbyx4 z$O)1c9z;h)g&buk=_eUvOJE}r6CHIx!NP1~XTn+AN48CvWd%2}LqUaXVkZIm{|&Gu zI1+=~*n!(Lu`})d+dm=xDsa(|<*S!$_c?>IE<|S@htTEZDB|ks*0apZi;;l^$_1H> zO}V-TUTMAJZ@#0iI`BN|KC$_-1QVK@B!493y^N!_9Aboe{r%spo*ivuX!0l-w9Gn2 z!3;Jw^8C;vx@=W5IoldI|J{yIdudWdr%*PA*7!N~v)&T6o@@C818&}kOXU2BTD(ux zvuQ+5Q5Gq|dG@}lbfB| z4xPWH!yY1d6P{Dtzih6D0P3zQbO&+yhA ) hA&DR%HK|J3@hAUAsOBfgcTV9N)9ssVIf6GB@b$Yupmx# zeRZoj22ow%Md%j1$)Vl|1d-Sej%uXR716~;0l *S9w>o-4hZ+uF2ziwE!PJDgakVy#U*P(z@$d!L8$g|r>7b07^AAc&S4q0{a`@Fu$ zd*O$Viyv;@DT&ZB#zCN({WqoO@)nZLWObxFp6O*fRM{A@+3_27ssWqgQHnJg$Df#P znN%QvW{RT$LSRFCC3k|EkRV*UK8W&UIyNp;I*tvd*EcxNd^R>J6rG;{3AH&PG?w}J zBW&rBo(qXRDZ4J=ZiJtf-!y$^`ZA0k`*$}=U7Df?L0}Id!1@az*Oij|_8SFe^^{oM zRM%?lPDo2nDk cWv+wxc9b3n$_tk-yyPg|HHF&q5dxp}XH9 zO~c2FP3MPQL!x3rXHG(D$Cc2cjI_Wt`5YZj;9AKzp+O+hBjq8I{F^P%8Ph2+9MCm} z$z5&z&IL9C=x}#hJvJVb0q_o!6&sFDD2_dt2_hxxo#w5`p}z3o_{>|;(_#gXd4ZXl z(wNM0-U^~Rra}T5b1LF`vqD0QJt6#h3d|Ik5!Za+ p8+V0+2; zxricyr>!t_z7<4-FGT|q6bBp*8*d5iZ?|uz*ITo??JZCjU7atNgH3Vx;j_5w6(6D6 z1$gPZOyf5o{cQZD8{F6)xKa?_vfG4%^mK^!JbsYPOJFCx+UnwU$iPh3Jhz`H4~&GU zGmV|_=$D>wp$=$SSsA0Pg}6{!TVmhS^mpBvX(Wvh)AzvP+dCkp*hZ{U2O$Q_*~Hbc zk#9CX$h25qbv^3_LQ=?LRL#8$D~+lPU&@K~`-=?}*r^A!sJ=OIeR z2n!TmtGU`y=Md0XSaQbg5?fLommOH_K=LeSz#|F=za`TiMGo LM(s0LGv!PMFV3 wEt2&Gbg8iF4YX5; z_Bb|KXs&6$;W##AvVvBq0XH@zvLKf@IJ(_JKyy4DJQ8r5f=7b+vHuwf$}_+tf#x_2 zcqAY~jl}NuZM+WF=B~@g9|0VQdS*}kwIb An zA^k`R`oX)1>(F>m_9sN0MkvAAL)S`|d6yN4eah39xtm}XQNH>mRe=bd3#+|>og5U4 z{P!y_8xsk;3sUPN{r^1pKK4fc`{47dNuhkvz_sL8Q)0t1z%U0h3#9^v6Tccn>+jJ# zK$K#N-QQ|7FR%uavsektc~cyPj$rOl;>wSaB?rrXP2Q#~`Txp3nEyxi!N G-X4EyMEH>wL1I;% zTaPNh1}EByZPBC3hh;N?Z3AXJlXcU)(saebJx$0daI{r?)Ggj3;Dz)BjSB bBlx?_C^53(Y=FwS zk7_?8zk)M$mx)S7W3GRwm!y{@>~nX(AmG$Jfcw>~x|cMZIOohg@yS@(*VnXJv@!_| zED7_bU`eng3o^yha=G=75GA??Kk_z%!g`HrTZ8#~ 5QIn;X;0|Tc5xSy#XZ|Hu3xWa z5~Z-Hwf%hm+h{!I=z8(KhKmZ$KY5~jh*KJHIE0q|E{Lhf77Y?GHlnyk8usi>9`Oid zP*xMz>UhUMRXqGZ?XZ#VyeU(SFe0>iyG2h?6YGK*QfgrIb9ER~jd*Qnj1dJ#oFFoP z(?o!Bjj6E$ppkzfkR;HHZze|? {(~^*J zrXiJrTFZfuWrTYXLW&coR1*g%hx@mfZ{qs;n=b#z5t@`ej<^}2?O(Ul!~q;fs{*fB zAra1;^BrV#E9%Gi6E`XH0vFfWVmxM@K_6(z9rY9cD7PBmdbY52Wjk+wz6vCd5W9)Z zdUs&RFruQ#%hp--3yh0m@^B+dP0Tal>FW|dNl8F9yiThm+^jHA<_{{cFZ>~a-d?G- zKtW(1cbWYfr+ujiVO%1J9)Ig_<^e}qSxbF?Y?hDzDRFC9#ykgSLvKRH#=M t zn0qN!yw4gj8ajB&BU^t#4#LS`VobfPpjNyXb|m$nTPZZoFUiM>NNGJb8a`Jy5JR-P z!h;nS_%ET^G~)#{HUq1h8jOos4^c4@&ext<0a-wI`JysY>YIW$EtF0%p{&e*-iKu+ zH0q31ZJ`)t=K#4TjN9^wVU?qJd~}lBrjD}_tqFF !vNYO^q?`)b z^BbWr4f4~DnJXspb)crY&H=ND*9z5?j4C|it*aY3`<^s6cSjhU3D(p7YriSu+6cxM z&~xAV4vtezq3$q2kj%W5S6vpP-E+c)`Po(2BC~DmuVxl 4cly%iEhuhF-* xiZhvAi%kLMtTik(zP}Ta3ru#u$(?t)D^@8Q_p^AYfF~>&n`DCU8 zJtkZ6*k6VVYS})1L24N4Kj-~yv^q+czEPZ)w6+ct=5+7*w&EG!A#7p3uEcKfFL0st zRd_eN_nLmUT89m5q4ykJ|Ki{uHz7hMBqy1?=PQg!5e_;<2qtQ!f{P)@xrqnp8>sd6 zW?sWL=?bbhED)5X8tnlLSQ+yJP3t_rUs4I{)qlPH`UAK2w<^Cgf&zxMhpG2xwdRo` zM01JkMkPZ{F|B09skH yciruqqZUZnbfsD}u&*{@z6%jeJboC?>v(DXSH-=lZg z3MciWeCJ0EV3e*`YnWeOgU$e<&dUh2PY(;rRUQ_j$L4)nou{PVXwNHJJNa?5jl@4Q zHaA-CFz^kQ^Qbzybrq{PMl+)(8L=hub|;kLU=}D FYA_s90sA>=>ig7WIu zFaNdPQjSl*>m@z84`_vsqkdHLF~%4!FQ8X+u~?#4baZm#s{!&~SptD-0GS02MT=i+ z)-lVlp6B3Kecr2pgL=|YaJF6bZvtJtA|Kske$|C}7N5+WgEYaR;RDU~x}A#G`Z3ej zZ!dw9olUbNorxCc)mNMm`b%}Ef^f9jH6WVm+B3&$vE3xg1UJU8^2GJlGNZjyM)j1h z9Qd=gorwjT)FLxoP0_%rXJ}NKi)imwrvT|KcU#d_I8l!dt-Y4Yp=#k3-x$h@8-ol= zw6*q@=wUz^E@#|Z1kYR@arwXDxSb%a>^^~>YUzJ}VDV!tY;{?PmX0+@VTNfnk!973 z @+vte?9;Z5TC89>ivc;oY-*~EgQTk`!n`;V4&Ht5WT#BTDtH~Sd z#niVy-RWWCQ)T)ok|My_5@^VQ4_jfClvU5 Iuk`MxeJ0O zF0n|Fn?Lh_eF~SL*{c*jpupTFR)B`+>1nVC5-ZHq>XP;0LK4J_x3Fjv{t}W7vbT|< z-z`oP6JnELw%!Ad=8|H=OyrNIT(2i|8FBX!%;9lfU*=87kJcp;(rJ1Q1zKxWE}}y* zCo)z*=xbQp`SYzudDIoL9#iG$VXkv$!LbE#yvlosZ|ZrLLV|-qnCRar`*#m|AP#0a z=KCnJiAIBIJj{ey@cP%@fKWlU9MVIlPX;{ovjAV#=@8JOm)|v_D69DGwV?f@V`8Iq z;i<0W#M)T#@4Sm$Upeb9TVjnxhblX*P;PLY(R;iBHLBXU$_^r4sAX5FrnrGEf9%*j zv4VFzliJc8={ wfcqL(>N)P(;D=&w*G&f7eZ{Xn@??L02#|=;kFxbx z>$R!4HmkKEMPOPpVZknM<4n^pp^D@sgTY%ir{Q5fHm%~99l4vXXU1CByd@_6`vQa^ zED+>(AH=ebOn@o8A)4Xt=B~8f$TAf=x)8GBk?|bE8C)bb7bhiDv5dgdl9O5OOyJpW zzxG3~<{fa42#Z|*_?Y+nf>)q!TxVu|FzehojV0`98t;L1YV_$2?M(TC?Nfun)NAqQ zk=LIMwL)u5N#SuX$-9{y)KH&gQzM&R8vzL{2lLw5u8{aHsZr;&*6Gk82al;h?*`7{ zDs3klC3^j#S}t`vy3Z`yRloZx*HyVY- jx|trmGA7b*hwSw zP!0ke&99{JYmEfrHHvo1+j)y9e%zcw*rXh=C4TbDz2r*#WH8;$R}yeVg&O_K$_RLs zgWka>BIugw_K=6(;l(2OBdn*!s|I0X%gkx-F;CW9O{~!JO)1=ge`Ev4E-f{}Ci_e~ zaZbR}F3~JZtuRBcMgbm;;VEE6OvWIA>I y&9jAB=jFn{?G zBR@$i#g`++hKJ+m$l&&{Pw{h;Z>j*l<%L?X-Wn^ax9yU8Z$sp$i=;g0vJ^y*-XW6N zJ{&D# R^+{f-NNuhqNtHAt2pO1yUWpa46Eb3Xwlz?4vtIX$f}CJl)Y1x zKP#3V3l)@q1eU*lE`PRFyW7Z}r LI}g<~N0oR$poAydQ^AhlCVPc#pMM_=o1hz#x(?6S z<$nT$B%k;PNyxw;1%m_(V*ap;bw0`CwMWe2A3Ku4>oK34ym i+f% cM}8nJ9g7cC%52 ^A~}1#A(~H;6rYU zthfIcK4i~C4CrsDv|vzxK?g=d>LY61{{`?zi`7=hGH9(H1Kp1cr3bZ2cM;1@A#BQT z)NooJLh@HgNuq c)yhB0e;NaOa;1>6Hv4Y$|cv@|ku8uVo2E07t{oVCdby&88BN z(K8G^KU-&!Mah~tZA2FuT-2wI8`It=tGDsU!++8*W%$!^_aI;2nh8Hr3aU!lv@(eV z)Le*D|6!BvZa;Vzx;RG)ms@4{*|AsoHdOSyO#Ap>maG}E?@iLcp^P>c&5PN@xNR3W z>*)$vD!kOy<>t3;0N)pm@Ipc5lciP(Zcx%&uP3Z(VFQ**0?*8$_=-|4u5|&LZea|y zRKmHLa+Lt)s$T6m=(~4>%~U&fVAMRUWqz~D@&EBrtg7@t^ivQYh1ulIrfZtMJwLCg z*VY7$(VRqvckBZ1f6z5-Ybq297py$+Pz)QGnCq(K0Gc{$!<6#4jUK5wu=`2G0p?z3 zzE`r~j(VT1#^^$9O&r2iSN+09{roK67U}_peZtQP8-HbH@ZPZ}I2 Puw#t^Hx}Jn=|s<+^tvMdx)))szugjS-DvfaqMkcT#QXS (NP$+4BR&`ri_wsq8&@Q3u&x^9} 8cfX`Rd3F`uPV%hu8NdJrsP2;1;E~{{fIW>T8q z0BgL_KVg*=%}oaD%^2r&g#(+7Dc9->cUuh&-e`M{w+Zt@^o#TvNa4xgS~D=D_7uMo z5QRR6G5+?tZ21#(mrkm%skPzi0EZ2^)`}X|h?Yv%fVM)4&rCLaNPPJ`)M68-d=z0{ zRH3enaG7XE)R8d6JYrygq~GO@>IbhR35-#9XHEMip)eP59k*4{yIe3pLP88w4iEg2 z-JcqP2pIcogfXl~g6y@z=2+d<%e*P|%+SjReyxTt3OuBc6C1$_KW!E22g&PxFD! $ zfgKlH?}SW~5+ONAEw#7pvYaQEnR9588pZ%;pq;Klo)W~Whlm)R$fi2*{G4|2Eq~V* zTYro#-DESQCmE`O#HYW4Hm+WI6zG#=oZn?f)M)9>9B? ?4}uNUnx3?wxP z&pUS{5Sn*GXlgPH?ba?$hOQhB{YZhat@JKNz@aE!oZd&XL4@)`poTcM3y^7FuINxf zpN|b8!Yg?A0AY*Bj)gJH$d1v0njCS` 4cud!cm73A7oZv`D9jkTb=0Vm#e(xE788CCvg z%Rc_!HZrl9pjSK32o1ljx$+B5)@osg3Jx%gZvFE-!=IC$&cj_DNKQmNd+{4ScZbqE z6CMfrb{3{cbgz4lP9WuW=fs+o9Dlr=JJ|8P0OGf0%(km<$z=Wr^GYi+3v-k&s^$Y~ z>oNtdHEq*(hc4Wn2gkFIxHjGs=YJYA;vdRY>*uov>x<4BD^>H{XCt>)M|3RV!PMv5 zW`SeIAJ0({LCG?hfEbK_JGwgq4M%635r`ZE0pfk=pLfL1A`=1E-z6aEK8}^E2f_Ld zpDRp+Lv^WZavYv^HFlz{*UD)B%bq^ZhntF5a_?m)v%(X4&1PEkW2L@08tPML4VByj z6k-U981m=y>I|-}#qax4{oHL%U6v9vyD9q|dmqd&Q6IW80KTQvlp*(6gYXSjWQfO2 ztB@f%2g1uA15t yHAldzf@C~#+&{OnXZNje@QGZ zwZfq9aKq)11LSj-g|B}xA!zBs^suAu`#P } z^Wg|RCZ_7}gs};W$fZ!-i6M|`uRtUmM;l20)bN|iZ+W#57}QS(Gfg1yFrvU$k= zQYNVq!$nSSJNOM9i7%dloWvdN94g;nEEx3%wFndO4`BeUKddJpo67#x6Ah=Iv+4$S zNoz ELdZ}6ONPhwyfO=f@O*QkA+Z#sfk%CbVbTlDf^VQf;fSu(4s`VF6D;!+3jVoUV z* l-n@;h`GI=QUyL$@R~43cNe0(Sib_3v%T8@46y*xnOzDrKP<)SlB09vFIUXd` zg0Vgo%y%p7pN>H~M=(S^N_2 q+vAY!plaSSrmVo(g&3m70pp?SeXGA z#d^`Yu$pxN6r@Gd12%f3dvDsut??w2{m5f@tJVZ`oSgKXH%Teste@W5?4KS#U|C+K za28GyUTf?LNZ(H{lW(zhg{41gxR;Iy2~toA8IVq%py*G3E>zj8cj2W6Mvn(GDwd#! z4mgNUK9az;5FXaOE*d)%M~aKUt7rgBP}c!yLHdOBI2>`xX!Q}$dgrEEgv1_|BmIL2 zn_}9l%piE^#vB pB}|1#~Y9Y&;Ki#7?hb32i8Jt+5yvbqu;A z{`wPNJp{AmqC8AAfAb8(PT$^7nz2=eF;O3>@+WCsMa3yEL1F~?tbb(`Z?xu{O*C`L zw;;AuJ7O`u9fB~32?PbfW= 0qe$yzurJV{jIFpnk%Cp(dCW|?#V1IHF8kvclAe?60;&2QfKek9j^PI_W;ZWdiX z3|~n*8Q0I2caG|w5BKO8Z8$?x>$|#`>n|x&4o*WCuKmTO<)75qLK@Hp4QaG4M`v{v zs%mWwJ=)RR1M%-)>ZC)h@0hsZd%WShOf(#3n(^9Ya$>oyd+68q fEo(u7?uF6J`giULeQiX@N?}y8P6g9(%82M5PN1tG zZzc(_M?KKmlEyJ3e~yFt85j-I`S9;*_wnKthUs71w~&;m*g3=E*=5H~=ha7#O}ntT zHP;q(_#tpA&bR(MpQXW 4J= zYO>@8-e( hJnk8}rtNpn?LWl=aZ{vSHF>1!GOH$bTQQqf7nSG_uk}mOk-!$8^ zCZGHCH!7Y{lZ1EWp%jKFpG~eVnejdwZ+?NzqX!8TsNw($#g@Wb{^*3GFST{qIuctZ z*c5pf1YR@MBlT(sVS(m9&_x4njT-MK;F28Jn&S#9`#IVOe})7*{CG)-_%5FuW;pdL zcAI+t8$`1#>&43233`*8lV+1e%DIElO3*Sb0c607*upHdFB-aC_FixhPErKr0U^Nx z!#EPWLxLj^0_`T<(VH(>P5Thd1QW&@{D!jE2%~}WhsG($3oU|RJdnoA2s$;r=2SCq zu%Y0B8F}Fixst%0+9_xy0TgW^i6vM~Dm|v &m#ENn>7gW8UK zubtxngDIU$z7vrs_E8B5NDa>^#l${HOJ_?tZF9KC2iw(ZY-kOC?EY}mC;x|D=3wh+ z`j0c?s}|5 ?~!KIzj>G?yuaMHeq{ 1@|gX-7WJFjy|DZW z6ZSpm8TGnK1!iY>kN((h$X5M@YjGD3*FjIQ&fW1 )`FTl}+>oW3 z8ie2d-P@A7MZYrD1PK2wM<|8=0upZED;p-(Qm77YAVDOYabEBbU_OBPlD?OnyN}Ba z{3}Ak<4r#sIvg-vPCzdoL#mDzs+IX&r*s+ZEcJyMP87stxZvj%wT4wPFLO5U&2^80 zH(JXotj**aCR(p^g$B>alh)O)z{V6INLaD;*GUH@uzPPWvWBk`kJ&^uJ^vPBpIanC z-{f2BF^*%!v_IW Z41Izj+E1K8f=9MO6j(hbsh z$vN+HiMRVjn#T8)&8GxQcq^gk{jawpVa6Va0Lo5_AAu$vx&c8g-}Gj^v)rBfgD^38 zLbTTZ?H>$b=T1gKNnhxJWL#e^9;c UC~xENZ*EwY&tD7&U1km(4zY1 zLvr%`x4in6I|n*`J$9Xo47!&jOT^)n7)>o(>L1C}Cv~mf#hPN@459Fgt}7#h>>qzI z43DzX@y_8%R&2DQ{HqjNCp9K0&=8&0zaGgh@G#lVnMYJdtaH7T+r8xbL`wzyP`p|V zK*!{8|NcVpDJ-08sTp|=4~uk}0+5MjLsJqN=E1>6g52_2xr5x=b)c;1u^KAzp;p%p z-_=@n-HE>v0cnc|rvdOiUAUG&zC_T05+tgHXtG`V4uI2cn$I-qz84@l;l#fyIYV-I zT+!?rnHVA9tA}NNBPAadHYGJ@u9|dkNpf9tA _^_Hq1VD~x{UK(ND7dkV~c;sp!azGU8vq8+HMt6 zABp+E$@Q%It{_o|1c{OBZ&P^*&fDd{7LHBaAwp|rb_*90?=($}10^B;8IHm `YA~z-F3QM0IV~o8${|PoY^$ab65unK!{Q6Q +$6)31n+|Z_qxq& If@#h@x(? zbX_Kt(>wSjgn!5zDs>dgsO)$j;3_~ov`Zi#vo3ZY#_quYC~I|<(@;bkL_GfB0JlId zoC OeM5_%BcaJS8+erIzXIpH2aI_ut`;V8_#k7LUyZ0MjW@=V98)=+ za~vtg*GvpKFme$lE!xouF*5hs(>`UsjU{~|^AbIP88^-uMs<{V*;(xg4mLsP8w!J> zDQhgj-v7)ClwhWQ{$UaX?OPnNA~cP$eJerS-{_HX?^Wknob;l1 B7aQjNIn$IA%Ar2WqdK&~&JLl7S?y=TTC++o%Yyuxg7 zUOy)d!Y$P0*q8hy-2?1)us2lS% ZR}B=&TqoWy|giXe-x zn< ;3Rj)9JL{ %dU4das;LGK^zZU(;jC=h z;W%^s9Lk!=sIo+w)R-ewqEkBFzRPFtY}!*5QwtY0(f IAat)A$3NmBQL425vN2Y!)5G;#W| wm88NxvM9c0aX-TYxcB0^{Oae}lw| zbY1n57A1CUpB8NnP$*n#p!qtjo);e7We|$)_=5OdgY^N8`YrNSCQ19lcI91{F4t zeu&l{ZN1~M)VxyO!Ram%TpjO9!ma%LVcsUs!Q-Cu@h9T#ZV@Quq{&7`6JkW4X+91q zF@LJrAt5$0>`bnaKFDlEGNz{Jq^C=Nv{jKzBi#>UGo-~Py*KtJqn`#^C(}%tPkIgY zmpF_lnP!q~Qfj2%NLlF>C5~l?Fl^Sjc=`3O{9CUzAOVO$6`clP3SWL2fHaXdlgW2a zeI`o-aLtc2|CzC&?J{*wT w?TS zs*BlJ*Q9?*xOoNHwpT0Esiu8g9B;y`Sy@n)GRN|fX8b;4cAi#bqT(#Qcfj>XSoU6c zzLO@6o=CXL&a;9m0K>mWI@0v}QJslRJvezEArwF*nm0=k!i(DrzufjL#xKFWh<~}Q ziwFJ(K<@2~8Wg7+Qk4W^M1jR`Ur{O#O-z^J*yMiZiN)+ls}5l21Z0+abJZldRjnGy z_Bw1yl4M7E-}xadYK)RTKW1f9(C3WblCT (@#~~$>tCZ<)+!v |yD`g~IZKe$giC&YUv2KN zM_Xjdz{&cc)F AK*&;ij5GQU{#O3r+idHaN&+T1dihbAM|gS*zn& z-s4CVZjvx8>vuSk6W6{gTLhc)gd;7ODw4N#aZiUt5}fC>M2;k{3$b^w!$}}vsirkE z^@?6%J(ynY*S3sis|~T;7P+C4tE!R~Vn@NUEA>8V$+A?tt*1$mHne_8y&V 6`OQI2RDV)W<&Yme%Z{WB&zd78gLe%O#YQVa-b~<1j6hidl z0WQ`7 i zC|#H3zugifk<{FkB9)A@Qgo7ZRf<|dj!F?q(M>64={PCHCs7ymYEl1#{2pX|96CMV zWpVg?(N@FZQ-@vz7k`W~%;Jaubm!$X ;iCvsb9wD3ApeEpX_@Ibl_G|0B}{*;8sweP=a4QfkQKuY=6}SYRPyV#Z8n3B&BW( zp@fxfMKUc_TM>(^Xf^k-%)KmK-tJzJu5RZI@jDMpofUgU!W|uC;sb_>-)sjA2e>H? z7(Tw{3&R3zG6RN==L`l63E*i9Z&IHc@vYX{IR0d&kcLxP=tTA`3z3A}%R(x;k6Eas z<7gI6sTukYxqoFuJS$iDX_&a?64|~ri-e3@Gm386nnyZjtqG-O(+{Nj8PB2xdK&gD znMAf`$sr+ImVBaHvSg8t9ZNc?S+T5V`qux&X~i?<6^S%#dQB*@X|JgyWZ`RC(G7h~ zCLMcUvuej78=i-R)H*3gw4PP+%bWxA08N-fbBk+tuYdV?r^n$4sqYfdBK2JYz1js* zsdOh7sHLOYnouI$$^~XoGs_qFB-OFVZKbI41g?8Z0Wdh|IkSiqdYaQ1EQ+x?P~B_V z&s*xd9j7g)yH{HJQGNAmPa3tymwo?m!U>KH(E0}~cHpZWu!!ojo<+n>pPj4OvDg)~ zqRwY(VSkb0CNN}USBNuA+?_QRyP7;_4SkYtlVzQ#pKsebO`c;zpS!B _8jZ6Mlb!t;qQ$XbEaJ_%wZq ze;q9rv$1(BSvjQZ;GSQyLtm!XkA0Lqf1gy$sed`89ePeA-%A8K@%24A5T72)`?B-S zY$EgA$-goYT~+0trfSz|Mlch(1pAXaJvd9i844`asDoeb*;xa+k6vWhKry(4lfF zE@h(E$_7l%<4yFEY_`N4o8*+BKl`Bv5()S-K_yjxCb^~W&m>J!RqfMi>19Hirnwa~ zEq~)w)ROhHl3rd>(kGPzleF~D*>0YiNa>x5eIAOEbrpHZ_HC;NvdJ`F$>a;o 0V?B6YAS%KB;!_3&Hez`Gsq`ebyz8tI7PdDC%U5+M!FF z37?`RC!A7RIHud-E*ul<+ZJNnK3;ezkbkZQCOc)fP)smLn8_uSJ3Qf(e4qSIvWcgB z6HJVq5=_+(N^(6F)$1vhLY?wU$ Fr3Nb^npv_pjZdN7lbu9T-_kLIotGD;wD|koTn|}|V zKi~cS>BHCCyX?0gpYFbX{QN)eS_sSMk8k%6pFZEELg(w Lq>Gs3t?6(h}KL7dSE)6pGf8O5S-QPzg^YQNgM#ca1^&u+${X<;K z{OePk_s@gp2Ohr!@4+-~M4vb@;D0{p{?9KTevQ;uO*DSL`w+Js{0{(t%=soW>P zMOki?mic=uyPB$V(OuFK)BUcgiTVD!>C;``tJI8JV)TrW7ZtBV0uhMZWb!bwEOX3x zVo)MQkrJD#N{LNhw|zo<@^);7j8*Nx5@Iz~bcmzAI{sgR)T)*g?KmXJOuWo&WbTJG zVUQDbI@9rff?#6QcysM4s( m6t_AKDCDiHDey1t&Mkaj zICy~r)uuqP0k1=WB1TGgi-zOiccdU7k9|dHd=@2lAMsiAEvaL(7=N;Y?rC(*(8r~9 zeY+!aGOqO5KNX6VU%3+$3;)t42qs^@-^S~2ICw(+jbM{xe kRh0*-d%lP*Q?hxq z6S+-T*5&bO@F0Ms&>Zo{7J>yEdfFTmlZZ;1%n)alQjE-_WJMb@JMhnuvOydq+{YXC zEgTXW{jEqPIS5?wi|=DrWYVzl`(xYvH>F)nwO%+Rq}D4^Nq?&Kil0bYlG=SL3Yd;K zETwI-C(=`qz#Lkk=`0mBzo|<``)p70A$Iy>MJm2$T9HZ3Gu@0G L1EVF?=59yfyO--9I`^o#c151om zK?af#rTD$u34fi4{hK_EPM*EuyeEMRwl33itkThUI~M9pcdy>YhiU4`zV|%g;!gso z^Mqyv-giP1^qf3|rc*ZJ&$fTbMn>mK U_@$$zeBrQ$?alvw%i z)LJP`UwV_6igP+Fg% 7(@NMOXog^gtr*Ob34~Xa5($DeqxE431!Z}PypEI<&WALhFgwz!ONGyo zux#D&rGLOF%_u>WODRgwlv0TjG@Vq&dYVppLCZ}-9{iD1V?s^yTUj}8c7($v(b!It zOFqKWJk#@ @3zaQ}PvSUa7c>HK#-^ zGM%vE$JlUIZ4-Txawd|Ti&&T?>>w7BDJ5pstbfEp@nrngLQIvBW__!6rA&wz-P4AT z@6&6tH1iJ&zmz)2g;gru N}vIk&JdOV~3kBom927h;J;$}3`tMam1a zlz)8b!YUPax-d%0qxO_A{%>@Ls(Ga6PbXq2yVHqdQWiLoO2z;uLMhr`Iyut6=8be> z`UAxxId7n8CF~0{!<6!(D@utJtj&y)3O+Tf#3Ij$RbpYMrnRo^n|yi-s+DHaLz7D> zOwg242@*7&gp$RYQA$CJrWDPSEBs$cPk+UMA}mU*a>gNzNadVVYH`XrzZ5#)b51FA zzppr@(D|N|N~nuFr}mS+B*P_oXM0X4YFB$sCU!@A&L?^|D+1b`*pcu!b!|?Y?>Msf zTU2eiZoi{$cHDhO-+Wsa|C~A4cj{{j?$|e6CyCcmXCNNp)jNh*Kn%p{q%0=`J%4aV zAH6-i{5lYas^t+2 n}R-P{Gw=Ta$bBI!GoMr@I4+I zmJHePF2#9GEijj&$fnKzqLaxhN}91tgG*cU0oy>+ATu4AJkT^+XIfUAfP1;wld?*p zQDhD@6 LU5fJAZ1Xz^G)I?h>4jGy^9zxxZux2`f*8O}yy$6_u`U z4?SfpiFT3SAJx&)Nf1&em8avArPrA|@f7rjGa5#gNaN6zUye=Zk423mk6os-+EW_B zOq}@WAt^dll@gr;O-Yr-rZOqfsajHG@|t8E^h9l8mCa5%cJj@N>p*$*rhkuONRF${ z*}a#heN8u=_-|sW0-cmhh!GxmMY8T*jHT*q5Jldub0{Y=9H&zHwymA<#l1eb>o@cL z@%xWf9foKh%&eIBQvfQ@faL^UodHXaM>Xw}7?AIXN6G?&Q}@`VLTFuoxNqCRc?1ee z%WsY!mW%(CIt-uKt|&P_lz*}lO3nkV2o*E|>q^TVN;dnpugQ>+uA_v hMyRU0=1{tB2el#t!s13cmaHZ|<_yh=TTPYidp;)V zbxnnf^+2<#`PjJP1NbA&f2P8z?YfrHBI85QvN>dfSnrz(x2c*r6@M;EADRrK^~gIZ zVoxP^3jBJ~3?d)Y_M%6d|4xN!EUjn9wsY-G 2{$r%6! zAWJv^c&IagRZrFK{uQr5) S!-S M;NgUQ-DG z_}W5a;>Xv-6Ymg>g@5-78~_e}heQAn7}~g ?F;QxO3 #q g7EW-w{Sn6o34^@gK{o@HuQ3mi=6* *Olv?hu43c+R5AKYbFtK8KUUTIRjqwR>8x1q@_z}$933kQ`aaqJJ<^e8{M%Wd zl*@XT52F`T&qn?(AA${Sw+@fqAOEo#Rz*nf+PKxjtc$4r|L{B>+tDD {r5QGBNf=cBw_Cmr0()ZgrWG${G+(&djcGmbrn{I?gM6)A!Mv uB{p9zYb#l)CaZ9kT1Ro%~i1_S(`V0?`!v!K-{%7f%_0 znjPNT1BfA~x`8{sx+eWgvQO~vR1W#^BpOXsyDv~pT)!_dUd2%FkGEW;mF5W8^bw{s zN<*KABtt@zhe$A|WlX(%q?zxMr`Y@fR&7OmgnwgO74MI=&V;^Gi e6rUYp2rq_rw~^1%x3z zpJw%rID2is7lZIXs-N$OuIvv)UhIjIJ_+8%*c@mJP>ZPr`S%NxAkmN?7j|AP5Sp(b~SAP>JVp9{${d>k{)Nx z(aTiMC_-}6S*HRZA`Zba1M3da+2*a7EE4N|**jo6|2QYt$@9A*FOpuO_ZGYQ$evtu z>FN));i1~7V@L9z9Y}T+{fXXF>reLRU4Nn+glYC4*^yQ?9o|XHX8*|85hi63hVL&K z>Fc(CFLeJ?&y2qpzW*!Rm4|o6`M-ej1Yy{!N!sa9JiT8>;>5eY?Pw3Ps1%*7F7{P> z-ns9{5{>dZ(TU-ymFG)SQ6ZjJBP-uU-26zYvJjiAiDu45=5+#ZWa8O>yw3*D{(tdK zdH?cGdH?4-<^8|jDewPEgLl*A0P}xBihuG-N)gTX_4_SI9sfcLgwOn~tl9Q|f1dQz z=|TQ4Z+!}p&+B{R$Rv pUKvnhLjD3#PIv3+_ z)EAF*05NH&Lmf<*LD@4NL7iYtfq$dNAsOdl0F>?Rjo)EZ&SmF!bADiohfH(c`N{jh zjnJe4&f^G88SuD{(9}In^N2y!>#&a~gsZYHAtu $c)t?hDuQ*{v3xdy5A|TEKU;}}$c_)rOug&LOse50wfPd4j I*)Ly6k&B7j4$&>IRF3);G8U`QhC>= Ly=MIQ*MmtFkF> z>*AhTWDBlP@#JtrhAgiOCV$E~#CctI%L5U4Ss%=V$fc$|j|{BOCqiV@v>AQYBePTp z@xUn^KK6bcm<;D3`TU`0M4}k_n#2vMN@9Jm5hfuK*2Z%-Csf3|RhE;19`wSuG+HRO z6FebPwQBc@-n!Zdn^i(O&3G7>A2a?Zea`quED>$`+_pcXdm%w0DSs~{38mqMB$f2M zkffE07m{R>^FlMLgmgMRFLYbAjD9YQm`-TokctnQ`9ya?Gn1q|(99|U2Q+g@$^V>? zN=Kd3^FCk4;y`1%9!Ve-zoW=RcRGqjQXWT9O2FMHA}RTrg;65 3OnVO1RMke3YP(n1_;-Qt?lcOp4w~5=+N7NjeF7rkPh# z+MS+Px~~a4{w{q{M5nZ{NW~|u7)5tUD=tZSq!q6O9MXzSN`L<7j8;mDotQV8gSW`F zfoD9Dst-Kp7TfO5`9v=|(>-l`6 GCO?2h?L5pAK8tEvCGc)j5ErCV} zWZ?uFJ2L2fTobUe6)S#amJ1g-9YhyjyKi=)OePzMsOe6jkp!QgqJ3B@4a7C*XI7EA zOQCrR%5u4_wSOR#?fUkoN+BiCP?DNdZ_Z9l{H4OGg<~nLw}%l_w}RI76=Fw9@J;stO_<0 zzsw3cyA(|Sl#zY7hezq__uCXSiPP}NwczpsNx0xr^vb&6QcFzP9fNlSPGz%i{}H=O z5hQ*|fy95tCQ;L7)CcD^Z9${ZvD~Hl)xEBREP1ckgv+~AFx}C23w}ABl>a>qKpotf zF(3UYdw*(seSDMQJ2<(~<^`PISn}W7Oemo{_#y*>$IVAtxBB>19<_*17S$;m)Brho zhM(bh+6SWHxVi1)5|*I-zAgdzIfOX@$@L|_dPq_I?6#!|M(G_m6}OF9!cj}qA{4iD z4dRDBwK*Y!5R~45K}ecu8ib^la34GIOSFrX^nVidCyHB2{$$!u^X~DB9!^B{C8u<5 zbQR7t(243l&ZxCAmB+Gu+t>Up(mp=JqRpCiIP&qVT|xqf&7qa$0hBajr+WjI4liYr zS;5Uy{*frP>1e9-nDsjJh|R2Q%3<~pvB@whiu5QO Rk17i+Iw>fucVz_> zsV~Zx1@ HG4LR1sNtOyol{;Uf?3 z6^Pa8anJ;gV>9TXPb3B%;o({|ZSYQc_ &PP&6$A9-I zItjQQMI n>- p@moy zo@k+ymNz=(m6Ud;=#@T~hvN{}BS{MBcq2t80Z*ieB<6(_sU$p*qLP;PSvV!5$tilB z?>%MAcIz}`BI$UbHK_#r(3(zS-hXIKEeW5rCX|+EI%k%co~P)ge&`9kc c?7a zOM3W=R8{=fw`P;(D?DMCgyVe0Doy2rS;7THErI;e#3D&OPbgn9vq?s;HGiFy^jU-l zN%X)IktDTxCYOvVr7*R2zf7$q_|7!7#NODC=yhNxR1$u3Ka#0_I;E6|LLJM!Sm7Q! z7MW -sxqSQb|ypjAg-AI6@P{ zSn~+Yk;f`~QdYFchMqjq*njGO&dqO)BmyC@^@<4Gx>oEWn%rxY$C*57kC6tY6ynVj zLOo?PAw}<{tI9~%@h*roc|zI*vL4N!luSF_w_~5jO!KT*q|^ XPw|>mV& uGalA?o{xuxwQ*0nbYI*F93Z(eaq%rK+Z1)UN}(I_>u zv`um;tV+-z(xTfv4^6(-F*i|b^EV T} z!_ns;H9tb!J1b6J$IJq909n8Q$;WT?0wfc-r3;X(;>J6tT)-ABK$A*Goq-n!cvJgG z`k!%q&%_`N&oi@$?004!33;8FQ*@s*GfBteoKQ+diBt48U)wKa$d7RyjwX?g&zT4% z;C3b|iFuxhR(}%CXCjl9|5>w2NT*ZtLU)7>@!XF CXpSE )6 zVqQmbO2X$zCTV$`nNliBoSL_}r$ZWpoiic{m7-lB7v0>>2}Q05;f$sN&v+U%F-W7^ zn%P9|wq_m)bz3v1=yo(SNvGR7p_Gaer`Byv#C|Uy>7QMEpQCuB<#{xxMEs9tlb{#U z%#!g%ntxAv9!V2R)fb2uJH96nEYk7=l2IaFKypdY2S{GYcmT;JJ^PomQnh|QBKk-N zQYJ6}nW?1Z2Nqh1ID>^yf*xTZmyBCjD5d8cPPrwg@u_*Ozi7;IC4ruXZ<0(RyCcaV zArB<^M0YxpMLK?FrjvrgCgn}Uv_jMs l7IFqQgKabMWm+vfr=HAY0!y0XRu}x ze<8bI6LA^)1fR+x_L)z5OW0>>-W$fl@knGL{RK) KI5li z>3<8M^elbhmX4)g;uJOJxkM scs8c0CJ`1YFMpt!UTwLqzYhrjUvQI^mR_4?3Zj zjvIP|R%F9JVHMf-Pq?ID{?l&f5zT)^AsO>ub4t+s*YpxH|I4&uoBx_sZ1Z1p(MO0C zbG=6N))7+{3DHT+KSrHidQBvuX{HP0;(tyzT_BW@<)<^>Gna@Aq!*oTZ0(+Tq!tJ) z#L|rh7LMtK1PixB>~JBJKri!`+Nw8V5WZrNis`K>rDt?&cIlYgnpI>&TT@BP#G-GI zJy14yoVg)ycRzDO-TuJ;Kc7Y-zW>thoPE!V5fBymQ&uZZZf^&ely*I-w2`L6e}5+Z z$M&g7t)0{h%-1JCCrGa!>s?hghbK~1X;PH68LS=qJkd66)!E}|lIvHen5M^Wx`hW1 zX%h53FbkhsuaCM*g5QtnEUgqe2uVgY)lP2l)a%hjI!&dWa9s?mT{BXnSCIZ^s!dml zB9>IiwPV8M20ag#DnC6oL8UhiWq-9j43SrDjyBX)WGu>ohf{_^r^_v+-*C<9#(~+Q z=-V98ZiY77mnxJHOSP_~9IoNo0kRiXwFi7iM*BxS61Heib(d{>>bpLOziDwV|GKA) zmD{IUU%~eSRu^qr8XkT@2EyHWYzAC!B2uV{!8pPX-YoTU=_Xq>S2umoe}6t0taN=F z)d^0_=8j#)7Spn6S8sILjX9YW477_f86odWS{1w}s0`I;zTQxSmh0V-05IhWa^4k#>>v#F*7FHDe$6OR|39%ywHuiD zrQ91#9MkI*CT0ou4Qq<28b`W4#lkSn4rAh%aKFJ>nk^y<%f@9TQDBCq#mvEIwRKIJ zBANH7=p@(iuc*nbrhm-m7sC;=$nS?Eb)cebi!{8|Sd!$#Zee43)Y6RIRs>TD+*Y)b zjM`TGI?^+moVInNLD_g{Qi;bu6U$@Ub1!lvaoW$O4&>s!j=AHd@{hO0r_+SCeIQ{} zuV6|+)QhM?q#RxcEE8G4A+A `5~a_L5DjDvjp+t`V_kQ1<*qN5tm}9}%AW>KIRN({Ek6 z)lKUbWB BKftAhb4?1o)g-PXc_{(2w~r_B4AW zRaw}iz+9;DsDGwtYk^ue2kRc}jk^s^`>nfiI0fZ;bN75CBO7RO;-a>8i12s OkYgpJ<|951T62%ZZJ D<19#P6qw)3e8KYx?m3~a&=VzU`l8V^H-h0x*$ zJ<#Xm?87D_aaD%rm|z*-A%xOCqq;3-I%BH-^bHq`hz>oa8KV_dYgP