1101111001111101101010110111001010010001010010111101110100111011011100110101111000001011001101011111000001000010110111100101101001100010100010110010010110000000110100100011001101001001110011110101001000110001101110001101010001011011110001010110000011010100101101101100111110011010101100011011111110100000111110000010010011101111110000111110110110000100101100011011001000110101000000000000111110101000 0111100000011101000011111001001100000000100100011101110011010011100110110100000101101101110111111010110111111010010001101010011001111000011000000111000010100000110100111000100101000110001010001011101111101000101010000100011011111111001010010111011000101001101100101101001011100110001100110010110100001010110010111011100110101100110010100011001010010010000011110111110111110011100111010111111010101011 1100010011010010111010111110111001011010101010110110100010010111010001000001010001111111111100001001011100100000110101010011010111101101100111001001000110011001001001000111101100101100011111001011101111101100000000101110010100110011000101000001110001111010011110000000011100010101111110000111111001110001000100011011010001111100010010100100110010011110001001111111011010111010011110000100101011010111 0110110011110011111100010000100111010101111111001111001111111011101110010100100000010000001001001101100100010110000101101000000101101111100011001010101000011111110000000010110011000101000000101011010000110110110010001101110000101100001001011010010001000011101111111111111000100110010010110010011000011110100010110010011100101001111111011011001000101110011100100111110101000010000010111110101100101011 1011000000000010110001101100010111110100111101001010011111110011111110010001111000010000100101101010100001010000101001001111000101010010111010010111110100110101010000011001000110110101110011010011001011100111111100010001001111101010100001011000000001011001110000011000110101000001111001110001000100100110101101111010001111000110101111011000001010110110110100000000100101101100000111110001010010000001 1000001101101101000101000010000010101110011101111010101000001101110101001001000000101011011111101011100011100111100010110111100100010111111100001101001101010011000000011101000001001100110010100111111111001101101100011001011100100110000010110011000111101111111110001111000111111100100000011010101101110011101000000110000000011001111101010010001100100101001010100100110011001110110110001111000001101011 1010000001110111101110111111100001011001010011100011001011010110110001011110110011110100111101100011010011010111000111011000001010100011110111111010110000111011100110110110110011110011011011011110100111010100011101110001000111100000010100011010101101001110111110110000100000111111000110011100010100011100011100100100111011111110001100110111010110001011100010010111100001111010110111010001000111010100 1001000101011011011011101110111000010001001101100101010011101010101000100100010100010000101110100100000000001110110101010111000010111111101011011110011111111110001101101011000111100010011000010110100100111110001010100100110110000110100110100010100100111011111010010101001000010001100100111010111100110000010101010100001000001001000001100000000101111011101111101110000001111111110110000100010000000111 1011010010000001111010101111100111111111110101000010111010011001000010110000011100100101100100010110101010010011000111000000000011101011101111101000111111100110100101011100101100011000100110101011011011100011100001010110101001001111000110011011001110001110111010100001100011110101101011110111000010101110101001110101111111000000111101011100101011011001110110011010110011010100000100000001000001110100 1001111110101011101100010110001110000011010101101101000111011000101000001110011001100101001100111010111000000100011100001011001111101011000010000101100011110011101000001011110000101001000111110001100011011111111100111010101010010001101110111100110110000000011011110101011111110110011110111111100111101011011101000110100010000110111110011100110101110001101101011110100101100100001100111111101111100010 0101101101010100011011100010111111000001000011101010101001001000000110100011111110101100101010110101000110100011010000000000010101011001010100110101011110110111101001011101010101110111011000110110100101111110110001110010000010101010111000001001001011110000000111101010100000101101011111010001001110101011001110000000100001010110010101110111111010001000010000100100100100001011110011101111101000000100 0111101100101111100000111011001111011101110000011010001010100010001000000111100100101011100011001010110011110101111001110001001000101001001110011001001101001111111101101110101100000111010110010101011101100010001001001000101000111011110101110100101110011001001000110011110000110111001000110001111001111110001101110110000101110110101110110101111010100010000111011001001110110111111010110001110101111110 1110011101111100111000100000010011110001110000100111110111001000111110001110001110111011010010100110000100110010111101010000100111100100110000110000110101001101111000010000001010110001101010001100100111011110000011110000110100001001011001001111111111111000110010110000000000000000010100010110100110000101111010001000110001111110110001111101010001010111111111111101001001100010010110000000110101010000 1111100000101100101001101001011011110010010001011111010110010101101110001000100001110101110110010001000101001100110111111000100110000111100010100001101000101010101100001010010001001101101011000110010001011010001001011010010010100111110100001110101011011101000100000010100101001010111001101011110000011000001100101000011011011111110000110101100000100010010110100100000100010111110111010001101011010010 1010111000111010111010110000010011110110011010111100000000000010000000100111000011011101000100111110100101001010101110110110110111111000011001101100101010010001110111111011011001110100110101111000000111000111001010110011101011001101100111100100001000011010010111011100101101011011001101000001110100010001001001101100010111001010101100011100111111000101101111011010111100001101010010000110001101011101 0101010010111111101001100111000110011000111000100101011010011001111101001101001111111000000111000010000111011111001111111100000000001110010000010111000010100001001111000000010111011110001101001110001011011010110100101111111100000011010001111011101110001001110110100110100111010000100001011111000100100101010111011101110100011100010010010011101011111011000110111010001011000000001000100000110101001110 0010011011010110010110010001110111100101001001011011011101110010101110100000101000100111001010110000010010111011001100110010111001101111111110011000100110011010111011010001110000101011101011101001110111101010111111111011101000001000101101001100010111101000010001000000110000000111011010001011001101110000111100011111010000000001101101111011000000000011101110101111010001001010000011110001010101001111 0010001111101000011111000101101001111101111110001010111010100011101001010111101110010111110100010101000001011111000111000110001000111110001110000010110000110000110010000110010100101101111100011011001010011011000111000001011011000110110101010101001101100101110111110101110010000101100100001010011011000100101010111111001001110000010111000011100000110000100010111010110000111010000110111101001110111111 0011000010001000001001101110110110000101110111001111001011000100100010101100110100100100100010010001011110101001111101110110111111001111100100110011010110010110000110101000000000110101000010100000101000100001111000011011000110110100101111100101011001011111101110111100001001110010000001110001010110001100110110000101001111011011010000010110011011000010100000010011110111001010011001100001110110010101 1001010010111100110101011111011000000000101101011110010100101110100000111110100110011010110110001110110110011111100011101001001011000111110110000001000101011000010000111010001010010101110100111100010110000011101000011110111011101110011010101101010100000000000010101011101100011100110000100101100001111001011011111101011101000101111100100011100010000001011101010111010111011001101101110001100110000011 1000100111110100110001000011101101000100100010011010110111100100111010111100011100110001101101000111010101110001101001111110111101011110010110100110001101010000010001111101010011011111010111011000111111010101111110111100111101001100011000110111011111000010001111111000001010011010000001110010111000000011001011101000101000100101100111011000110011001001110000001001010111001001111010010110011001101101 1011010001011010100011010010100000100110100111010100001101010111110101011001110111000011011100010110000001100010110000000001000110010111101010001110010101011000001000101011101111001001100000110110111111111001100001011111100001001011011011110010000101010011101010011000110110101000100110011110100011101111110101111110010100010111011010010011001110001000001000010010000011011010001000111101000101010010 0010111100000001111010101100111110001000011001001111010101011111010111011111101010001101111000011110111100111001101001010110000111101011101000100011000100101101100110100101010001000101111011010001011011100100000100001101011100010010001010010100110000011011010110010110100010010101110111010100101001100110101110011011110011001101001111010011101000000010100100000101100001100011011001010101011101101011 0111010101110010011011010001100111001110010010001111011011110100111101110101101101101011010100001010011101000101101000010010110110010000011000001100000000111000101111101110010011011101100101100101111111000011010000000001000010100000011110001011100111110110110110101101011110001010001100000001111111101101000010001100100011100001101011011100000100000101111000110001100100000010011100111001010000101001 1100111011010110011101001001111110011110001100010001101111010101110110010101011111000000110111110010000101100000111010001000001111100111000000000000010010101100010011111010001111011101011010001110100010011010110110011001000011000100101010101100010101000011010111100101011011001000011000111111010101111000100111011001011000011011001100000000111111111111010010011101010100010010010100110100100100001100 1000010000100010000110010001110001111011001100101100011100111011101001101110111110011001101101010100111101111100110101111000001100001111111001110001100101100100111010100110101111111001011110111110001000110000101011000000101001011000001010000010010100011111110111100100100101011101101111011010010010101011011101000000011010100001110100011010111000100110000000000010101000110000111010111001100010101101 0001101010011110011110010001100100110110110011010110111110010010111111001001000101000100100000000011110011010110010111101101010110001100011111001011011111101111101000100100100010111001010010110101101110100011011110100110010111100000101110001100100101110000011100110100101000111001001110111100100001100000010011011110100001010010000000110001110001001000110101111101011011100010011101111001000100110010 1101101111010001101010100000100101011001000100011101111010101101010111110001101101001101000001000011111110000101110111010011101000011001100100101010100101000111110101101010010010111001001101000110101010101101010001001011110000010011110110101100001100111000000101100010001110100101011000101010111010100011100101000101110101010100001010100110001101100101010110100001000110010100000011011111000011000110 0100001111110011101111000101000111111110110111100111101000011100010101000101011100101101001000010011001001000110010001011101111000000110111000011000010101101011010011001110111011010001001111011010111011110000001110000100011110001010001110011000101001011111011111111000101110010001101001100100011000000100100001001111110101101110010000001001010001100000001101100011111010000010110110001110000100111010 0011111111000000011000010101000010011110000100011101100100000110010110111111010010110100111011011010101001000111111011111010110000001100100101011111110001011001101101000010001011000110110000110110011110111111100111110101101101101110011010101000100000101010111101000111001100110101100010001100000110100111111100000010000011110001000111110111110110101111010011000100111110110101101101110110011110101000 0101001110101100101100011111101101111110111001000111011111100111011011111011010010111001001101000000000100010110011011111010011010100001101011110110110011100100110100000111101111000000101010010001010110110101000000111010000010001111101001111101000101110101101110001000000000001111101100110111010010100001101011000000100001100101100111100111111110110100111111110110011110000001001000011010001111111101 1110000110011010011101000011010100110011001001110110111100100010110111010110000000011010111001010101101011111010001011011100101110001001110011011100001100011100001010001001010000101011101000000110011000001010011000111011010000000110110000110100010100011011110111001100001111101100100000011100000001001000100101111111101001011001000111100111000010110011001101010101011110100001000110010010000111100001 0111110000111011000100011110100111111100001000010111001010111000111100000100111001101000000001101011000001101101000011001111011100111101001011101001001001111100100111110011010010011111111010000111111011100001001011000110100101110000100001100011110001001000111111110011110000000111010101010010100010010110001010001110110010111101111101101000110001111010100000101000110001011111001000110001010100111001 0010010001100001011010011111101010001001010111010000001101111110101000001010000001110101010001010100000010011010010110011011101001011000000011010011100111101000101001110100111010111110100100010000010011011001001111011100111000001000010100111000110001111111011001001011110001001010111111000110011100011010110010011010110111010010110001000110000000011010111010000000110101010110010100110101001000110111 0101110110001110000110000101010010101111110110111110100110011000110101111001011100010111011001010100011001011011110010111110101101100000110110101001110110000111010011010010011101010111101011111001000000111010101001011000101110001010011111010000101011000101101111100010000011001000000010101000101001011000110100001101111011011100001000110001000011111101010101110001011110000100111000001110010110110100 1011100011110001111001010011100011011101101101010010110111110010110001100111011111010100101001011101000011011100101110111111100110110000101111111001000110100101111001010111100110101100000011101110000110111011010100011100100001101000101110110110010111010010011000100101101110001111110100100010000011110011100010010010011011011010001010100110100100011010000010100110011111001110111111001111111000010000 0011110001101110100111101100111001101001100110100100101101111100001100111011010100011001110111000011000000111110100010111111101110010001111000110011000010001011111110011111111010100101100111100110011000101101010101011000111000110011001011001001010000100010100111111000001010100111011001110111111100111111000000001111101000011100000001011000001110111100110110000111001110001011100100100101000011110111 1011100001111011110110111100000001111110000010010100011111101111010111101111011000101000001010100001101100111001000100010111010111011111010000011111001000010011110000101011001101100001000100100110001011111100111111010000101010011011011011000010000101011100101100011101110001110000000110100111110010111100111001100001010101100000100001101110111011100110110110100100100011001011111011100010001111001011 1011101110101001100000010011101100101011001100000110110000111101011010110000111000000001101011001010001011000001110101010011011110101000001011011110011001111111111101111000111010010100101100111011000001101110110001101010111011010000010111100010000110100001110000001000010000011000000011010010110010101011111100110100110100100001101110011100000000011011011010010001111110000110000001111100011110011110 1010000101000100010100111010110001100010010000100101011111001000100000000001010101010101111011001011011101001100001100001110101001011001010101011100110001001100100100000001001011011111100011110111000111100000110110101101011110110100001000001001011101111100011101111011110111110010010110011110001010010011111110010001010001000001111101001110111100000001010110110011101111011110101100010010010110111100 1000010011001101100111010110101010000010101010110110011101110110110000100011110011110001100100010100010000100101001100000000111101001000000100010011001110010101001011110000100100010000101111101010110111001101100110010110111111101110101010011011100001101011100010110011100001100110001011110111110011111010110110100100011100000000001000100000000100001010001001001010000101100001001110001011011000100100 1000111001010000011000101100100100110011111101101101111100001000001110101101000110010000110110001101001110101001011111001111100110001111111100011100101101111110001101010000010101001010110110001001110111000011001011010101110010101110110101101100011000101000110111101001011001010110110001000110110001001100101111000111100101111011110111011100001010110100111011011010111100010001001000001001100001100101 0111001100111001111010001110010110000110010100000010001111100001111110110001110100110000000101000110110001000101011110100010001100111010111011110101011110011101110000000011110101100011001011100111110101000001011100011101001100101010001100010001011011100101011111101000010001010010011000110101111111000101011000100111000100100010001100000010110000000011101101111110000110111110000110100110111011110101 1110010111100101010010100001010111101001001001011100111110101101001010110011000010111011011011010010111101100111101100101101111011011001010001001101000100111100101100100000110111101001101011100001100100100000111100101111101111000011000101000011000111011100100110101100010000100101010110111100011100110000110100110011000011000010001111000011010001101010001100110001100000110111101111100110011110101000 0111101010001010001011111011111011101101100110111100101110000110011001100000101101110110010001111001101110010111000011111010100101100100110011110000111101011100000001000000011010010100011100000101011110000000101101110100010001110101001101100101101011010010110101001010011100010111101001000000101100000111100011010111000000111110010001011100000111111111110000110010100000011001110010010110110100001001 1001100111010011110001111010100111100001100010111110110111101011100101111000101100100101010100101000010110110100001010010001011101001101110000110010010110100010110000000100100110011111111101111010110110010010001101000100011100000101001111110110011000101001101000101010000000110111100101100100001010100111101101101100111101001110001111001010010001111101010100110110111101101010111010101000110011110111 1011001011001001100110111101010101000111000010010111010010110110010100000001000001100011101100010101011111110100000110011011110001111101111111111110011100001001111110011011001000101010011111010000001101010110000101111101001110100101100010101101010111111111111100001001111011110111110101011010100101101110110000100111010110111100001000100011110000110011010111000010110100100100110101101110100111000100 1111110101111101100010100011000010101100101000001001100110111011111010001000000100111011100010111000100011011001010100111100010100111110010000001000000010001001000000111111001000001110011000001110001011000111011011111101010100100010110000100010110100011000110100000010000111110110100111110101001011011000011010010111111110011010111110010101101000001000110011011100111101111011001111000000010000101010 1010110000000100110111001010110111010101111101110010000101001000000000010101101111010011111101100001011001111000010000010001011001100111010000101100001110101011110100111001101110000110101100111010011100111000110011011100010000000001001100000101111110101010010100111011110111110000101100001110100011111001001011010100100010001100000011111000111101010110000100101110110100001011011000011100011000110001 0100100000000010100010011000010010110010100100101111011011010101001010101100001000001110001001000000101011011010110010000010101010010001001011111000010101001000011010100011000111110111001000101011101001101001011101001010011101100100011000100101001000000000101000111010000100110011101000100100110000011001000011010011110001110101111111011101111010001010000111101110111001000100000101010111010110011111 0011101011100011101000000100111101010001101010101110111000110111110000111110101001011110001011010101100011110010011001110101001001000101100101010111001011101110010110010110011110010001001001101101011000010101101111011111101101001110001001000111111011011101110011110010000001010000001011100011011100000010010011110011101011100001110110011010110100111011110010111100000101001000100000000001101001011101 0010111110010000000000001111101000010100101011110101110111001001010100000110011011100101111100010110101000101001000010000100110011010111101101011011001110110110010110111100010101011100010110111100001010011100101111010001110101001111001010100111000100110001111001011000111111010011110111100001011101111011010010110001000101111100100011100000111001100010111111111101001000110010000111100010110010010011 0011010011100010011111001111100001011100011001011101011011010000111101000111000110011011100001011010000110010011011000101100110000101001010001111011100110001101001000100100110111111111000010001011010111011100110110010000011011110000011010101110011011011001000010011111100110011011101100011111111001101001011111011001101010001011111100100001111110011110110111000100011001000101010100101011110111100001 1110000111000010010110101101100110111100100100100000101100010100000110110100000001010010101001010101001100111010000110101111100111111110110011101000010000010110001000101100111001100100110110110101010100011111101111110010001000001011111010111011000011101011100011110001001011100100111011000011001001001100101000000001000110000100000110001100100110011111100110101001100001101010110111011011110011100000 0101010011111011111011000010101000100010000110010101000100000110100001101011101001110111010111010111010101000000101000100110001110111101100001011000100101001111000001111011111111010100000110010000111110100011000011000010010111000010111110010000010001111010100111110100111001010100100000111000001010100110000001100101100100011111000001001010010011000010111100011010111101110110100000110001100011000010 0100000101000001101010001100100001000111110010111100000101001000100110101101011100010001000100011000111000010001001101001001111010110010101000010111010111011011100000100011101111010100001110110001000110000000000101110101100110111101101001100000000111000111111101010011101010001111011101101010010011101111110001110000010001000111010110010011001100001111111000010000110001111000100010010101100000100011 0110110000101011000011001001111010011101100101101001111100110000111110010010101101111001100100010010011011101001010010011011001011000000010001100001111101001100101001100101110101111001111010000110100110111000000001100101011100001110100000001011010111010001011001000101110011100011001011101110000111100100111000000101011100010001101100001011001000001101011100110010011110010000110001100010010001001110 0111010000011011011001001010011101001101000010001000000010001100111100001010011111011111110101011010100010011101110011011101011101100100010110111110110011010000111110000000011111000001110101000011011100011010101001001101010000010010000010100000010100110010010001110111000000010110001010110101101100100010101001111001010001011110011100101100101001011000100011110110000101110010010010001110011111110011 0010101001000000000000001101100101000100111111000100000111001101100111100001111101101111110000100010010010111010111111101011111110010111101000011110111010101111010111110000000000100000010111100111000111101010000010110000111111000001111110000100100111100010010100100001111101110101001011000100100101110100010001001010100010010000000010001001100000000101101000000100111010100100101101101110100000101010 0110110101101110000011110011011100101111000110111101001111110110011010100111011110001010101100111010000001000110001100100011101000001010011100101010010010001110001110110101101011000110001010000111001011101100101010111001111001011000100001010000010111001010111101111111010011001011011011011011100110111000100001011111110111010001111001001100010111000011110001001000010111011010101101001011111111110000 1111100001110110100010100001101000100111110001101000100101111000001011100001101110111100100011101001011000111110011001001110110000110110010111110101110101010100101011001111110101001010010000000011111000100111001100001110000000110101110111111001101010111000110001101100111011011101101010001101001000001010011110110101010101011010111110011111101011001010011100011011001001010001110111110010000111101101 1110000011101011110010100110110000010000101110001011111111101011000001100110100111000010001011110100101010010100010100001100111000101111111111100100101100110111000000100100010001011101110111101010110111000110000111000000111100100011010000010010110000000101001110100111110000100001001101100011110111001111101010001001011110111111111111010001100100000101010110100100110110101110011100111000000111110101 1110111010110100000010101110111011111101100011101011110111100000000111110111100101010001011001100010111010110011001101111011100111101011111110000010111111001101001001111010110101101010000001001010010100011000000100101110000110101000011100011011100000110110011110100101110110010010110110100101101001100101101101000111000000101100010010111000101101010110100100101110000100001000010011001011010001011010 1110110110011110111100011110101000100111010001100101010001000100111010010100101111001001000100111011111000000100110001111100111111000011011110111101001010111010001000101011011110111000111101000011011010011001010011001111111001111001001001111101100011011101000110111101000100100110010010011111011011011000110100010000001011100001100111010110001111111000101111011011001111000001000000000010111000111100 1101001110100000111110010011010111110101111101001010101101111101001100100110010100101001111001110101100101001000101100000100101100100000100111111101110000010010101001111010011111011000011111000110110000000100001101100010001010001000100111111101110101000111011011001011100001110001010010000100000010011000110111001101011010011110001101100011110010110101011100010110111000110001110001000000000111100010 0001111110111100110110000100110110110011001000100100011011010011001100100001000001110001111001100001110001000101001110010001100110001110100110101100001001110110001110101110000101001011101000111100101001011001101100011111110001100101100000011000010010111110110111001111101010110101010001000010111110101011100111000001100010010110100011111111100011100001100000110011100101010111000101101110000111000000 0000111111110101000100110101010001001100101010001001110111100100100101100101011110000000010011100011000010010011101001110001011011011100110010000011000000001011101100100101110011011000110101101110010101100011101110000001010101000111110100011100100111101110110000101001100001100000001001000011011101011010001100011000101001001110000000001000010000001101110011110011001110011100001111111101110101111110 1111001111100100101100001011100101100110000001010100111001110011011111100101000001111111110000110101000101100101011001101011111110000111101100011111010011010000000111110110011000000111101100111001101100101110011001010011110110000111000011010110110010111010010010111000000100001010010100011101111011011010010110111000101100001000100100000011010010110110110001000101011001110111100101011100101110101110 0100100010000001010000101101011010000110011110101011100011010111110011111100010111011000100011001110001010011001110001100000101101000110000100110001001000000000100101101111101101100111101110101110010110111100011000110000011001110010001000110010010011101111000000111110000001101000000111100101001101000111111001001100000110111110100000001110111100001111100100000011100110100110011001111001000001110011 1110000101010111100000100100010111000110110101101110011000010001101110100101011111011001000101100110001001010101001001000101001011011000111110011011010101101111011111010001101011111001011101010100110101111110010000111101001000001000101111011101100101001100101010010111111101111000101100011000011010101101111100001001001111000000101111010001110000110111001010100100110111111111111101101001011010000000 1001101011000101110001001000010110011000100101111101110000101111000111110000101101011001010111100110111010001001010110000110010010110111100100010011011110110011011100101001101111010101001100101101100011100001010110011111000011100110101011001001000011011100111011010001011010000100000100001100110000110111111111100100011100111111011010101010000000010110001100111000001100011110110010011001011010000000 0111010111111100101001001001100101000100010000001101111000100011100111010011111010011100001101011000000001101011001110110011111100000001000000001111001001111111101000011101000010111111000111001100001111101010001101011010011010101100011110010110111110100101100111011010001001110100101010111010111101001110111011011110111100110001110110100001001101101100101101001110101001101101111010010010000111011010 0100110001101111010011100011111101001110001110110100001101111111000101101101000010101111001010100000111001110111100110000001111011111001001011000011011010100100010100100001011001100100110000011011111000100011110101000011110010010110011110100011010000000110110101101000000001100101000101101001110111110001100001101011000001010000100100000100000010111000101111001001111100000011010000101001000110111001 1101111100101111100101000001010010111101000110101001001000101101000111000011001101001010001001011100111111000101111110100010111001001000111011110101111001110100001011111100101111101100000011110001000100010000001011110000111100010001001000001100100110111100000011101110000110110010011110101010111001010011010110010110011001000000101110101010110001110110100100001110001100111100010001111001011001001000 1101000001110110111101000010110101000110110100001110001011101000011011011001000110110001101101011011000011001001001101001011010000011111110010110110110100110100001111001100001110011010000000111111111000111011000111010000000010010000110111011011111000011001110000111011101000111011011010101101110001110001001011001001000001101010001110001010011001010010000111000100100000001001101001100001010110010011 1001111011001011011011101011001010011001010111111000101001001100000011010001110011110011010010110101010110000101110011111100110100001101110100110110100101001010111101100110100001010100111010101111110011001011111110000100111000110011001000110100010100100011011111000000101101101111111100000000001100000110111111010101001101011011100001011111011000010010100011011011101101000110110000100000011100011000 0000010110001011111000100100110101100011000111100111000001110011110000011110011100001111100110001111100010001101110001100000000100110011111111111010011001001011101110111000101111110001011111100011110000111100110001101111110111010101101010110110100101101101001011101000100101000100001011000000100101100000100011111100010000000001010011000110110001011101001100111111000000010100111011000100100011111110 1001000010111000110010010011100000100100110000111010001100000110000010110101000011001100100111101011111000011001001111000011010000100100100100001101000110010111000001111100101101001010000100010100000100010110000011100010010011100011101010101110101101001101100000101110001110101111001001001101000101111011010101010001111101000010101110011011111101001111110110011010101101010110010011010111010011010010 0110001001000110010010111011111100100101010110001100100101001000010111100110010110110101010110110000011001110101001111110100001011000111000101110011101011100101101101011011001101100101111000000101010000010110100010001101000101111110111001001110010100111110111101001010011111011101001000000100101101001001100101100101110000000100010010010100101110001011001101110110101000011010111000100111111111111001 0001111110101001010111000001010111001110000011101001101010000001100010011010111100000101101101001011100000111101010111101001000110110111000001011000010110100101000000011111101001010110110101101010010001010100110011010011111100111110111000100010110111110011001100110100000110100011000010001000110001110011110111110001000100001011001010000001000011101010011001110011001100111100110100010011101000011110 1001010111000001100011100101100100001011101110111001111100100010101101010000110010111001001101100101110111100111011000000011111010010101101010000011010011101011001110011000100101010100001001101111110110010100100011111010111101100001001011011010000001111011000110001110100001101000011111001101000110101100001100101000100000010001100011101111001100110110110110110110101010000010110011010100001111000001 0000110000101101001110001100010110011100101001010111001110001101010011000000111101011010111100111100110101110110010111101101011000010010010011111001110010111010010011100110110000100111011100100011100011111000011111100011011101001111010011011010001100101111011100001001000101101001010011110011110100001001000110001001001110100100000010010111100001010010000111100110100111000101010000001111100101010000 0100001110000111010011110100011100111110011110110001001101001101110110000100101001011011000100101011001000111111000010101100000000100100010111100100000101011011011101110100111011001110000011111110100001011010010010011001001001010011010011111000110001101100101001100100000111110011100011101001101100011101101000011011011000000101010011010001011000100001100010111011100100011000101000110110100110100000 0100011110100000011100101111111111001101111111011101101100100001000000010110000000111011011000000011111000101111011110010101101001101110011011101001110110110001011101011101010111011110000011100000010110000100101111011101010110101100001001111011111110000101001010000101111101011010111110101001001011111001001011100100011110100011010101011001000000010001111111010100000111001010110001010110100000110110 1001000011111101011111101000100000001010000001010101001100010000011000001001000010100100000010001110001010100100001011001000111000110000110100001000101000001110111110110011001011001010011110011000101101100011111110010110011001111111011110000001101110100101000000110000101000000010010100010111110000010111100111100000111101001011110011010001010101010100001010011111000011101000011101111111101011110101 0101101101101100111001111100001011101010101100000010101110001010000111110001001011111011110010111000010011110000111111100100001000111000110100010010010101101100111100110101101110001100000111110010001001000100110111110100001100011011001010100011111110110011000011101001010110111000100000101010011000111001001001011101000011101110001010011111001100111000110010110011010011110010100111001100100101001001 1111111001110101110111000011101100000010010111111001110011001011001110101001101011101101100101010011001110101010010001100100001100101010001110100110001111011101101110100000011001011001101000101110000010001111100100001111010110001000100000011010000001101100100011001101111011011110110100010001111110100101011101111101101111100110101111111110101001000101100100001010110100010010001111010011110001011101 1000110110110100011011110010010100100010010100100000100011000011000000111101010010011100001101101100101010111110100101001000010111111100001111111110001010111000000110000100101011111110010101101100010100100000111101100111110110001111110000101010100101100111111010100001100111001011101111010101110110110110110110100111001001000111010000000010001000010110010111111000110001010100110000010000101100001000 0110100011101100000011000001010101110011101010101011111101001111000100011011111110001000100111100101011101101001001010101101000101110101110111101011111111000111000011110000010111000000100111000001010100010000011000100011100111101000010101110001111110101010101011011011101011111100000001100100110101101011001011010100101001000001000011011010111000111011000010100110100101100111101101110000010101011110 1111111011001011000011001000001011010100010010100001001011110100101000101100101100001111100000010000011011101001010110000011101011001000100010100101000101000010011000101001000011110111101000110111111000110100101101110010111110101110111000011101111010001111100010010111010100110000101010010001000100110100001011111110111111001010100101011001011111011110011111101110000100010001011110101001110101110011 0011010100110111001111110111001111110010000101111101110110101011000110110101110111000000010000100111010100011000010001000101011010110100000101101001001111000011100011100000101110100100111100001001000000111000101001000000001100001010100110000111010101001100010000111101111011010101000001011000100100100011100011000001100010100100010111100000011001000110010100111111011000100100101101110100001110010110 1101101110111101000101010011000010100111010010001001000001000111001011100100101010100010010101110100010001011001000001001010110110111010010110000010010110010111110010010001100000011100110010010101001010011010111110000001011001001111101111100111101111100010001000100011001110000000000110011101100101110011101111001111011110110011000101111110000101010111010101001001100101000011101000111000101101101000 0110000111001001101110011011010110100001111000001010100111101010001000111001000110100111101000000111000011101101110110001000011110011000001101111100001110001111001011101011000101100011100010100101111001010111010011011010011010100110110010001000010000110011100111011010110011100101100101110100000011001100100111000110011010011011101111011110001101100011011111000010111110111001101100100101100111001010 1001110111110000100011101010000000100000000101110010001110101011001010101111010100000100110001100111011110010011011110111010001010001101111111001001011000010110000000110100000011010011100100000001001110100001110100011110111001000010011101010010100110001111100100101000000101000101001111000110101101111011101110101011010011010111110100100101110110110011100001001111001110010001110100100100101100101011 0110001101101100111000110110000011011001101001100101101001011000011010101110011101101001010111010101101100000000111111010100111111100000011000010101010000011000001101110000001110110011011101101010110110101011001010000000111000101010010010100101010011101110111101001101111000110001110110001001011011000001110100110000110010000001111010011000001110100110000000100110110101111101011000011010101111110111 1101101011111100011101110111000010001100110011000010010011000001100101010001011001111001000111001111100000001101110100011001000011000111000000101101011101001011111001001011111000111001100110010101111000011101001111000011100000100010101101001100101010000001001011101100100001010010000111011010001100000110000110101101110101111100101000010111101010111111010000110110111100111110000110011111111000111100 0011001010110110011111010011101101101000110101110000101010101110111111100111100111110110111110011000110100111011111111110010001100111000000111010001001110101100101100101001100100010011000110000111010001101100000010110001000011100110100000111010110000011110110010011001001000001011110010100000100000011001111001111000100010001010101111111110011011000001010101111011111011111010101111100110101001011101 0011111111110010000011101100111110000001010000100000111001101000100011101010000001000011111010001100011111100110100110011111000101001000101011000110110110111001010000001011000111000000110000101001011001100010100100001101001001000110111111111001100110000100101010101001011101010101001100101000111101101111011110001011011011110110010100001110000010011101101110110111000010010111010100110001011010001011 0100000111011001101110011100101110010000010010110001000111010111011111110111010101110011010011101111110100011101111101111100110111010111011001010110101000110001000110101000011110111000111000000100101000001011100010110110111010100111100101001110100001101011111101010100101001110110100010110101000011000011000011101100101011001000010000111110101110001010000011111000100011101100110111000001110110111101 0001101100010111000011100111001100010011010110101010000001110100000101111000011010111010110011001010001000111100111010111111101110110010001101001011010010110011110101010010111111001100011100101110011001011111000011100111001000001010010010100011100000011010000110111001110011101011001010101100101101000001100111000011111000101111001110011011010010111000101001111101100010100001000001011011000111000001
cTrader Algo

