?nextpreviousendpendingnonepushHandleLayersgetSelectedContentdispatchSelectionEvent	plainTextgetTransformTosizeboundingBoxesdispose	registrar
_registrar_subscribedToSelectionRegistrar%_updateSelectionRegistrarSubscription%_removeSelectionRegistrarSubscriptiongetResultBasedOnRectadjustDragOffsetstartEdgeUpdateendEdgeUpdateclear	selectAll
selectWordselectParagraphgranularlyExtendSelectiondirectionallyExtendSelection	characterword	paragraphlinedocumenttypeglobalPositionabsorbgranularityforwardisEndpreviousLinenextLinebackwarddx	directioncopyWithaddremoveuncollapsed	collapsedstartSelectionPointendSelectionPointstatusselectionRects
hasContenthasSelection==hashCodelocalPosition
lineHeight
handleTypedebugFillPropertiesleftrightSelectionResultSelectionHandlerSelectedContent
SelectableSelectionRegistrantSelectionUtilsSelectionEventTypeTextGranularitySelectionEventSelectAllSelectionEventClearSelectionEventSelectWordSelectionEventSelectParagraphSelectionEventSelectionEdgeUpdateEventGranularlyExtendSelectionEventSelectionExtendDirection!DirectionallyExtendSelectionEventSelectionRegistrarSelectionStatusSelectionGeometrySelectionPointTextSelectionHandleTypeZdispatchSelectionEventSelectionContainerSelectionContainerDelegatevalueValueListenableLeaderLayerstartSelectionPointendSelectionPointvoid	LayerLinktypeStringSelectionAreamaybeOfRenderObjectpaintpushHandleLayersMatrix4SizeRectList	registrar
hasContent
_registrarremoveListener%_updateSelectionRegistrarSubscriptionaddListener%_removeSelectionRegistrarSubscriptionoverridedisposebool_subscribedToSelectionRegistrarremoveaddendpreviousnextOffsetcontainsdytopbottomdxrightTextDirectionltrleft	directiontopLefttopRightbottomRight
bottomLeftglobalPosition_	selectAllclear
selectWordselectParagraphstartEdgeUpdateendEdgeUpdate	characterwordTapDragStartDetailsgranularlyExtendSelectiondirectionallyExtendSelectiondoubleisEndSelectableRegionSelectionRegistrarScopeuncollapsed	collapsed	immutablenonelocalPosition
handleTypeselectionRectsstatusObject	identicalruntimeType
listEqualsinthashDiagnosticable
lineHeightDiagnosticPropertiesBuilderdebugFillPropertiesDiagnosticsPropertyDoublePropertyEnumPropertyValueListenableSelectionHandler
SelectableSelectionEventDiagnosticableHo.Ob&9Xz       package:flutter/foundation.dart  :   'package:vector_math/vector_math_64.dart  m   
layer.dart     object.dart [  qM2 <Ձ9klʁ΂Yʂ΃F]BȄЅ17{39}a݈҇XMuyMpӋ!:@ڌ&28ۍN{Í%NOҎ@ŏՐ^`aّ&OUuۑGKTXʔZmqMQ_֖EFk|}ʖ3EGH̗F6֚"06OSY˛ϛЛܛ156f8XΝ#$UϞ՞ٞ۞ܟ,R7ɠ<b֡ܢ'-Ut٢ߣ1IODJl &B@TZȦا0=Mܧ,Fy/0_eȩΩ5flګEXY¬%'(\`֬>KLJRS:8ϱ/TU}Ʊʲ3j+]'+tQR,i23tݷ48ƹcg Y],dKӼ`aHξYZݿ @> @D @s @ @ @ @ @ A8 Ae A A A B B2 BQ B B B B B C C' C( C^ C C C C C C D. DN D D D D E/ EV Ef Eg E E F F	 FD Fk Fw Fx F F F G- G{ G G H H5 H; Hv H H H H I I I^ I I I J9 Jg Jm J J J J J K K# Kp K K K L) LR L L L M
 M# M@ M M M M M N  N N> NR NS N N N N O O O[ Oi O O O O O P P0 PR P P P P P P P Q Qm Q Q Q R RK RO R] R R S S[ Sx S S S T T? Tb Tc T T T T U U  U! Ul U U U U U V! V' V` V V V V W W WE W} W W W W X X X X XE XI X X Y) Y- Y~ Y Y Y Y Y Z8 Zo Z Z Z Z [	 [' [ [ [ [ \ \l \ \ \ ]# ]o ] ] ] ^- ^Z ^[ ^ ^ ^ _2 _ _ _ _ `- `L `R ` ` a a af a a a b b& b' bl b b b b c c	 cJ ci c c c c d d d1 d} d e  e% eV e] ea eb en e e e e e f f f8 ft f f g
 g5 g9 g: gF g[ gs g g g g g g g g g h h) hT h| h h h h h h iC ib i i i i i j j jZ j j j j j j j k k1 k7 kZ k k k k k k l l l2 lD lV l] la lb ln l l m/ mm m m m m m m nK nO n~ n n n o o o o oN oR o o o o o p# p7 pV p p p p p p q> qK qM   _/// @docImport 'package:flutter/gestures.dart';
