home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
BBS_UTIL
/
DOORM10.ZIP
/
DOORMAN.DOC
< prev
next >
Wrap
Text File
|
1994-02-10
|
30KB
|
629 lines
┌───────────────────────────────────┐
│ ╒═════════════════════════════╕ │▒▒
│ │ DoorMan │ │▒▒
│ │ Version 1.0 │ │▒▒
│ │ ───────────────────────── │ │▒▒
│ │ (c)1993,94 Alien Archives! │ │▒▒
│ │ All Rights Reserved │ │▒▒
│ ╘═════════════════════════════╛ │▒▒
└───────────────────────────────────┘▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
February 10, 1994
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ Introduction ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
The purpose of DoorMan is to give you control over who can access your
door programs, and when. No doubt you have come across users who, for
whatever reason, are constantly dropping carrier in door programs, and
then there is the door program all the users love that refuses to send
the user back to the BBS when their time has expired. Well, DoorMan is
here to handle both of these, and more!
The program will read the necessary information from its configuration
file, and your BBS "drop" files. (The "drop" files referred to in this
document are files that your BBS creates to provide your door programs
with information on users, and your port set up. Support for a number
of different drop file formats is included in DoorMan.)
Although the intended purpose of DoorMan is for controlling the access
to programs you run it's also very well suited for displaying messages
of any kind to your users. You might want to use DoorMan to display a
message to users encouraging them to contribute to your board in order
to help you get more programs registered. DoorMan has the ability to
display a different message for each door you run, so you may want to
use the program to display a list of users who have contributed to the
registration of each door program individually.
DoorMan currently supports COM1 - COM4 (including non-standard IRQs);
baud rates to 115,200; and most popular drop files. (The use of FOSSIL
drivers is supported, but not necessary.)
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ What it does ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
DoorMan has two modes - "IN" and "OUT". You run DoorMan with the "IN"
parameter prior to executing a door program, and you run DoorMan with
the "OUT" parameter after the door program terminates, but before the
user is returned to the BBS. In essence, DoorMan checks your users in
and out of door programs.
When operated in the "IN" mode DoorMan will "check-in" the user, and
verify that the user is not in the lockout list. This is a listing of
users who have previously dropped carrier while in the door, or users
whose name you have added manually to the lockout list. If the user is
not in the lockout list, DoorMan will then check to see if the user's
remaining time is sufficient to enter the door. If the user's name is
found in the lockout list, or if the user does not have enough remain-
ing time, then DoorMan will display an appropriate message to the user
and deny access to the door. (This is done via an ERRORLEVEL exit that
you trap in your batch file.) If everything is okay then DoorMan will
terminate without the user knowing it ever ran.
When operated in the "OUT" mode DoorMan will check the user out of
the door program. DoorMan will do a carrier test, and if the user has
dropped carrier, the user name will be added to the lockout list. This
action can be controlled further using the user's security level which
gives you the ability to allow users with a set security level to drop
carrier and NOT be locked out of the door in future. (You can also use
an ERRORLEVEL trap in your batch file to do such things as send a user
a message when they drop carrier.)
DoorMan will perform a "self-test" each time it is run to ensure there
has been no corruption of the program file. Should the self-test fail,
the program will terminate and log this information to the error log.
You do not need to have an ANSI driver loaded locally for DoorMan, and
DoorMan will use its own ANSI detection routine to determine whether
the remote user has ANSI capabilities or not.
The program can be operated with, or without a FOSSIL driver loaded.
DoorMan returns ERRORLEVELS as follows:
255 = unspecified error (error code will be specified)
110 = FOSSIL initialization failure - FOSSIL not loaded
109 = FOSSIL initialization failure - invalid FOSSIL baud rate
105-108 = invalid port data specified (error will be specified)
104 = mode not specified (IN or OUT)
103 = invalid mode specified (must be IN or OUT)
102 = configuration file (DoorMan.Cfg) not found
101 = drop file not found
100 = unknown type of drop file
99-95 = fatal errors (program will terminate with explanation)
80-4 = operating error (error code will be specified)
3 = user denied access due to remaining time
2 = user found in lockout list
1 = user dropped carrier
0 = normal program termination
If an error occurs, DoorMan will display the specific error and record
it in an error log so that it can be easily identified and corrected.
Note: Termination with an ERRORLEVEL of 3, 2, 1, or 0 does not mean an
error has occurred. These are here so that they can be trapped,
and you can take the appropriate action in your BATch files. The
FOSSIL errors are only applicable when using a FOSSIL driver.
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ What it needs ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
The program will operate on an IBM (or compatible) PC with an 80286 or
higher CPU; DOS v3.0 or higher; and approximately 94,000 bytes of free
RAM. This is a text mode application, so graphics capabilities are not
required. The local display will be in colour if your monitor supports
it, otherwise, the local display will be in black and white.
Included in the DoorMan v1.0 archive is the file DOORM386.EXE. This is
an executable version of DoorMan optimized for use on systems with the
80386 (or higher) processor. This version requires less memory to run,
and executes a little faster. You may leave the file name as it is, or
rename this file to DOORMAN.EXE. You must, of course, have an 80386 or
higher to use this version of DoorMan.
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ Command line options ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
There are only two; IN and OUT (case insensitive). This tells DoorMan
what mode to operate in, and you must specify one or the other. (There
is no need to include a leading character, such as "-", or "/", before
the command line option, but either of these may be included.)
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ Configuration file settings ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
The configuration file MUST be named DoorMan.Cfg. This file is search-
ed for in the following order: first in the current directory; second
in the directory where the EXE is located; and finally the directories
that are listed in your DOS PATH statement. If you put the program and
the configuration file in a directory located in your PATH you will be
able to run the program from any directory on your system.
Only the first 19 lines of the configuration file are read, so you are
free to include any comments you like below this point (as was done in
the sample configuration file that came in this archive). Each setting
should begin in the leftmost column of the file (ie no leading spaces,
or other characters). In some cases, if an error has been made in the
configuration file, DoorMan will assign a default value to the setting
(as indicated below), but this is not always possible.
The configuration file is a plain ASCII text file and the order of the
setting DOES matter. Setting one must be on line one, setting two must
be on line two, etcetera. Do NOT include any comments in the first 19
lines of the file.
The configuration file settings are as follows:
Line 1 -- No Default
This is the drop file you want DoorMan to read from. It must be
in the current directory when the program is run, or you can in-
clude a full path/filename here. Currently, DoorMan supports any
of the following drop files:
CALLINFO.BBS
CHAIN.TXT
DOOR.SYS
DORINFO1.DEF
SFDOORS.DAT
If your BBS software does not support one of these formats, send
details on the file format you require, and every effort will be
made to include it in any future releases. Note: Most testing of
DoorMan was done using DORINFO1.DEF, and as such, if this format
is available to you, it is the best choice.
Line 2 -- Default: DoorMan.Bad (in the current directory)
This is the lockout file. You shouldn't include a path with this
filename unless you want to use a "global" lockout list. If you
just specify a filename here, DoorMan will create and/or update
this file as needed, in the current directory. This allows each
door to maintain a separate list of users who are locked out. If
a full path is specified, then once a user is added to the lock-
out list, access will be denied to that user for ALL doors.
Line 3 -- Default: DoorMan.Err (in the current directory)
This is the file where DoorMan will record any program errors it
has. You should specify a full path for this file since DoorMan
will include directory information in the log and this will show
you where the error occurred. Hopefully, you will never see this
file!
Line 4 -- Default: DoorMan.Log (in the current directory)
This is the log file that DoorMan will write to. You should not
include a path with this filename unless you want DoorMan to use
a "global" log file. Each time a user is given, or denied access
to a door, it will be recorded in this file. By just specifying
a file name (without any path information) DoorMan will write to
this file in the current directory. This will allow each door to
have its own log file of activity. You can use these logs to see
which doors are being used the most, and which ones have little
activity. (DoorMan will also record any dropped carriers in this
log, as well as in the main BBS log file.)
Line 5 -- Default: DoorMan.Bbs (in the current directory)
This is your main BBS log file. Enter the full path/filename to
your BBS log file. Any time a user drops carrier it will be log-
ged here (and in the individual log file). By recording carrier
drops here, it will save you having to look through the separate
logs to see if any users have dropped carrier. (DoorMan will use
the style of Maximus-CBCS when writing to this log. If this will
be a problem for your system, you can specify any file you like
and DoorMan will use it instead of your BBS log file.)
Line 6 -- No Default
This is the name of your BBS. This entry must match EXACTLY with
the name you provided for registration. (Prior to registration,
you can put any name you like here. The BBS name is displayed to
the user, but only after the program has been registered.)
Line 7 -- No Default
This is your first name. The same applies here as in Line 6 for
registered versions of the program in that this entry must match
exactly with the name you provided for registration. (Your name
will NOT be displayed to the user whether you have registered or
not.)
Line 8 -- No Default
This is your second name. (See Line 7 for further details.)
Line 9 -- Default: 00000000
This is your registration number. Until the program is register-
ed, this should be left at 00000000.
+ Line 10 -- Default: 3
This is the size of message you would like to use. If a user has
been found in the lockout list, or if their remaining time isn't
sufficient to enter a door, then a message is displayed. You can
select between three different sizes of display for this. If you
want to display a small message, use 1 for this setting (4 lines
are displayed); for a medium display, use 2 (8 lines); and for a
large display use 3 (15 lines) for this setting. Note: The more
there is to display, the longer it will take to transmit to the
remote user. This means, the smaller the display, the faster it
can be transmitted to the user.
Line 11 -- Default: 219 (which is the "█" character)
This is the ASCII character to use for the display border. Enter
the character CODE you would like to use, and NOT the character.
The message that is shown to the user is enclosed in a "box" and
this is the character that will be used as the border in drawing
the box. Valid characters are those represented by ASCII 33, to
ASCII 254. Note: When selecting the character to use here, keep
in mind that some characters take longer to display than others.
The internal time adjustments made by DoorMan are based on ASCII
character 219 which is one of the characters that takes a little
longer to display.
+ Line 12 -- Default: 10 (seconds)
This is the delay that comes at the end of the message (prior to
the user being returned to the BBS). This value must be set high
enough to allow the user to read the message. The setting is for
the number of seconds you want the message to show for AFTER the
display has completed on the remote end, but before the user is
returned to the BBS. This setting will accept any number from 0
to 60, but remember that this is the length of the delay after a
message has finished displaying. The message will come up on the
local screen much faster than it will on the remote side, unless
the user is above 9600 baud. (There are internal adjustments in-
cluded in DoorMan to compensate for various baud rates, and also
to compensate for users with and without graphics enabled.)
+ Line 13 -- Default: Internal Message
This is the file containing the message you would like displayed
to users who are found in the lockout list. DoorMan contains its
own "canned" messages which will be used by default if this file
is not found. This should be a full path/filename unless you are
going to use individual files for each door (ie the file will be
found in the current directory when DoorMan executes). Depending
on the display size you have selected (see Line 10 above), this
file can contain 4 lines of text (Line 10 set to 1), 8 lines of
of text (Line 10 set to 2), or 15 lines of text (Line 10 set to
3). Each line of text is limited to a maximum of 60 characters.
The setting of Line 10 will determine how many lines are allowed
for display purposes, but more lines can be included in the file
if you like (they just won't be displayed).
+ Line 14 -- Default: Internal Message
This is the file containing the message you would like displayed
to users who are denied access to the door because their remain-
ing time is too short. (See Line 13 for further details.)
+ Line 15 -- Default: 999
This is the minimum security level (as recorded in the drop file
being used) a user must have to NOT be added to the lockout list
if they drop carrier. If the user's security level is equal to,
or greater than this setting, they will NOT be added to the list
even if they drop carrier. If the user drops carrier, it will be
recorded in the BBS log file, along with the fact that the user
was not locked out.
+ Line 16 -- Default: 0 (minutes)
This is the number of minutes a user must have remaining (as re-
corded in the drop file being used) in order to be given access
to the door program. If the user's time remaining is equal to or
less than this setting, they will NOT get access to the door.
Line 17 -- Default: 0 (standard IRQ or value passed from FOSSIL)
This specifies which interrupt to use for the port selected. For
COM1 & COM3 the default interrupt that will be used is IRQ4, and
for COM2 & COM4 the default that will be used is IRQ3. If you're
using a port with a non-standard IRQ, use this option to specify
which IRQ is to be used. Note: You should be very careful before
you override the default values here, as you may cause problems
with other devices in your system.
The following lists the default interrupts used:
COM Base Address IRQ (Default)
1 3F8 hex 4
2 2F8 hex 3
3 3E8 hex 4
4 2E8 hex 3
Valid values are 0 (use IRQ default for Port) to 15.
(* See the note later in this section regarding port settings.)
Line 18 -- Default: 0 (no FOSSIL)
This specifies whether or not you are using a FOSSIL driver.
Valid values are 0 (no FOSSIL), or 1 (using FOSSIL).
(* See the note later in this section regarding port settings.)
Line 19 -- Default: 0 (none)
This specifies the type of handshake you want to use between the
CPU and the port (modem). You can select NONE (0), XON/XOFF (1),
CTS/RTS (2), or XON/XOFF and CTS/RTS (3).
Valid values are 0 to 3.
(* See the note later in this section regarding port settings.)
Note: The value for any settings that relate to the COM port which are
also given by either the drop file, or the FOSSIL driver (if one
is loaded), will be taken over the settings you give in the con-
figuration file. This ensures that no conflicts are created, and
that the values used to initialize the COM port are not altered.
The settings above with a plus sign (+) to the left of the line number
are "registered only" settings. Until DoorMan is registered, you won't
be able to change these settings. Although this will limit the extent
to which you can modify the program's behaviour DoorMan is still fully
functional. (You will not be able to "fine tune", or customize some of
the features, but that is the extent of the limitations until you have
registered the program.)
The following is an example of a batch file that would run DoorMan for
a program named SOMEDOOR in the directory DOOR. (In this example, your
main BBS directory would be BBS, and DoorMan is located in your PATH.)
@echo off
cd \door
doorman in
if errorlevel 2 goto quit
somedoor
doorman out
:quit
cd \bbs
exit
The ERRORLEVEL trap is used to bypass running the actual door program,
and return the user to the BBS. You could add other things in here if
you wanted, including a separate check for ERRORLEVEL 3 (insufficient
time remaining), or ERRORLEVEL 1 (after running DOORMAN OUT, to see if
the user dropped carrier). Note: If you want users with insufficient
time to simply be returned to the BBS, the above example is all that's
needed. (Please see your DOS manual for more information on ERRORLEVEL
trapping, and BATch files.)
Note: In addition to the configuration file, DoorMan also needs a key
file (DoorMan.Key). This file *MUST* be placed in the same dir-
ectory that the executable file (DoorMan.Exe) is in, or DoorMan
will NOT run.
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ What you should have received ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
The following files should have been included in the "AV" stamped file
DOORM10.ZIP you received:
DOORM386.EXE -- executable optimized for 386/486 CPUs
DOORMAN.CFG -- example configuration file
DOORMAN.DOC -- this file
DOORMAN.EXE -- the basic executable
DOORMAN.HST -- a brief history of versions
DOORMAN.KEY -- control file (do NOT delete)
DOORMAN.PRN -- documentation formatted for printing
FILE_ID.DIZ -- sample description
PACKING.LST -- file list (with size/time details)
README.1ST -- any last minute updates
REGISTER.FRM -- registration form
VENDOR.DOC -- information on distribution
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ License ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
DoorMan is distributed as Shareware. Both the program and its related
files are copyrighted, and NOT in the public domain. This is NOT free
software. Ownership is retained by the author. You are *NOT* permitted
to reverse engineer, or decompile this program, or the like.
Under the Shareware concept you are permitted to evaluate software for
a period of time to determine its usefulness to you. This also offers
you a chance to test the software and ensure it will operate as stated
on your computer. If you continue to use the software after this eval-
uation period, then you MUST pay for it or remove it from your system.
You are granted a license to use this software for evaluation purposes
for a period of 30 (thirty) days. After 30 days you must either remove
the software from your system, or send in the registration fee for the
program. The registration fee for DoorMan is $15.00 for non commercial
users, and $25.00 for commercial users. This registration applies for
each copy of the program used (ie registration applies to each copy of
the file DOORMAN.EXE/DOORM386.EXE you use on your system).
For the purpose of this license, commercial includes any use in a "for
profit" organization (whether or not a profit is being made), and also
includes any governmental agency or educational institution. (The fees
stated are in Canadian dollars for Canadian users and U.S. dollars for
all others.)
Registration is a one time thing. By registering the program now, you
are entitled to use any further versions of the program without having
to pay any additional registration fees. (This remains true even if in
the future "unlimited updates" are not included in the initial regist-
ration fee paid.)
This license applies only to version 1.0 of DoorMan and will remain in
effect for one (1) year from the date the program is released or until
another version is released. Future versions (if any) may not contain
the same license as stated here.
Although some of the features of DoorMan are restricted prior to being
registered, the program is not "crippled" in any way, and there are no
"surprises" (such as "drop dead dates", etc.) in DoorMan. The limitat-
ions of the unregistered version are all stated in this file. Regist-
ration will give you a few added features and controls, and gives you
the right to continue using the program LEGALLY after the initial 30
day evaluation period.
You are encouraged to share this program with your friends, and anyone
else you think might find the program beneficial. Please make sure you
only pass along the complete set of files. (It would be unfair to give
anyone an incomplete package, including all the documentation and sup-
port files.)
Refer to the REGISTER.FRM file for details on how to register, and the
bonus programs you could receive with your registration.
Please, help support the Shareware concept by registering your copy of
this program. Remember that even the software used to create this pro-
gram cost the author hundreds of dollars, not to mention the time that
was spent developing and testing this software. Your support is needed
to continue the development of this, and other software programs.
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ Warranty ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
THERE IS NONE WHATSOEVER. Every effort has been made to ensure no harm
will be caused by this program, however, by using it the risk is yours
entirely. The program has been found to operate as stated during test-
ing (by the author, and beta testers), however, there is NO GUARANTEE
that it will work on your system. In no event will the author assume
ANY responsibility for any damages of any kind as a result of your use
of this program.
THIS SOFTWARE IS SUPPLIED "AS IS". THERE ARE NO WARRANTIES OF ANY KIND
EXPRESS OR IMPLIED, INCLUDING THOSE OF MERCHANTABILITY, PERFORMANCE OR
FITNESS FOR A PARTICULAR PURPOSE. IN *NO* EVENT WILL ALIEN ARCHIVES!,
ITS OWNERS, THE AUTHOR, OR ANY AFFILIATES BE LIABLE FOR DIRECT, INCID-
ENTAL, INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES (INCLUDING DAMAGES
FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, LOSS OF DATA AND THE LIKE)
RESULTING FROM ANY DEFECT IN THIS SOFTWARE OR ITS DOCUMENTATION OR
ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE OR ITS
DOCUMENTATION EVEN IF THE AFOREMENTIONED HAS BEEN ADVISED OF THE POSS-
IBILITY OF SUCH DAMAGE.
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ Miscellaneous ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
The program was written in Visual Basic for MS-DOS v1.00 (Professional
Edition), and was written on a 486/33C IBM compatible computer operat-
ing under MS-DOS 5.0.
Trade names mentioned in this document are the property of their resp-
ective owners.
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ Contacting the author ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
The author can be contacted via one of the following:
-- BBS : Alien Archives! (905)949-9437 -- HST(16.8)/v32bis/8,N,1
-- FidoNet: 1:259/501
-- Mail : Alien Archives!
3-2325 Hurontario Street, Suite 173
Mississauga, Ontario L5A 2E8
Canada
Attn: Mark Allan
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ Distribution ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛
The program may be freely distributed *PROVIDED* it is distributed the
way it was released, and with all files intact. Please do NOT convert
the distribution archive to another format. Version 2.04g or PKZIP was
used to create the original archive (DOORM10.ZIP), and included an -AV
stamp from Alien Archives!. This ensures that the files remain intact,
and that all files are present in the archive.
You may archive the original ZIP file "inside" an archive of another
format if you prefer, but the original file should remain intact.
See the included VENDOR.DOC file for complete details on the terms and
conditions for distributing this software.
╒════════════════════════════════════════════════════════════════════════╕
│▒▒▒ End of Document ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
╘════════════════════════════════════════════════════════════════════════╛