Line, PolyLine, Polygon【cAlgoAPI】

3/13/2021 3/30/2021

4年以上前の記事です。内容が古くなっている可能性があります。

線と多角形

線や多角形を描くことができます。うまく使えば簡単なアイコンなどはプログラム内で作成できてしまいます。

 

Lineクラス

1本の線です。

public class Line : Shape

 

プロパティ
(double) X1 {get; set;}

始点のX座標を取得、設定します。

(double) X2 {get; set;}

終点のX座標を取得、設定します。

(double) Y1 {get; set;}

始点のY座標を取得、設定します。

(double) Y2 {get; set;}

終点のY座標を取得、設定します。

Shape, ControlBaseのプロパティすべて

StrokeColorは必ず設定します。サイズ自動調整をさせる場合、StretchはUniformにしておく方がいいでしょう。

 

サンプルコードは下記PenLineCap参照。

 

 

Polylineクラス

複数のつながった線です。

public class Polyine : Shape

 

プロパティ
(Point[]) Points {get; set;}

つなげる点の座標をPointの配列で設定、取得します。

(FillRule) FillRule {get; set;}

ぬりつぶし方式を取得、設定します。

Shape, ControlBaseのプロパティすべて

StrokeColorかFillColorは必ず設定します。サイズ自動調整をさせる場合、StretchはUniformにしておく方がいいでしょう。

 