/// @docImport 'package:flutter/material.dart';  9  l      /// The abstract interface to handle [SelectionEvent]s.
///
/// This interface is extended by [Selectable] and [SelectionContainerDelegate]
/// and is typically not used directly.
///
/// {@template flutter.rendering.SelectionHandler}
/// This class returns a [SelectionGeometry] as its [value], and is responsible
/// to notify its listener when its selection geometry has changed as the result
/// of receiving selection events.
/// {@endtemplate}    Ղ썂/// Marks this handler to be responsible for pushing [LeaderLayer]s for the
/// selection handles.
///
/// This handler is responsible for pushing the leader layers with the
/// given layer links if they are not null. It is possible that only one layer
/// is non-null if this handler is only responsible for pushing one layer
/// link.
///
/// The `startHandle` needs to be placed at the visual location of selection
/// start, the `endHandle` needs to be placed at the visual location of selection
/// end. Typically, the visual locations should be the same as
/// [SelectionGeometry.startSelectionPoint] and
/// [SelectionGeometry.endSelectionPoint].      ŀ8[/// Gets the selected content in this object.
///
/// Return `null` if nothing is selected.   Q0/// Handles the [SelectionEvent] sent to this object.
///
/// The subclasses need to update their selections or delegate the
/// [SelectionEvent]s to their subtrees.
///
/// The `event`s are subclasses of [SelectionEvent]. Check
/// [SelectionEvent.type] to determine what kinds of event are dispatched to
/// this handler and handle them accordingly.
///
/// See also:
///  * [SelectionEventType], which contains all of the possible types. GW    aA/// The selected content in a [Selectable] or [SelectionHandler]. ( }H/// Creates a selected content object.
///
/// Only supports plain text.   G./// The selected content in plain text format.    ܈ڟAO/// A utility class that provides useful methods for handling selection events.    TG/// Determines [SelectionResult] purely based on the target rectangle.
///
/// This method returns [SelectionResult.end] if the `point` is inside the
/// `targetRect`. Returns [SelectionResult.previous] if the `point` is
/// considered to be lower than `targetRect` in screen order. Returns
/// [SelectionResult.next] if the point is considered to be higher than
/// `targetRect` in screen order. !  ,4   /// Adjusts the dragging offset based on the target rect.
///
/// This method moves the offsets to be within the target rect in case they are
/// outside the rect.
///
/// This is used in the case where a drag happens outside of the rectangle
/// of a [Selectable].
///
/// The logic works as the following:
/// ![](https://flutter.github.io/assets-for-api-docs/assets/rendering/adjust_drag_offset.png)
///
/// For points inside the rect:
///   Their effective locations are unchanged.
///
/// For points in Area 1:
///   Move them to top-left of the rect if text direction is ltr, or top-right
///   if rtl.
///
/// For points in Area 2:
///   Move them to bottom-right of the rect if text direction is ltr, or
///   bottom-left if rtl.     +   V/// An abstract base class for selection events.
///
/// This should not be directly used. To handle a selection event, it should
/// be downcast to a specific subclass. One can use [type] to look up which
/// subclasses to downcast to.
///
/// See also:
/// * [SelectAllSelectionEvent], for events to select all contents.
/// * [ClearSelectionEvent], for events to clear selections.
/// * [SelectWordSelectionEvent], for events to select words at the locations.
/// * [SelectionEdgeUpdateEvent], for events to update selection edges.
/// * [SelectionEventType], for determining the subclass types. 1"EFG H	N   WE%/// The type of this selection event.    @9/// Selects all selectable contents.
///
/// This event can be sent as the result of keyboard select-all, i.e.
/// ctrl + A, or cmd + A in macOS. ls )/// Creates a select all selection event. ݲӲ    cy/// Clears the selection from the [Selectable] and removes any existing
/// highlight as if there is no selection at all. e #/// Create a clear selection event. ճڳ۳ܳݳ    zx/// Selects the whole word at the location.
///
/// This event can be sent as the result of mobile long press selection.  8/// Creates a select word event at the [globalPosition].	  )./0N1CDTW9/// The position in global coordinates to select word at.    d2{/// Selects the entire paragraph at the location.
///
/// This event can be sent as the result of a triple click to select. k =/// Creates a select paragraph event at the [globalPosition].    	
/ 5\>/// The position in global coordinates to select paragraph at. {e/// Whether the selectable receiving the event should be absorbed into
/// an encompassing paragraph.    2/// Updates a selection edge.
///
/// An active selection contains two edges, start and end. Use the [type] to
/// determine which edge this event applies to. If the [type] is
/// [SelectionEventType.startEdgeUpdate], the event updates start edge. If the
/// [type] is [SelectionEventType.endEdgeUpdate], the event updates end edge.
///
/// The [globalPosition] contains the new offset of the edge.
///
/// The [granularity] contains the granularity that the selection edge should move by.
/// Only [TextGranularity.character] and [TextGranularity.word] are currently supported.
///
/// This event is dispatched when the framework detects [TapDragStartDetails] in
/// [SelectionArea]'s gesture recognizers for mouse devices, or the selection
/// handles have been dragged to new locations. f/// Creates a selection start edge update event.
///
/// The [globalPosition] contains the location of the selection start edge.
///
/// The [granularity] contains the granularity which the selection edge should move by.
/// This value defaults to [TextGranularity.character].    	'(389:];MNc/// Creates a selection end edge update event.
///
/// The [globalPosition] contains the new location of the selection end edge.
///
/// The [granularity] contains the granularity which the selection edge should move by.
/// This value defaults to [TextGranularity.character].    "#.345V6HI\I+/// The new location of the selection edge.  @/// The granularity for which the selection moves.
///
/// Only [TextGranularity.character] and [TextGranularity.word] are currently supported.
///
/// Defaults to [TextGranularity.character].     @ Ak/// Extends the start or end of the selection by a given [TextGranularity].
///
/// To handle this event, move the associated selection edge, as dictated by
/// [isEnd], according to the [granularity].  A  A A//// Creates a [GranularlyExtendSelectionEvent]. B B   B B,   B6 BE   BX B] B^ B_ B B` Br Bs BA B,/// Whether to extend the selection forward.  BM C :/// Whether this event is updating the end selection edge.  C*W Cv3/// The granularity for which the selection extend.     Jޅ LXs/// Extends the current selection with respect to a [direction].
///
/// To handle this event, move the associated selection edge, as dictated by
/// [isEnd], according to the [direction].
///
/// The movements are always based on [dx]. The value is in
/// global coordinates and is the horizontal offset the selection edge should
/// move to when moving to across lines.  L  L L2/// Creates a [DirectionallyExtendSelectionEvent]. L M   M M   M' M6   MG ML MM MN M~ MO Ma Mb Mz Md/// The horizontal offset the selection should move to.
///
/// The offset is in global coordinates.  NM NK:/// Whether this event is updating the end selection edge.  NU O/// The directional movement of this event.
///
/// See also:
///  * [SelectionExtendDirection], which explains how to handle each enum.   Ow OS/// Makes a copy of this object with its property replaced with the new
/// values.  O
 O   O O   O# O     P S/// A registrar that keeps track of [Selectable]s in the subtree.
