-----+++++--+++++++++-----+++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--++-+--+-+--++-+-++-+-++-+-+-+--+--+-+--+++-------+++++--+++++++++-----+++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+--++-+-++-+-++-+-+-+-++--+-+--+-+-------+++++---++-+++++-----+++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+--++-+-++-+-++-+-+-+--+--+-+--+-+-------+++++---++++++++-----+++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+--++-+-++-+-++-+-+-+--+--+-+--+-+-+-----+++++---++++++++-----+++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+--++-+-++-+-++-+-+-+-++--+-+--+-+-++++++-----++---------+++++-----++-----+++---++++++++++--++--+--++++--++---+-+-++++++-++--++-+--+++--++--+-+-+-+-++-++-++-+-++--+-+--+-+--+-+-+-++-++-+-++-+-+-+++++-----++---------+++++-----++-----+++---++++++++++--++--+--++++--++---+-+-++++++-++--++-+--+++--++--+-+-+-+-++-++-++-+-++--+-+--+-+--+-+-+-+--++-+-++-+-+------+++++--+++++++++-----+++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+--++-+-++-+-++-+-+-+-++--+-+--+-+-+-----++++----++++++++-----+++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+---+-+-++-+-++-+-+-+-++--+-+--+-+-++++++-----++---------+++++-----++-----+++---++++++++++--++--+--++++--++---+-+-++++++-++--++-+--+++--++--+-+-+-+-++-++-++-+-++--+-+-++-+--+-+-+-+--++-+-++-+-+------+++++--+++++++++----++++++--+++++---+++----------++--++-++----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+--++-+-+--+-++-+-+-+-++--+-+--+-+-++++++-----++---------+++++-----++-----+++---++++++++++--++--+--++++--++---+-+-++++++-++--++-+--+++--++--+-+-+-+-++-++-++-+-++--+-+--+-+--+-+-+-+--++-+-++-+-+------+++++--+++++++++-----++++++-+++++---+++----------++--++-+-----++--+++-+-+------+--++--+-++---++--++-+-+-+-+--+--+--+-+--++-+-++-+-++-+-+-+-++--+-+--+-+-+