サンプルコードは下記PenLineJoin参照

 

 

Polygonクラス

多角形です。Polylineの始点と終点をつなげただけのものです。

public class Polygon : Shape

プロパティもPolylineと全く同じです。

 

プロパティ
(Point[]) Points {get; set;}

つなげる点の座標をPointの配列で設定、取得します。

(FillRule) FillRule {get; set;}

ぬりつぶし方式を取得、設定します。

Shape, ControlBaseのプロパティすべて

StrokeColorかFillColorは必ず設定します。サイズ自動調整をさせる場合、StretchはUniformにしておく方がいいでしょう。

 

サンプルコードは下記FillRule参照。

 

 

Pointクラス

PolylineとPolygonの座標を表すためのオブジェクトです。

public class Point : Object

 

コンストラクタ
Point(double x, double y)

x座標とy座標を指定してオブジェクトを作れます。

 

プロパティ
(double) X {get; set;}

x座標を取得、設定します。

(double) Y {get; set;}

y座標を取得、設定します。

 

 

関連する列挙型

PenLineCap列挙型

線や点線の終端形を表します。線の端にキャップをかぶせるイメージです。ぶっとい線じゃないと違いがわかりません

Flat 終端なし。デフォルト。
Square 四角
Round
Triangle 三角

 

サンプルコード

