[trace] IME: hasMarkedText() -> false [trace] IME: hasMarkedText() -> false [trace] IME: hasMarkedText() -> false [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 0..<0 (charRange: 0..<0) [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 0..<0 (charRange: 0..<0) [trace] IME: selectedRange() -> 0..<0 (charRange: 0..<0) [trace] IME: markedRange() -> NSNotFound (no marked text) [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 0..<0 (charRange: 0..<0) [trace] IME: selectedRange() -> 0..<0 (charRange: 0..<0) [trace] IME: selectedRange() -> 0..<0 (charRange: 0..<0) [trace] IME: selectedRange() -> 0..<0 (charRange: 0..<0) [trace] IME: hasMarkedText() -> false [trace] IME: setMarkedText: "y" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(0..<0)), markedRowRange=nil, text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: selectedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(1..<1)), markedRowRange=Optional(Range(0..<1)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 0..<1 (charRange: 0..<1) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "y" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(1..<1)), markedRowRange=Optional(Range(0..<1)), text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(1..<1)), markedRowRange=Optional(Range(0..<1)), text="" [trace] IME: selectedRange() -> 1..<1 (charRange: 1..<1) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "yp" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(1..<1)), markedRowRange=Optional(Range(0..<1)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(0..<2)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "yp" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(0..<2)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(0..<2)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 0..<2 (charRange: 0..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ypw" selectedRange: 3..<3 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(0..<2)), text="" [trace] IME: converted: selectedRowRange=3..<3, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(0..<3)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ypw" selectedRange: 3..<3 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(0..<3)), text="" [trace] IME: converted: selectedRowRange=3..<3, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(0..<3)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 0..<3 (charRange: 0..<3) [trace] IME: selectedRange() -> 3..<3 (charRange: 3..<3) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ypwh" selectedRange: 4..<4 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(0..<3)), text="" [trace] IME: converted: selectedRowRange=4..<4, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(0..<4)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ypwh" selectedRange: 4..<4 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(0..<4)), text="" [trace] IME: converted: selectedRowRange=4..<4, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(0..<4)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 0..<4 (charRange: 0..<4) [trace] IME: hasMarkedText() -> true [trace] IME: insertText: "这个" replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(0..<4)), text="" [trace] IME: converted replacementRange: nil [trace] IME: state after: selectedRowRange=Optional(Range(2..<2)), markedRowRange=nil, text="" [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> false [trace] IME: markedRange() -> NSNotFound (no marked text) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> false [trace] IME: setMarkedText: "u" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(2..<2)), markedRowRange=nil, text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: selectedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<3 (charRange: 2..<3) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "u" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: selectedRange() -> 3..<3 (charRange: 3..<3) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "uk" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "uk" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<4 (charRange: 2..<4) [trace] IME: selectedRange() -> 4..<4 (charRange: 4..<4) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ukj" selectedRange: 3..<3 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: converted: selectedRowRange=3..<3, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ukj" selectedRange: 3..<3 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: converted: selectedRowRange=3..<3, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<5 (charRange: 2..<5) [trace] IME: selectedRange() -> 5..<5 (charRange: 5..<5) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ukjg" selectedRange: 4..<4 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: converted: selectedRowRange=4..<4, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(6..<6)), markedRowRange=Optional(Range(2..<6)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ukjg" selectedRange: 4..<4 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(6..<6)), markedRowRange=Optional(Range(2..<6)), text="" [trace] IME: converted: selectedRowRange=4..<4, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(6..<6)), markedRowRange=Optional(Range(2..<6)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<6 (charRange: 2..<6) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ukj" selectedRange: 3..<3 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(6..<6)), markedRowRange=Optional(Range(2..<6)), text="" [trace] IME: converted: selectedRowRange=3..<3, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "ukj" selectedRange: 3..<3 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: converted: selectedRowRange=3..<3, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<5 (charRange: 2..<5) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "uk" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(5..<5)), markedRowRange=Optional(Range(2..<5)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "uk" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<4 (charRange: 2..<4) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "u" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(4..<4)), markedRowRange=Optional(Range(2..<4)), text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "u" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<3 (charRange: 2..<3) [trace] IME: setMarkedText: "" selectedRange: 0..<0 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(2..<3)), text="" [trace] IME: converted: selectedRowRange=0..<0, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(2..<2)), text="" [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> true [trace] IME: insertText: "" replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(2..<2)), text="" [trace] IME: converted replacementRange: nil [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=nil, text="" [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 3..<3 (charRange: 3..<3) [trace] IME: selectedRange() -> 3..<3 (charRange: 3..<3) [trace] IME: selectedRange() -> 3..<3 (charRange: 3..<3) [trace] IME: hasMarkedText() -> false [trace] IME: markedRange() -> NSNotFound (no marked text) [trace] IME: hasMarkedText() -> false [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> false [trace] IME: markedRange() -> NSNotFound (no marked text) [trace] IME: hasMarkedText() -> false [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 1..<1 (charRange: 1..<1) [trace] IME: selectedRange() -> 1..<1 (charRange: 1..<1) [trace] IME: selectedRange() -> 1..<1 (charRange: 1..<1) [trace] IME: selectedRange() -> 1..<1 (charRange: 1..<1) [trace] IME: selectedRange() -> 1..<1 (charRange: 1..<1) [trace] IME: hasMarkedText() -> false [trace] IME: setMarkedText: "w" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(1..<1)), markedRowRange=nil, text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: selectedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(1..<2)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 1..<2 (charRange: 1..<2) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "w" selectedRange: 1..<1 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(1..<2)), text="" [trace] IME: converted: selectedRowRange=1..<1, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(1..<2)), text="" [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "wh" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(2..<2)), markedRowRange=Optional(Range(1..<2)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(1..<3)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: setMarkedText: "wh" selectedRange: 2..<2 replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(1..<3)), text="" [trace] IME: converted: selectedRowRange=2..<2, replacementRange=nil [trace] IME: will use replacementRange from: markedRowRange [trace] IME: state after: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(1..<3)), text="" [trace] IME: hasMarkedText() -> true [trace] IME: markedRange() -> 1..<3 (charRange: 1..<3) [trace] IME: hasMarkedText() -> true [trace] IME: insertText: "个" replacementRange: NSNotFound [trace] IME: state before: selectedRowRange=Optional(Range(3..<3)), markedRowRange=Optional(Range(1..<3)), text="" [trace] IME: converted replacementRange: nil [trace] IME: state after: selectedRowRange=Optional(Range(2..<2)), markedRowRange=nil, text="" [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> false [trace] IME: markedRange() -> NSNotFound (no marked text) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2) [trace] IME: markedRange() -> NSNotFound (no marked text) [trace] IME: hasMarkedText() -> false [trace] IME: selectedRange() -> 2..<2 (charRange: 2..<2)