///
/// A [Selectable] is only included in the [SelectableRegion] if they are
/// registered with a [SelectionRegistrar]. Once a [Selectable] is registered,
/// it will receive [SelectionEvent]s in
/// [SelectionHandler.dispatchSelectionEvent].
///
/// Use [SelectionContainer.maybeOf] to get the immediate [SelectionRegistrar]
/// in the ancestor chain above the build context.
///
/// See also:
///  * [SelectableRegion], which provides an overview of the selection system.
///  * [SelectionRegistrarScope], which hosts the [SelectionRegistrar] for the
///    subtree.
///  * [SelectionRegistrant], which auto registers the object with the mixin to
///    [SelectionRegistrar].     S TF/// Adds the [selectable] into the registrar.
///
/// A [Selectable] must register with the [SelectionRegistrar] in order to
/// receive selection events.  TJ TV    Te T/// Removes the [selectable] from the registrar.
///
/// A [Selectable] must unregister itself if it is removed from the rendering
/// tree.  U U     X Yx/// The geometry of the current selection.
///
/// This includes details such as the locations of the selection start and end,
/// line height, the rects that encompass the selection, etc. This information
/// is used for drawing selection controls for mobile platforms.
///
/// The positions in geometry are in local coordinates of the [SelectionHandler]
/// or [Selectable].  Y  Zw Z/// Creates a selection geometry object.
///
/// If any of the [startSelectionPoint] and [endSelectionPoint] is not null,
/// the [status] must not be [SelectionStatus.none]. Z Z   Z Z   Z$ Z   Z [   [ [   Z Z Z Z Z Z [. [4 [ [p [5 [n [R [J [6 [M [g [U [j [z [s [} [ [ [ ^E}/// The geometry information at the selection start.
///
/// This information is used for drawing mobile selection controls. The
/// [SelectionPoint.localPosition] of the selection start is typically at the
/// start of the selection highlight at where the start selection handle
/// should be drawn.
///
/// The [SelectionPoint.handleType] should be [TextSelectionHandleType.left]
/// for forward selection or [TextSelectionHandleType.right] for backward
/// selection in most cases.
///
/// Can be null if the selection start is offstage, for example, when the
/// selection is outside of the viewport or is kept alive by a scrollable.  ^] as/// The geometry information at the selection end.
///
/// This information is used for drawing mobile selection controls. The
/// [SelectionPoint.localPosition] of the selection end is typically at the end
/// of the selection highlight at where the end selection handle should be
/// drawn.
///
/// The [SelectionPoint.handleType] should be [TextSelectionHandleType.right]
/// for forward selection or [TextSelectionHandleType.left] for backward
/// selection in most cases.
///
/// Can be null if the selection end is offstage, for example, when the
/// selection is outside of the viewport or is kept alive by a scrollable.  am a~N/// The status of ongoing selection in the [Selectable] or [SelectionHandler].  a bw/// The rects in the local coordinates of the containing [Selectable] that
/// represent the selection if there is any.  b)t bZ/// Whether there is any selectable content in the [Selectable] or
/// [SelectionHandler].  be b*/// Whether there is an ongoing selection.    g< gP    g< g= cU c^>/// Makes a copy of this object with the given values updated.  cm# c~   c! c   c c   c c   c d    ed e~   e e   ed ee Y Y g h/2/// The geometry information of a selection point.  hV  h h%/// Creates a selection point object. h h   h h   h h    h iqd/// The position of the selection point in the local coordinates of the
/// containing [Selectable].  iE i+/// The line height at the selection point.  ì jz/// The selection handle type that should be used at the selection point.
///
/// This is used for building the mobile selection handle.  kz k    k k jY j   j j   j j lda lu   l& l   ld le h h 'K/// The result after handling a [SelectionEvent].
///
/// [SelectionEvent]s are sent from [SelectionRegistrar] to be handled by
/// [SelectionHandler.dispatchSelectionEvent]. The subclasses of
/// [SelectionHandler] or [Selectable] must return appropriate
/// [SelectionResult]s after handling the events.
///
/// This is used by the [SelectionContainer] to determine how a selection
/// expands across its [Selectable] children.  _oʁ\/// There is nothing left to select forward in this [Selectable], and further
/// selection should extend to the next [Selectable] in screen order.
///
/// {@template flutter.rendering.selection.SelectionResult.footNote}
/// This is used after subclasses [SelectionHandler] or [Selectable] handled
/// [SelectionEdgeUpdateEvent].
/// {@endtemplate} Ҁ}/// Selection does not reach this [Selectable] and is located before it in
/// screen order.
///
/// {@macro flutter.rendering.selection.SelectionResult.footNote} /// Selection ends in this [Selectable].
///
/// Part of the [Selectable] may or may not be selected, but there is still
/// content to select forward or backward.
///
/// {@macro flutter.rendering.selection.SelectionResult.footNote} UԀ/// The result can't be determined in this frame.
///
/// This is typically used when the subtree is scrolling to reveal more
/// content.
///
/// {@macro flutter.rendering.selection.SelectionResult.footNote} ߀݈/// There is no result for the selection event.
///
/// This is used when a selection result is not applicable, e.g.
/// [SelectAllSelectionEvent], [ClearSelectionEvent], and
/// [SelectWordSelectionEvent].    n1s/// The type of a [SelectionEvent].
///
/// Used by [SelectionEvent.type] to distinguish different types of events.  Hr\/// An event to update the selection start edge.
///
/// Used by [SelectionEdgeUpdateEvent]. n Z/// An event to update the selection end edge.
///
/// Used by [SelectionEdgeUpdateEvent]. 2_S/// An event to clear the current selection.
///
/// Used by [ClearSelectionEvent]. l\/// An event to select all the available content.
///
/// Used by [SelectAllSelectionEvent]. /// An event to select a word at the location
/// [SelectWordSelectionEvent.globalPosition].
///
/// Used by [SelectWordSelectionEvent]. G/// An event to select a paragraph at the location
/// [SelectParagraphSelectionEvent.globalPosition].
///
/// Used by [SelectParagraphSelectionEvent]. [dH/// An event that extends the selection by a specific [TextGranularity]. _@/// An event that extends the selection in a specific direction.    (ۀ/// The unit of how selection handles move in text.
///
/// The [GranularlyExtendSelectionEvent] uses this enum to describe how
/// [Selectable] should extend its selection.  Z@N/// Treats each character as an atomic unit when moving the selection handles. NKD/// Treats word as an atomic unit when moving the selection handles. WK/// Treats a paragraph as an atomic unit when moving the selection handles. VLO/// Treats each line break as an atomic unit when moving the selection handles. U^S/// Treats the entire document as an atomic unit when moving the selection handles.     CV D3/// The direction to extend a selection.
///
/// The [DirectionallyExtendSelectionEvent] uses this enum to describe how
/// [Selectable] should extend their selection.   DP EX/// Move one edge of the selection vertically to the previous adjacent line.
///
/// For text selection, it should consider both soft and hard linebreak.
///
/// See [DirectionallyExtendSelectionEvent.dx] on how to
/// calculate the horizontal offset.  Ei Fm/// Move one edge of the selection vertically to the next adjacent line.
///
/// For text selection, it should consider both soft and hard linebreak.
///
/// See [DirectionallyExtendSelectionEvent.dx] on how to
/// calculate the horizontal offset.  Fz, H/// Move the selection edges forward to a certain horizontal offset in the
/// same line.
///
/// If there is no on-going selection, the selection must start with the first
/// line (or equivalence of first line in a non-text selectable) and select
/// toward the horizontal offset in the same line.
///
/// The selectable that receives [DirectionallyExtendSelectionEvent] with this
/// enum must return [SelectionResult.end].
///
/// See [DirectionallyExtendSelectionEvent.dx] on how to
/// calculate the horizontal offset.  H. Jт/// Move the selection edges backward to a certain horizontal offset in the
/// same line.
///
/// If there is no on-going selection, the selection must start with the last
/// line (or equivalence of last line in a non-text selectable) and select
/// backward the horizontal offset in the same line.
///
/// The selectable that receives [DirectionallyExtendSelectionEvent] with this
/// enum must return [SelectionResult.end].
///
/// See [DirectionallyExtendSelectionEvent.dx] on how to
/// calculate the horizontal offset.     U! U/// The status that indicates whether there is a selection and whether the
/// selection is collapsed.
///
/// A collapsed selection means the selection starts and ends at the same
/// location.   U Vր/// The selection is not collapsed.
///
/// For example if `{}` represent the selection edges:
///   'ab{cd}', the collapsing status is [uncollapsed].
///   '{abcd}', the collapsing status is [uncollapsed].  V W/// The selection is collapsed.
///
/// For example if `{}` represent the selection edges:
///   'ab{}cd', the collapsing status is [collapsed].
///   '{}abcd', the collapsing status is [collapsed].
///   'abcd{}', the collapsing status is [collapsed].  W X/// No selection.     mɃ p<m/// The type of selection handle to be displayed.
///
/// With mixed-direction text, both handles may be the same type. Examples:
///
/// * LTR text: 'the &lt;quick brown&gt; fox':
///
///   The '&lt;' is drawn with the [left] type, the '&gt;' with the [right]
///
/// * RTL text: 'XOF &lt;NWORB KCIUQ&gt; EHT':
///
///   Same as above.
///
/// * mixed text: '&lt;the NWOR&lt;B KCIUQ fox'
///
///   Here 'the QUICK B' is selected, but 'QUICK BROWN' is RTL. Both are drawn
///   with the [left] type.
///
/// See also:
///
///  * [TextDirection], which discusses left-to-right and right-to-left text in
///    more detail.   pXJ pC/// The selection handle is to the left of the selection end point.  pL pD/// The selection handle is to the right of the selection end point.  pQ q@E/// The start and end of the selection are co-incident at this point.          N/// A mixin that can be selected by users when under a [SelectionArea] widget.
///
/// This object receives selection events and the [value] must reflect the
/// current selection in this [Selectable]. The object must also notify its
/// listener if the [value] ever changes.
///
/// This object is responsible for drawing the selection highlight.
///
/// In order to receive the selection event, the mixer needs to register
/// itself to [SelectionRegistrar]s. Use
/// [SelectionContainer.maybeOf] to get the selection registrar, and
/// mix the [SelectionRegistrant] to subscribe to the [SelectionRegistrar]
/// automatically.
///
/// This mixin is typically mixed by [RenderObject]s. The [RenderObject.paint]
/// methods are responsible to push the [LayerLink]s provided to
/// [pushHandleLayers].
///
/// {@macro flutter.rendering.SelectionHandler}
///
/// See also:
///  * [SelectionArea], which provides an overview of selection system.   H3v"/// The size of this [Selectable].   d/// A list of [Rect]s that represent the bounding box of this [Selectable]
/// in local coordinates.   l:/// {@macro flutter.rendering.RenderObject.getTransformTo} ,;   	;:)/// Disposes resources held by the mixer.    H?/// A mixin to auto-register the mixer to the [registrar].
///
/// To use this mixin, the mixer needs to set the [registrar] to the
/// [SelectionRegistrar] it wants to register to.
///
/// This mixin only registers the mixer with the [registrar] if the
/// [SelectionGeometry.hasContent] returned by the mixer is true.    8,= _/// The [SelectionRegistrar] the mixer will be or is registered to.
///
/// This [Selectable] only registers the mixer if the
/// [SelectionGeometry.hasContent] returned by the [Selectable] is true.   ؁     b   қӜhm    &+           package:flutter/gestures.dart    package:flutter/material.dart 2 <Ձ9klʁ΂Yʂ΃F]BȄЅ17{39}a݈҇XMuyMpӋ!:@ڌ&28ۍN{Í%NOҎ@ŏՐ^`aّ&OUuۑGKTXʔZmqMQ_֖EFk|}ʖ3EGH̗F6֚"06OSY˛ϛЛܛ156f8XΝ#$UϞ՞ٞ۞ܟ,R7ɠ<b֡ܢ'-Ut٢ߣ1IODJl &B@TZȦا0=Mܧ,Fy/0_eȩΩ5flګEXY¬%'(\`֬>KLJRS:8ϱ/TU}Ʊʲ3j+]'+tQR,i23tݷ48ƹcg Y],dKӼ`aHξYZݿ @> @D @s @ @ @ @ @ A8 Ae A A A B B2 BQ B B B B B C C' C( C^ C C C C C C D. DN D D D D E/ EV Ef Eg E E F F	 FD Fk Fw Fx F F F G- G{ G G H H5 H; Hv H H H H I I I^ I I I J9 Jg Jm J J J J J K K# Kp K K K L) LR L L L M
 M# M@ M M M M M N  N N> NR NS N N N N O O O[ Oi O O O O O P P0 PR P P P P P P P Q Qm Q Q Q R RK RO R] R R S S[ Sx S S S T T? Tb Tc T T T T U U  U! Ul U U U U U V! V' V` V V V V W W WE W} W W W W X X X X XE XI X X Y) Y- Y~ Y Y Y Y Y Z8 Zo Z Z Z Z [	 [' [ [ [ [ \ \l \ \ \ ]# ]o ] ] ] ^- ^Z ^[ ^ ^ ^ _2 _ _ _ _ `- `L `R ` ` a a af a a a b b& b' bl b b b b c c	 cJ ci c c c c d d d1 d} d e  e% eV e] ea eb en e e e e e f f f8 ft f f g
 g5 g9 g: gF g[ gs g g g g g g g g g h h) hT h| h h h h h h iC ib i i i i i j j jZ j j j j j j j k k1 k7 kZ k k k k k k l l l2 lD lV l] la lb ln l l m/ mm m m m m m m nK nO n~ n n n o o o o oN oR o o o o o p# p7 pV p p p p p p q> qK qM    SelectionResultSelectionHandlerSelectedContent
SelectableSelectionRegistrantSelectionUtilsSelectionEventTypeTextGranularitySelectionEventSelectAllSelectionEventClearSelectionEventSelectWordSelectionEventSelectParagraphSelectionEventSelectionEdgeUpdateEventGranularlyExtendSelectionEventSelectionExtendDirection!DirectionallyExtendSelectionEventSelectionRegistrarSelectionStatusSelectionGeometrySelectionPointTextSelectionHandleType N