Func<PenLineCap, Line> line = cap => 
    new Line {
        StrokeColor = Color.White,
        StrokeThickness = 30,
        X1 = 20,
        Y1 = 10,
        X2 = 80,
        Y2 = 10,
        StrokeStartLineCap = cap,
        StrokeEndLineCap = cap,
        Margin = 10,
    };
var flat = line(PenLineCap.Flat);
var square = line(PenLineCap.Square);
var round = line(PenLineCap.Round);
var triangle = line(PenLineCap.Triangle);

var panel = new StackPanel();
panel.AddChild(flat);
panel.AddChild(square);
panel.AddChild(round);
panel.AddChild(triangle);
Chart.AddControl(panel);

上から順にFlat,Square,Round,Triangleです。

FlatとSquareは見た目の形は同じですが、Squareは四角いキャップをかぶせてるので線が少し長く表示されます。

 

 

PenLineJoin列挙型

2本の線の接合部分の形を表します。これもぶっとい線じゃないと違いがわかりません

Miter 普通。デフォルト。
Bevel 斜め切り落とし。
Round 丸。

 

サンプルコード

Func<PenLineJoin, Polyline> line = join =>
    new Polyline {
        StrokeColor = Color.White,
        Points = new Point[] {new Point(50, 10), new Point(10, 10), new Point(10,50)},
        StrokeThickness = 30,
        StrokeLineJoin = join,
        Margin = 10,
    };
var miter = line(PenLineJoin.Miter);
var bevel = line(PenLineJoin.Bevel);
var round = line(PenLineJoin.Round);
var panel = new WrapPanel();
panel.AddChild(miter);
panel.AddChild(bevel);
panel.AddChild(round);
Chart.AddControl(panel);

左からMiter,Bevel,Roundです。

 

 

FillRule列挙型

polylineやpolygonの塗りつぶし方式を表します。polylineも閉じた線とみなして判定します。

EvenOdd 領域内の任意の点から無限に伸びた光線を跨いだ線の数を数え、それが奇数であれば内側とみなし塗りつぶします。偶数であれば塗りつぶしません。
Nonzero 領域内の任意の点から無限に伸びた光線を左から右に跨いだ線の数と右から左に跨いだ線の数が異なる場合、内側とみなしぬりつぶします。

説明は私のざっくりとした意訳です。わかりにくくて申し訳ないですが、丁寧に訳してもたぶん同じくらいわかりにくいです。

cAlgo特有のものではないのでちゃんと知りたい場合はMSDNのFillRuleの説明探した方が早いかもしれません。

 

サンプルコード

Func<FillRule, Polygon> polygon = rule => 
    new Polygon {
    Points = new Point[] { new Point(0, 20), new Point(40, 20), new Point(10, 50), new Point(20, 0), new Point(30, 50) },
    StrokeColor = Color.Red,
    FillColor = Color.Yellow,
    FillRule = rule,
    Margin = 10,
    };

var evenodd = polygon(FillRule.EvenOdd);
var nonzero = polygon(FillRule.Nonzero);
var panel = new WrapPanel();
panel.AddChild(evenodd);
panel.AddChild(nonzero);
Chart.AddControl(panel);

 

左がEvenOdd、右がNonzeroです。

よくわからなければ中身全部塗りつぶしたければNonzeroと思ってもらえれば(cAlgoでは)だいたい大丈夫です。

 
 
 
 

まだコメントはありません

新しいコメント

コメントは承認後に公開されます。承認まで次のコメントは投稿できません。

cTrader's Life

© 2026 ajinori