Caml1999I037o(m%ShapeӠ#Uid @!t ;@@0Compilation_unit&stringQ@@@l@@0typing/shape.mli{ F J{ F f@@A@$Item)comp_unit@@@@@k| g w| g @@/B@"id@@#intA@@@j | g !| g @@=C@$from8@@)Unit_info,intf_or_impl@@@i0| g 1| g @@MD@@@4| g k5| g @@QE@(Internal9@@=}  >}  @@ZF@&Predef:M@@@h@@K~  L~  @@hG@@@@@@@@@Oz 3 5@@@@k@@A@&reinit @$unitF@@@m@@@n@@o@c@  d@  @@M@@"mk ,current_unit&optionLN!t@@@p@@@q@@@r@@s@B  B  '@@N@@6of_compilation_unit_id @%Ident!t@@@t@@@u@@v@C ( *C ( S@@O@@,of_predef_id @!t@@@w+@@@x@@y@D T VD T u@@P@@@;V@@*find_first @@<@@@@@@@@@R@@@H@@@@@@@@W@TW@@.find_first_opt @@U@@@@@@@@@k@@@e@@@@@@@@@@@u@rX@@)find_last @@s@@@@@@@@@@@@@@@@@@@@@Y@@-find_last_opt @@@@@,@@@@@@@@@ݠ@@@@@@@@@@@@Z@@$iter @@@@@$unitF@@@@@@@@@ @@@@@@@@@[@@$fold @@@@@@#acc@@@@@@@@@@  @@@@@@@@\@@&filter @@@@@@@@@@@@@@@@@@@@@@@^@@*filter_map @@@@@A@@@@@@@@@@@@@@@@@@@@@_@@)partition @@@@@@@@@@@,@@@@3@@@蠠@8@@@@@@@@@@:@7`@@%split @6@@@@H@@@@O@@@@@@@@Z@@@@@@@@@@\@Ya@@(is_empty @e@@@@@@@@@k@hb@@,is_singleton @t@@@@@@@@@z@wc@@#mem @v@@@@@@@@@@@@@@@@d@@%equal @@@@@@@@/@@@@@@@@@e@@'compare @@@@@@@@@@@@@@@@@f@@&subset @@@@ @@@@ W@@@ @@ @@ @@g@@'for_all @@@@@h@@@@@@@@@q@@@@@@@@@h@@&exists @@@@@@@@@@@@@@@@@@@@@@@i@@'to_list @@@@e@@@@@@@@@@j@@+to_seq_from @ @@@ @@@@!&Stdlib#Seq!t@@@"@@@#@@$@@%@/@,l@@&to_seq @8@@@&#Seq!t5@@@'@@@(@@)@E@Bm@@*to_rev_seq @N@@@*/#Seq!tK@@@+@@@,@@-@[@Xn@@'add_seq @B#Seq!t^@@@.@@@/@q@@@0t@@@1@@2@@3@v@so@@&of_seq @]#Seq!ty@@@4@@@5@@@6@@7@@p@@&output @H+out_channel@@@8@@@@9E@@@:@@;@@<@@M@@%print @_&Format)formatter@@@=@@@@>]@@@?@@@@@A@@N@@)to_string @@@@B&stringQ@@@C@@D@@O@@'of_list @$listK@@@E@@@F@@@G@@H@@P@@#map @@@@@I@@@J@@K@@@@L@@@M@@N@@O@@Q@@@@u@@@Ӡ#Map @#key ;@@@A!t@@@@@@@ @@@ T@A@!t ;!a@@A@A#Map$Make!t@@@I@B@@@&@@@#U@A@%empty  !a@@@@@5@E@@#add @>@@@@!a@@ @@@! @@@@@@@@@@Q@F@@+add_to_list @@@@@!a@@8$listK@@@@@@C @@@@@@@@@@@@@x@5G@@&update @C@@@@@&optionL!a@@@@  @@@@@@m@@@q@@@@@@@@@@@^H@@)singleton @l@@@@!a@@@@@@@@@@sI@@&remove @@@@@!a@@@@@@@@@@@@@J@@%merge @@@@@@W!a@@@@@b!b@@@@k!c@@@@@@@@@@@Ѡ@@@@נ@@@۠@@@@@@@@@@ @K@@%union @@@@@@!a@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@5@L@@(cardinal @!a@@@@@@@@@@I@M@@(bindings @%!a@@@@@$@@@@@@@@@@@@g@$N@@+min_binding @C!a@@@@@>@@@@@@ @@ @@=O@@/min_binding_opt @\!a@ @@@  @[@@@ @@@@@@@@@@[P@@+max_binding @z!a@@@@@u@@@@@@@@@@tQ@@/max_binding_opt @!a@@@@@@@@@@@@@@@@@@@R@@&choose @!a@@@@@@@@@@@@@ @@S@@*choose_opt @ʠ!a@"@@@!w@@@@#@@@$@@@%@@&@ @T@@$find @@@@'@!a@)@@@(@@*@@+@!@U@@(find_opt @@@@,@!a@.@@@- @@@/@@0@@1@;@V@@*find_first @@@@@2$boolE@@@3@@4@$!a@6@@@5@@@@7@@@8@@9@@:@a@W@@.find_first_opt @@.@@@;&@@@<@@=@H!a@?@@@>@G@@@@@@@A@@@B@@C@@D@@GX@@)find_last @@W@@@EO@@@F@@G@q!a@I@@@H@l@@@J@@@K@@L@@M@@kY@@-find_last_opt @@{@@@Ns@@@O@@P@!a@R@@@QB@@@@S@@@T@@@U@@V@@W@@Z@@$iter @@@@@X@!a@\$unitF@@@Y@@Z@@[@Ơ@@@] @@@^@@_@@`@@[@@$fold @@@@@a@!a@e@#acc@g@@b@@c@@d@@@@f@  @@h@@i@@j@@\@@#map @@!a@l!b@n@@k@ @@@m @@@o@@p@@q@7@]@@$mapi @@@@@r@!a@u!b@w@@s@@t@$ @@@v( @@@x@@y@@z@X@^@@&filter @@%@@@{@!a@#@@@|@@}@@~@E @@@I@@@@@@@@y@6_@@*filter_map @@F@@@@!a@!b@@@@@@@@@k@@@o@@@@@@@@@\`@@)partition @@l@@@@!a@j@@@@@@@@ @@@@@@@@@@@@@@@@@@@a@@%split @@@@@!a@@@@@ @@@@b@@@@Ġ@@@@@@@@@@@b@@(is_empty @Р!a@@@@@@@@@@ @c@@,is_singleton @!a@@@@@@@@@@ @d@@#mem @@@@@!a@@@@@@@@@@@@ 5@e@@%equal @@!a@@@@@@@@@@@@@@%@@@ @@@@@@@@@@ Y@ f@@'compare @@!a@@ ,@@@@@@@@C@@@@I@@@ <@@@@@@@@@@ }@ :g@@'for_all @@J@@@@!a@H@@@@@@@@j @@@R@@@@@@@@ @ [h@@&exists @@k@@@@!a@i@@@@@@@@ @@@s@@@@@@@@ @ |i@@'to_list @!a@@@@h@@@@ؠ@@@@@@@@@ @ j@@&to_seq !@!a@@@@&Stdlib#Seq!t@@@@ޠ@@@@@@@@@ @ l@@*to_rev_seq "@ݠ!a@@@@$#Seq!t@@@@䠠@@@@@@@@@ "@ m@@+to_seq_from #@@@@@!a@@@@J#Seq!t@@@@렠@@@@@@@@@@@ H@ n@@'add_seq $@c#Seq!t@@@@@!a@@@@@@@; @@@?@@@@@@@@ o@ ,o@@&of_seq %@#Seq!t@E@@@@!a@@@@@@`@@@@@@ @ Mp@@'of_list &@Š@c@@@@!a@@@@@@~@@@@@@ @ V@@.disjoint_union '"eq&optionL@!a@@$boolE@@@@@@@@@@%print@ &Format)formatter@@@@ @@@ @@ @@ @@@ @)@@@ @/@@@Ġ3@@@@@@@@@@@@ @ W@@+union_right (@Р!a@@@@@ڠ @@@ޠ@@@@@@@@ @ X@@*union_left )@!a@@@@@ @@@@@@@@@@ @ (@ %Y@@+union_merge *@@!a@%@@@!@@"@ @@@#@@@@$@@@&@@'@@(@@)@ H@ EZ@@&rename +@$@@@*@@@+@@@@,@@@-@@.@@/@ _@ \[@@(map_keys ,@@,@@@0/@@@1@@2@E!a@4@@@3M@@@5@@6@@7@ }@ z\@@$keys -@Y!a@8@@@9 D#Set$Make !t@@@:@@;@ @ ]@@$data .@s!a@=@@@<Ԡ @@@>@@?@ @ ^@@&of_set /@@y@@@@!a@C@@A@ v#Set$Make E!t@@@B@@@D@@E@@F@ @ _@@7transpose_keys_and_data 0@@@@G@@@H@@@I@@@J@@K@ @ `@@;transpose_keys_and_data_set 1@@@@L@@@MƠ #Set$Make {!t@@@N@@@O@@P@ @ a@@%print 2@@ &Format)formatter@@@Q@!a@V @@@R@@S@@T@ &Format)formatter@@@U@@@@W @@@X@@Y@@Z@@[@ .@ +b@@@@ / ,v@@@Ӡ#Tbl @#key 3;@@@A !t@@@ @@@@ B@@@ ?h@A@!t 4;!a@ @A@A 'Hashtbl$Make !t@@@O@B@@@ \@@@ Yi@A@&create 5@ =@@@&!a@@@@@@@ q@ Ve@@%clear 6@!a@@@@$unitF@@@@@@ @ lf@@%reset 7@'!a@@@@@@@@@@ @ g@@$copy 8@;!a@@@@C@@@@@@ @ h@@#add 9@O!a@!@@@@@@@ @ F@@@"@@#@@$@@%@ @ i@@&remove :@k!a@&@@@'@@@@(_@@@)@@*@@+@ @ j@@$find ;@!a@.@@@,@5@@@- @@/@@0@ @ k@@(find_opt <@!a@3@@@1@J@@@2&optionL@@@4@@5@@6@ @ l@@(find_all =@!a@9@@@7@f@@@8$listK@@@:@@;@@<@ 1@ m@@'replace >@Ѡ!a@?@@@=@@@@>@ @@@@@@A@@B@@C@ L@ 1n@@#mem ?@!a@D@@@E@@@@F L@@@G@@H@@I@ e@ Jo@@$iter @@@@@@J@!a@N@@@K@@L@@M@ @@@O@@@P@@Q@@R@ @ kp@@2filter_map_inplace A@@@@@S@!a@W@@@T@@U@@V@8@@@X#@@@Y@@Z@@[@ @ q@@$fold B@@@@@\@!a@`@#acc@b@@]@@^@@_@[@@@a@  @@c@@d@@e@ @ r@@&length C@i!a@f@@@g @@@h@@i@ @ s@@%stats D@}!a@j@@@k *statistics@@@l@@m@ @ t@@&to_seq E@!a@o@@@n&Stdlib#Seq!t@Q@@@p@@@q@@@r@@s@@ u@@+to_seq_keys F@@@t@@@u"#Seq!tl@@@v@@@w@@x@1@v@@-to_seq_values G@Ѡ!a@z@@@y=#Seq!t @@@{@@|@I@.w@@'add_seq H@!a@~@@@}@W#Seq!t@@@@@@@@@@@@@@@@@@p@Ux@@+replace_seq I@!a@@@@@~#Seq!t@@@@@@@@@@@@@@@@@@@|y@@&of_seq J@#Seq!t@@@@@!a@@@@@@L@@@@@@@z@@'to_list K@X!a@@@@ @Q!t@@@@@@@@@@@@@j@@'of_list L@ @i!t@@@@!a@@@@@@@@@@@@@k@@&to_map M@!a@@@@#Map$Make!t@@@@@@@l@@&of_map N@#Map$Make!t!a@@@@ @@@@@@.@+m@@'memoize O@Π!a@@@@@@@@@ @@@@@@@@@@@@@J@Gn@@#map P@!a@@@@@@ !b@@@@@@@@@@@f@co@@@@gdw@@@@@Gy " "HJ  @dT@@@Ӡ2Sig_component_kind @!t Q;@@%Valuej@@\N"&]N"-@@yV@$Typek@@eO.2fO.8@@W@+Constructorl@@nP9=oP9J@@X@%Labelm@@wQKOxQKV@@Y@&Modulen@@RW[RWc@@Z@+Module_typeo@@SdhSdu@@[@5Extension_constructorp@@TvzTv@@\@%Classq@@UU@@]@*Class_typer@@VV@@^@@@A@@@@@M@@A@U@A@)to_string R@b@@@@@@@@@XX@@_@@3can_appear_in_types S@@@@ @@@ @@ @[[@@@`@@@@L  \AD@a@@@Ӡ$Item @!t T;@@@A@@@@٠@!t@@@@@@@@@cPRcPx@@@@b@A@$name U@#@@@@@@@@@dy{dy@@!c@@$kind V@@@@'!t@@@@@@ee@@4d@@$make W@(@@@@=!t@@@1@@@@@@@@0g1g@@Me@@%value X@!t@@@E@@@@@@DiEi@@af@@%type_ Y@!t@@@Y@@@@@@Xj Yj!@@ug@@&constr Z@!t@@@m@@@@@@lk"$mk"=@@h@@%label [@!t@@@@@@@@@l>@l>X@@i@@'module_ \@!t@@@@@@@@@mY[mYu@@j@@+module_type ]@!t@@@@@@@@@nvxnv@@k@@5extension_constructor ^@'!t@@@@@@@@@oo@@l@@&class_ _@;!t@@@@@@@@@pp@@m@@*class_type `@O!t@@@@@@@@@qq@@n@@%print a@&Stdlib&Format)formatter@@@@@@@@@@@@@@@ss*@@o@@Ӡ#Map b@#key c;@@@A@@@@@@@u,Fu,R@@@@3p@A@!t d;!a@@A@A@I@B@@@'map.mliI V ZI V e@@@@+Stdlib__MapD@A@%empty e!a@@@@@L  L  @@E@@#add f@;@@@@!a@@  @@@$ @@@@@@@@@@3O  4O  @@2F@@+add_to_list g@@@@@!a@@>$listK@@@@@@I @@@@@@@@@@@@@]X  ^X  @@\G@@&update h@I@@@@@&optionL!a@@@@  @@@@@@v@@@z@@@@@@@@@@^^@@H@@)singleton i@u@@@@!a@@@@@@@@@jW[jW{@@I@@&remove j@@@@@!a@@@@@@@@@@@@oo@@J@@%merge k@@@@@@`!a@@@@@k!b@@@@t!c@@@@@@@@@@@@@@@@@@@@@@@@@@@@vY]x@@K@@%union l@@@@@@!a@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@)fj*f@@(L@@(cardinal m@)!a@@@@#intA@@@@@@BC@@AM@@(bindings n@B!a@@@@ @>@@@֠@@@@@@@@@c8<d8a@@bN@@+min_binding o@c!a@@@@@[@@@ܠ@@@@@@bfb@@~O@@/min_binding_opt p@!a@@@@#@{@@@ᠠ@@@@@@@@@JNJ|@@P@@+max_binding q@!a@@@@@@@@砠@@@@@@484[@@Q@@/max_binding_opt r@!a@@@@`@@@@젠@@@@@@@@@ @@R@@&choose s@ݠ!a@@@@@@@@@@@@@@@@S@@*choose_opt t@!a@@@@@@@@@@@@@@@@@@@T@@$find u@@@@@!a@@@@@@@@@23@@1U@@(find_opt v@@@@@7!a@@@@۠ @@@@@@@@OIMPIs@@NV@@*find_first w@@=@@@$boolE@@@@@@\!a@ @@@ @T@@@ @@@ @@ @@@x  y  D@@wW@@.find_first_opt x@@f@@@)@@@@@@!a@@@@'@@@@@@@@@@@@@@@"*"."*"l@@X@@)find_last y@@@@@U@@@@@@!a@@@@@@@@@@@@@ @@!@#_#c#_#@@Y@@-find_last_opt z@@@@@"|@@@#@@$@֠!a@&@@@%z@@@@'@@@(@@@)@@*@@+@$y$}$y$@@Z@@$iter {@@@@@,@!a@0$unitF@@@-@@.@@/@ @@@1 @@@2@@3@@4@%%%& @@[@@$fold |@@ @@@5@!a@9@#acc@;@@6@@7@@8@0@@@:@  @@<@@=@@>@A'%')B'3'l@@@\@@#map }@@!a@@!b@B@@?@M @@@AQ @@@C@@D@@E@`(e(ia(e(@@_]@@$mapi ~@@N@@@F@!a@I!b@K@@G@@H@q @@@Ju @@@L@@M@@N@))))@@^@@&filter @@r@@@O@!a@T;@@@P@@Q@@R@ @@@S@@@U@@V@@W@****@@_@@*filter_map @@@@@X@!a@\O!b@^@@@Y@@Z@@[@@@@] @@@_@@`@@a@ ,, ,,?@@`@@)partition @@@@@b@!a@h@@@c@@d@@e@ @@@f@@@@i@@@@g@@j@@k@@l@.../%@@a@@%split @@@@m@!a@q@@@n@ @@@r@@@@p@@@@o@@s@@t@@u@,$0'0+-$0'0\@@+b@@(is_empty @,!a@v@@@w@@@x@@y@C022!D022;@@Bc@@,is_singleton @C!a@z@@@{@@@|@@}@Z32l2p[32l2@@Yd@@#mem @F@@@~@_!a@@@@@@@@@@@@v822w823@@ue@@%equal @@!a@@*@@@@@@@@@@@@@@@:@@@@@@@@@@<3j3n<3j3@@f@@'compare @@!a@@t@@@@@@@@@@@@@@@@@@@@@@@@@B44B44@@g@@'for_all @@@@@@!a@{@@@@@@@@ՠ @@@@@@@@@@@F5r5vF5r5@@h@@&exists @@@@@@!a@@@@@@@@@ @@@@@@@@@@@ K66" K66Q@@ i@@'to_list @ !a@@@@Ӡ@@@@@@@@@@@@@-R66.R67@@,j@@'of_list @@!@@@@!a@@@@@@?@@@@@@NV7]7aOV7]7@@Mk@@&to_seq @N!a@@@@&Stdlib#Seq!t@P@@@@@@@@@@@@u\888<v\888a@@tl@@*to_rev_seq @u!a@@@@'#Seq!t@t@@@@@@@@@@@@`88`88@@m@@+to_seq_from @@@@@!a@@@@P#Seq!t@@@@Š@@@@@@@@@@@d9;9?d9;9p@@n@@'add_seq @l#Seq!t@@@@ʠ@!a@@@@@@@٠ @@@ݠ@@@@@@@@i: :i: :=@@o@@&of_seq @#Seq!t@@@@Ҡ@!a@@@@@@@@@@@@m::m::@@p@@@@;u,.%@Wq@@@@@>b>>?vSV@[r@@@#var ;@@@A!t@@@@@@@OxXXPxXj@@@@ls@A@!t ;@@#uid@@{!t@@@@@@hykviyk@@w@$desc@@$desc @@@vykwyk@@x@,approximated@@@@@ykyk@@y@@@A@@@@@ykkyk@@@@t@A@;@@#VarS@@@@@{{@@z@#Abs@@@T@@@@@||@@{@#App@@@@@@@@}}@@|@&Struct#Map!t'@@@@@@@@~~@@}@%Alias5@@@@@@@~@$Leaf@@@@@$ProjK@@@/!t@@@@@1@@@@)Comp_unit @@@@@24 2I@@%A@%Error@@@@@JLJ]@@3B@@@A@@@@@z@@@@6u@B@%print @5&Format)formatter@@@@@@@@@@@@@@@4__5_@@QC@@2strip_head_aliases @@@@@@@@@@EF@@bD@@9for_unnamed_functor_param @@@@QR@@nE@@)fresh_var $nameh@@@@@@@!t@@@@@@@@@@@@@@@@@@z{@@F@@#var @$!t@@@@!t@@@@@@@@@@@:@@G@@#abs #uidDD!t@@@@@@@@@@@ @@@@@@@@@@@@@;;;`@@H@@#app #uidgg!t@@@@@@@*@@@#arg1@@@4@@@@@@@@@@aaa@@I@@#str #uid!t@@@@@@@0#Map!tV@@@@@@Z@@@@@@@@@@ J@@%alias #uid!t@@@@@@@u@@@x@@@@@@@@!"@@>K@@$proj #uidР!t@@@@@@@@@@@x!t@@@@@@@@@@@@@FG@@cL@@$leaf @!t@@@@@@@@@YZ@@vM@@-decompose_abs @@@@@@@@栠@@@@@@@@@@@@xy>@@N@@3for_persistent_unit @@@@@@@@@@@@@e@@O@@/leaf_for_unpack @@@@fff}@@P@@Ӡ#Map @%shape ;@@@A@@@@@@@@@@@Q@A@!t ;@@@A#Map!t@@@@@@@@@@@@@@R@@@%empty @@@@@@S@@#add @@@@@!t@@@@E@@@@@@ @@ @@ @@ @@@T@@)add_value @-@@@ @o!t@@@@!t@@@?@@@@@@@@@@  %@@(U@@.add_value_proj @M@@@@!t@@@@?@@@]@@@@@@@@@@)&(*&W@@FV@@(add_type @k@@@@!t@@@@]@@@{@@@@@@@ @@!@GY[HY@@dW@@-add_type_proj @@@@"@!t@@@#@{@@@$@@@%@@&@@'@@(@ef@@X@@*add_constr @@@@)@!t@@@*@@@@+@@@,@@-@@.@@/@@@Y@@/add_constr_proj @@@@0@!t@@@1@@@@2@@@3@@4@@5@@6@@@Z@@)add_label @@@@7@%!t@@@8@X!t@@@9@@@:@@;@@<@@=@E@@[@@.add_label_proj @@@@>@E!t@@@?@@@@@@@@A@@B@@C@@D@FHFw@@\@@*add_module @!@@@E@c!t@@@F@@@@G1@@@H@@I@@J@@K@y{y@@]@@/add_module_proj @?@@@L@!t@@@M@1@@@NO@@@O@@P@@Q@@R@@@8^@@/add_module_type @]@@@S@!t@@@T@!t@@@Uo@@@V@@W@@X@@Y@;< @@X_@@4add_module_type_proj @}@@@Z@!t@@@[@o@@@\@@@]@@^@@_@@`@YZE@@v`@@+add_extcons @@@@a@!t@@@b@@@@c@@@d@@e@@f@@g@wGIxGu@@a@@0add_extcons_proj @@@@h@!t@@@i@@@@j@@@k@@l@@m@@n@vxv@@b@@)add_class @@@@o@!t@@@p@L!t@@@q@@@r@@s@@t@@u@@@c@@.add_class_proj @@@@v@9!t@@@w@@@@x@@@y@@z@@{@@|@ @@d@@.add_class_type @@@@}@W!t@@@~@!t@@@'@@@@@@@@@@   <@@e@@3add_class_type_proj @5@@@@w!t@@@@'@@@E@@@@@@@@@@=?=s@@.f@@@@tw@2g@@@)dummy_mod x@@@@!yy"y@@>h@@'of_path *find_shape@ E!t@@@@!t@@@@@@@@@@)namespace Y!t@@@@$Path!t@@@@@@@@@@@@@VW @@si@@/set_uid_if_none @@@@@!t@@@@@@@@@@@no3@@j@@@&U9%Shape0mA;HXߠ)Unit_info0ڀh%(-Stdlib__Uchar056uf4[_+Stdlib__Set0kb'G|PIF(+Stdlib__Seq0nwzG&amg+Stdlib__Map0hؤ5O8% By/Stdlib__Hashtbl0ѱN][/!.Stdlib__Format0ɢb tLir.Stdlib__Either0Vy`u~c à.Stdlib__Domain0Bj|5s)ڠ.Stdlib__Buffer08APF< t.&Stdlib0Lku]8_٠$Path0(|r>8۠dwx,Identifiable0~ܽǞ+%Ident0ki8' x%+Š*Format_doc0]mWϓ:Mݠ8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037d8?C%Shape*ocaml.text&_none_@@A q Shapes are an abstract representation of modules' implementations which allow the tracking of definitions through functor applications and other module-level operations. The Shape of a compilation unit is elaborated during typing, partially reduced (without loading external shapes) and written to the [cmt] file. External tools can retrieve the definition of any value (or type, or module, etc) by following this procedure: - Build the Shape corresponding to the value's path: [let shape = Env.shape_of_path ~namespace env path] - Instantiate the [Shape_reduce.Make] functor with a way to load shapes from external units and to looks for shapes in the environment (usually using [Env.shape_of_path]). - Completely reduce the shape: [let shape = My_reduce.(weak_)reduce env shape] - The [Uid.t] stored in the reduced shape should be the one of the definition. However, if the [approximate] field of the reduced shape is [true] then the [Uid.t] will not correspond to the definition, but to the closest parent module's uid. This happens when Shape reduction gets stuck, for example when hitting first-class modules. - The location of the definition can be easily found with the [cmt_format.cmt_uid_to_decl] table of the corresponding compilation unit. See: - {{:https://icfp22.sigplan.org/details/mlfamilyworkshop-2022-papers/10/Module-Shapes-for-Modern-Tooling} the design document} - {{:https://www.lix.polytechnique.fr/Labo/Gabriel.Scherer/research/shapes/2022-ml-workshop-shapes-talk.pdf} a talk about the reduction strategy 0typing/shape.mliP88r  @@@@@@3@@@@@@#intA;@@@A@@@@@:@A@$charB;@@A@@@@@>@A@&stringQ;@@ A@@@@@B@@@%bytesC;@@ A@@@@@F@@@%floatD;@@A@@@@@J@@@$boolE;@@%falsec@@T@$trued@@Z@@@A@@@@@[@A@$unitF;@@"()e@@e@@@A@@@@@f@A@ #exnG;@@@A@@@@@j@@@#effH;@@O@A@A@@@@@@s@@@,continuationI;@@Q@@P@B@A@nY@@@@@@@@@%arrayJ;@@R@A@A@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern @ @0Division_by_zero]#@@@A  @+End_of_file\#$@@@A@'FailureY#,@'@@A!$$@0Invalid_argumentX#5@0@@A*$-#-@-Match_failureV#>@@=@9@;@@a@@A;5>4>@)Not_foundZ#O@@@AC=F<F@-Out_of_memoryW#W@@@AKENDN@.Stack_overflow^#_@@@ASMVLV@.Sys_blocked_io_#g@@@A[U^T^@)Sys_error[#o@j@@Ad^g]g@:Undefined_recursive_modulea#x@@w@s@u@@h@@Auoxnx@:Continuation_already_takenb#@@@A}wv@&Stdlib@Ax#UidhAy " )y " ,@T@@БA+!tBz 3 :z 3 ;@@;@@0Compilation_unitk@@@@@{ F J{ F f@@A@$Item)comp_unit@@|@@@| g w| g @@B@"id@@@@@| g | g @@C@$from8@@)Unit_info,intf_or_impl@@@W| g | g @@D@@@| g k| g @@E@(Internal9@@}  }  @@F@&Predef:@@@Z@@~  ~  @@G@@@@@@@@@z 3 5@@@@@@@#ZZ{ F L{ F \@S@г\&string{ F `]@@c3@s;@@@@@@@@@@@@@Ab@@@@d@#``| g m| g q@6@#bb] | g @\@@Ш@гe&string| g | g @@m@@p@@@l@#hhc| g @b@@Ш@гk#int(| g )| g @@s-@@v@@0@r@#nne1| g @d@@Ш@гq)Unit_info<| g =| g @v@| g t@u@@Ev@@@@XH@z@@@v@#rrI}  p@o@@@s@#ooO~  P~  @h@гq&stringY~  r@@x]s@@@@u@@@@q@@3XWWXXXXX@V@Aru@&reinit;e@  f@  @б@г$unitp@  q@  @@ @@@t3rqqrrrrr@q@A@@г,$unit@  @  @@ @@@u@@@@@v@@@@   @@M@@ @@"mk<B  B  @б,current_unitг&optionB  B  !@г!t)Unit_infoB  B  @ B  B  @@@@@@w3@F[4@A @@@" @@@y@@г9!tB  &B  '@@ @@@z@@8@@{B   @@@B   @@N@@@@6of_compilation_unit_idfC ( .C ( D@б@г%Ident!t%IdentC ( GC ( L@ C ( MC ( N@@@@@@3@Bl*@A @@гu!tC ( RC ( S@@ @@@@@@@@@@@C ( * @@(O@@ @@,of_predef_idgD T ZD T f@б@г;!t%Ident*D T i+D T n@ .D T o/D T p@@@@@@310011111@:Z(@A @@г!t>D T t?D T u@@ @@@@@@@@@@@ID T V @@aP@@ @@C@#eltGC;@@@Ac!t@@@y@@@@@@@K@A@!tHC;@@@A#Set$Makeu!t@@@x@@@@@@@L@A@%emptyI@@@w@@+Stdlib__SetE@@#addJ@2@@@v@@@@u@@@t@@s@@r@@F@@)singletonK@@@@q$@@@p@@o@$@#G@@&removeL@"@@@n@4@@@m7@@@l@@k@@j@7@6H@@%unionM@B@@@i@G@@@hJ@@@g@@f@@e@J@II@@%interN@U@@@d@Z@@@c]@@@b@@a@@`@]@\J@@(disjointO@h@@@_@m@@@^$boolE@@@]@@\@@[@s@rK@@$diffP@~@@@Z@@@@Y@@@X@@W@@V@@L@@(cardinalQ@@@@U#intA@@@T@@S@@M@@(elementsR@@@@R$listK@@@Q@@@P@@O@@N@@'min_eltS@@@@N@@@M@@L@@O@@+min_elt_optT@@@@K&optionL@@@J@@@I@@H@@P@@'max_eltU@@@@G@@@F@@E@@Q@@+max_elt_optV@@@@D#@@@C@@@B@@A@@R@@&chooseW@@@@@@@@?@@>@@S@@*choose_optX@ @@@=D@@@<@@@;@@:@@T@@$findY@@@@9@!@@@8@@@7@@6@@5@$@#U@@(find_optZ@"@@@4@4@@@3o.@@@2@@@1@@0@@/@<@;V@@*find_first[@@<@@@.@@@-@@,@R@@@+H@@@*@@)@@(@U@TW@@.find_first_opt\@@U@@@'@@@&@@%@k@@@$e@@@#@@@"@@!@@ @s@rX@@)find_last]@@s@@@@@@@@@@@@@@@@@@@@@Y@@-find_last_opt^@@@@@,@@@@@@@@@ݠ@@@@@@@@@@@@Z@@$iter_@@@@@$unitF@@@@@@@@@  @@@ @@ @@ @@[@@$fold`@@@@@ @#acc@c@@@@@@@@@  @@@@@@@@\@@&filtera@@@@@@@@@@@@@@@@@@@@@@@^@@*filter_mapb@@@@@A@@@@@@@@@@@@@@@@@@@@@_@@)partitionc@@@@@@@@@@@,@@@@3@@@@8@@@@@@@@@@8@7`@@%splitd@6@@@@H@@@@O@@@栠@@@@砠@Z@@@@@@@@@@Z@Ya@@(is_emptye@e@@@@@@@@@i@hb@@,is_singletonf@t@@@@@@@@@x@wc@@#memg@v@@@@@@@@@@@@@@@@d@@%equalh@@@@@@@@/@@@@@@@@@e@@'comparei@@@@@@@@@@@@@@@@@f@@&subsetj@@@@@@@@W@@@@@@@@@g@@'for_allk@@@@@h@@@@@@@@@q@@@@@@@@@h@@&existsl@@@@@@@@@@@@@@@@@@@@@@@i@@'to_listm@@@@e@@@@@@@@@@j@@+to_seq_fromn@ @@@@@@@&Stdlib#Seq!t@@@@@@@@@@@-@,l@@&to_seqo@8@@@#Seq!t5@@@@@@@@@C@Bm@@*to_rev_seqp@N@@@/#Seq!tK@@@@@@@@@Y@Xn@@'add_seqq@B#Seq!t^@@@@@@@q@@@t@@@@@@@@t@so@@&of_seqr@]#Seq!ty@@@@@@@@@@@@@p@@&outputs@H+out_channel@@@@@@@E@@@@@@@@@M@@%printt@_&Format)formatter@@@@@@@]@@@@@@@@@N@@)to_stringu@@@@&stringQ@@@@@@@O@@'of_listv@$listK@@@@@@@@@@@@@P@@#mapw@@@@@@@@@@@@@@@@@@@@@@@Q@@@@u@@@ӱ#Map?C@#keyxC;@@@A!t@@@@@@@ @@@ T@A@!tyC;!a@ |@A@A#Map$Make!t@@@I@B@@@$@@@#U@A@%emptyz !a@ z@@@@3@E@@#add{@>@@@@!a@ v@ @@@! @@@@@@@@@@O@F@@+add_to_list|@@@@@!a@ n@8$listK@@@@@@C @@@@@@@@@@@@@v@5G@@&update}@C@@@@@&optionL!a@ c@@@  @@@@@@m@@@q@@@@@@@@@@@^H@@)singleton~@l@@@@!a@ ]@@@@@@@@@sI@@&remove@@@@@!a@ W@@@@@@@@@@@@J@@%merge@@@@@@W!a@ L@@@@b!b@ J@@@k!c@ H@@@@@@@@@@Ѡ@@@@נ@@@۠@@@@@@@@@@ @K@@%union@@@@@@!a@ <@ @@@@@@@@@@@@@@@@@@@@@@@@@@@3@L@@(cardinal@!a@ 7@@@@@@@@@G@M@@(bindings@%!a@ 2@@@@$@@@@@@@@@@@@e@$N@@+min_binding@C!a@ ,@@@@>@@@@@@@@@~@=O@@/min_binding_opt@\!a@ '@@@ @[@@@@@@@@@@@@@[P@@+max_binding@z!a@ !@@@@u@@@@@@@@@@tQ@@/max_binding_opt@!a@ @@@@@@@@@@@@@@@@@@R@@&choose@!a@ @@@@@@@@@@@@@@S@@*choose_opt@ʠ!a@ @@@w@@@@@@@@@@@@@ @T@@$find@@@@@!a@ @@@@@@@@@U@@(find_opt@@@@@!a@ @@@ @@@@@~@@}@9@V@@*find_first@@@@@|$boolE@@@{@@z@$!a@ @@@y@@@@x@@@w@@v@@u@_@W@@.find_first_opt@@.@@@t&@@@s@@r@H!a@ @@@q@G@@@p@@@o@@@n@@m@@l@@GX@@)find_last@@W@@@kO@@@j@@i@q!a@ @@@h@l@@@g@@@f@@e@@d@@kY@@-find_last_opt@@{@@@cs@@@b@@a@!a@ @@@`B@@@@_@@@^@@@]@@\@@[@@Z@@$iter@@@@@Z@!a@ $unitF@@@Y@@X@@W@Ơ@@@V @@@U@@T@@S@@[@@$fold@@@@@R@!a@ @#acc@ @@Q@@P@@O@@@@N@  @@M@@L@@K@@\@@#map@@!a@ !b@ @@J@ @@@I @@@H@@G@@F@5@]@@$mapi@@@@@E@!a@ !b@ @@D@@C@$ @@@B( @@@A@@@@@?@V@^@@&filter@@%@@@>@!a@ #@@@=@@<@@;@E @@@:I@@@9@@8@@7@w@6_@@*filter_map@@F@@@6@!a@ !b@ @@@5@@4@@3@k@@@2o@@@1@@0@@/@@\`@@)partition@@l@@@.@!a@ j@@@-@@,@@+@ @@@*@@@@(@@@@)@@'@@&@@%@@a@@%split@@@@$@!a@ @@@#@ @@@ @b@@@!@Ġ@@@"@@@@@@@@b@@(is_empty@Р!a@ @@@@@@@@@ @c@@,is_singleton@!a@ @@@@@@@@@ @d@@#mem@@@@@!a@ @@@@@@@@@@@ 3@e@@%equal@@!a@ @@@@@@@@@@@@@%@@@  @@@ @@ @@ @@ @ W@ f@@'compare@@!a@ u@ ,@@@@@@@@C@@@@I@@@ <@@@@@@@@@@ {@ :g@@'for_all@@J@@@@!a@ kH@@@@@@@@j @@@R@@@@@@@@ @ [h@@&exists@@k@@@@!a@ bi@@@@@@@@ @@@s@@@@@@@@ @ |i@@'to_list@!a@ \@@@h@@@@@@@@@@@@@ @ j@@&to_seq@!a@ V@@@&Stdlib#Seq!t@@@@頠@@@@@@@@@ @ l@@*to_rev_seq@ݠ!a@ P@@@$#Seq!t@@@@䠠@@@@@@@@@ @ m@@+to_seq_from@@@@@!a@ I@@@J#Seq!t@@@@ޠ@@@@@@@@@@@ F@ n@@'add_seq@c#Seq!t@@@@٠@!a@ ?@@@@@@; @@@?@@@@@@@@ m@ ,o@@&of_seq@#Seq!t@E@@@Ҡ@!a@ 8@@@@@`@@@@@@ @ Mp@@'of_list@Š@c@@@͠@!a@ 2@@@@@~@@@@@@ @ V@@.disjoint_union"eq&optionL@!a@ $@$boolE@@@@@@@@@@%print@ &Format)formatter@@@@ @@@@@@@@@@@)@@@@/@@@Ġ3@@@@@@@@@@@@ @ W@@+union_right@Р!a@ @@@@ڠ @@@ޠ@@@@@@@@ @ X@@*union_left@!a@ @@@@ @@@@@@@@@@@ &@ %Y@@+union_merge@@!a@ @@@@@@ @@@@@@@@@@@@@@@@@ F@ EZ@@&rename@$@@@@@@@@@@@@@@@@@@ ]@ \[@@(map_keys@@,@@@/@@@@@@E!a@@@@M@@@@@@@@ {@ z\@@$keys@Y!a@@@@ D#Set$Make !t@@@@@@ @ ]@@$data@s!a@@@@Ԡ @@@@@@ @ ^@@&of_set@@y@@@!a@@@@ v#Set$Make E!t@@@@@@@@@@@ @ _@@7transpose_keys_and_data@@@@@@@@@@@@@@@@ @ `@@;transpose_keys_and_data_set@@@@@@@Ơ #Set$Make {!t@@@@@@@@@ @ a@@%print@@ &Format)formatter@@@@!a@ @@@@@@@@ &Format)formatter@@@@@@@~ @@@}@@|@@{@@z@ ,@ +b@@@@ - ,v@@@ӱ#Tbl@C@#keyC;@@@A !t@@@n@@@@ @@@@ ?h@A@!tC;!a@ &@A@A 'Hashtbl$Make !t@@@mO@B@@@ Z@@@ Yi@A@&create@ =@@@l&!a@ #@@@k@@j@ o@ Ve@@%clear@!a@ @@@i$unitF@@@h@@g@ @ lf@@%reset@'!a@ @@@f@@@e@@d@ @ g@@$copy@;!a@ @@@cC@@@b@@a@ @ h@@#add@O!a@ @@@`@@@@_@ F@@@^@@]@@\@@[@ @ i@@&remove@k!a@ @@@Z@@@@Y_@@@X@@W@@V@ @ j@@$find@!a@ @@@U@5@@@T @@S@@R@ @ k@@(find_opt@!a@ @@@Q@J@@@P&optionL@@@O@@N@@M@ @ l@@(find_all@!a@ @@@L@f@@@K$listK@@@J@@I@@H@ /@ m@@'replace@Ѡ!a@ @@@G@@@@F@ @@@E@@D@@C@@B@ J@ 1n@@#mem@!a@ @@@A@@@@@ L@@@?@@>@@=@ c@ Jo@@$iter@@@@@<@!a@ @@@;@@:@@9@ @@@8@@@7@@6@@5@ @ kp@@2filter_map_inplace@@@@@4@!a@ @@@3@@2@@1@8@@@0#@@@/@@.@@-@ @ q@@$fold@@@@@,@!a@ @#acc@ @@+@@*@@)@[@@@(@  @@'@@&@@%@ @ r@@&length@i!a@ @@@$ @@@#@@"@ @ s@@%stats@}!a@ @@@! *statistics@@@ @@@ @ t@@&to_seq@!a@ @@@&Stdlib#Seq!t@Q@@@@@@@@@@@@@ u@@+to_seq_keys@@@ @@@"#Seq!tl@@@@@@@@@/@v@@-to_seq_values@Ѡ!a@ @@@=#Seq!t @@@@@@G@.w@@'add_seq@!a@ @@@@W#Seq!t@@@@@@@@@@@@@@@ @@ @n@Ux@@+replace_seq@!a@ @@@ @~#Seq!t@@@@ @@@ @@@@@@@@@@@@|y@@&of_seq@#Seq!t@@@@@!a@ @@@@@L@@@@@@@z@@'to_list@X!a@ @@@ @Q!t@@@@@@@@@@@@@j@@'of_list@ @i!t@@@@!a@ @@@@@@@@@@@@k@@&to_map@!a@ @@@#Map$Make!t@@@@@@@l@@&of_map@#Map$Make!t!a@ @@@ @@@@@@,@+m@@'memoize@Π!a@ @@@@@@@@ @@@@@@@@@@@@@H@Gn@@#map@!a@ @@@@@ !b@ @@@@@@@@@@d@co@@@@edw@@@@f@ӱwD@vD;@@@Au@@@@@@@t@@@sA@q@@@@@@@@p@@@@@@@@@m@k@@@@j@@@@@@@g@f@@@@@#@@@e@@@@@@@@@b@`@_\@@@@5@@@[@@@@@@@@@X@W@rVU@@@@H@@@T@@@@@@@@@S@@@R@@@jQ@@@@W@@@@@@@@@@@@@@d@@@@@@@@~@@@@!q@@@}@'w@@@|@@@{@@z@@y@@@@@@@x@:@@@w@@@v@@u@@t@@@@@@@s@N@@@r@@@q@@p@@o@#@@ӱPD@OD;@@@A`N@@@@@@@2@@@MA@LD;@@@AKJmI@@@@@@@?@@@HA@G@@@@G@F@D@&@@@@@@@@@@@@@@@Y@C@B@@@@@@@@@@e@A@@@@@@@-@@@0@@@@@@@@v@?@>@9@@@@>@@@A@@@~@@}@@|@@=@<@J@@@{@O@@@zR@@@y@@x@@w@@;@:@[@@@v@`@@@u9@@@t@@s@@r@@6@5@l@@@q@q@@@pt@@@o@@n@@m@@4@3@}@@@l2@@@k@@j@@/@.@@@@i-@@@h@@@g@@f@@*@)@@@@e@@@d@@c@@(@'@@@@b&@@@a@@@`@@_@@#@"@@@@^@@@]@@\@@!@ @@@@[@@@Z@@@Y@@X@@@@@@@W@@@V@@U@@@@@@@T@@@S@@@R@@Q@*@@@@@@P@@@@O@@@N@@M@@L@;@@@@@@K@@@@J@@@I@@@H@@G@@F@P@@@@ @@@E@@@D@@C@@@@B@@@A@@@@@?@f@@@@!@@@>@@@=@@<@3@@@;/@@@:@@@9@@8@@7@@ @ @@;@@@6 @@@5@@4@M@@@3F@@@2@@1@@0@@ @ @@Q@@@/@@@.@@-@c@@@,_@@@+@@@*@@)@@(@@@@@k@@@'@@@&@@%@}@@@$@@@#@@"@@!@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@ @ @@@@@@@ @@@ @@@@@@@@@@@@@@@@@@@@@)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H@@@ @@@@@@@@@T@@@@@@@@@@@@`@@@@@@@(@@@@@@@@@@@q@@@4@@@@9@@@@@@@@@@@@@@E@@@@J@@@@@@@@@@@@@@V@@@@[@@@@@@@@@@@@@@@_@@@@@@@@@q@@@@@@@@@@@@@@@u@@@@@@@@@@@@@@@@@@@@@@@@@@Ҡ@@@@@@@@@@@@@@@@@@@ˠ@@@@@@@@@@@@@@@@@Ǡ@@@@@@@@@ @@@@@@à@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@2@@ @@@@@@@@@@@@@D@@ @@@@@ @@@@@@@@@@@V@@ @@@@@ @@@@@@@@@@@i@@ @,@@@@@@@@@u@@@1@@@@@@?@@@@@@@@@@@@@@C@@@@@@R@@@U@@@@@@@@@@@@@@ӱD@D;@@@A@@@@@@@@@@A@D;@A@Aj@@@@@@@@A@@@@@@@@)@@@@@@@@@@@@@@@@@@@@@@@@@@(@@@@@@0@@@@@@@@@@@@@@@~@3@@@@@}z@@@v~@@@@@@O@@@S@@@@@@@@@@@u@t@R@@@@sbv@@@@@@@@#@o@n@a@@@@qm@@@uq@@@@@@@@6@i@h@@v@@@@gf@@@@ba@@@]\@@@@@@@@@@v@@@@q@@@l@@@@@@@@@@a@X@W@@@@@@V@XR[@@@@@@@@@@a@@@@g@@@àk@@@@@@@@@@@Q@P@͠O@@@K@@@@@@@J@I@ڠH@@@D@@@@@U@@@@@@@@@C@B@A@@@@@@@@K@@@@@@=@<@;@@@7@@@@@H@@@@@@@@@6@5@4@@@@@@@@>@@@@@@0@/@..@@@*@.@@@@;@@@@@@@@@)@( @E'@@@@B@@@@1@@@@@@#@"!@X!@@@@X@@@@.@@@@@@@@&@@"@d@@@@t@@@@@@@@5@@#@s@@@@@@@@@@@@@@@H@@$@@@@@ @@@@@@ @@@@@@@@@@@@@@@e@@%@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @ &@@@@@ @@@@@@٠ @@@@@@@~@@@}@@|@@{@@ @ '@@@@@z @@@y@@x@ @@@w @@@@v@@@u@@@t@@s@@r@@ @ (@@@@@q@  @@@p@@o@@n@ @@@m @@@l@@k@@j@@ @ )@@@@@i@ @  @@h@@g@@f@1 @@@e@  @@d@@c@@b@@ @ *@@  @@a@A @@@`E @@@_@@^@@]@@ @ +@@F@@@\@  @@[@@Z@X @@@Y\ @@@X@@W@@V@@ @ ,@@]@@@U@  @@@T@@S@@R@r @@@Qv @@@P@@O@@N@7@ @ -@@w@@@M@   @@@L@@K@@J@ @@@I @@@H@@G@@F@R@ @ .@@@@@E@  @@@D@@C@@B@ @@@A@ @@@?@ @@@@@@>@@=@@<@v@ @ /@@@@;@Ġ @@@:@̠ @@@7@  @@@8@ؠ @@@9@@6@@5@@4@@ @ 0@ @@@3 @@@2@@1@@ @ 1@ @@@0 @@@/@@.@@ @ 2@@@@-@ @@@, @@@+@@*@@)@@ @ 3@@ @  @@@(@@'@@&@ @@@%@ @@@$ @@@#@@"@@!@@ @@ @ 4@@ @  @@@@@@@@3 @@@@9 @@@ @@@@@@@@@@@ @ 5@@=@@@@  |@@@@@@@@R @@@ {@@@@@@@@@ z@ y6@@V@@@@ x t@@@ @@ @@ @k @@@  s@@@ @@@@@/@ r@ q7@x p@@@ l@x@@@@ }@@@@@@@@F@ k@ j8@ i@@@ e b a@@@@@ x@@@@@@@@_@ `@ _9@ ^@@@ ~ Z Y@@@@@ m@@@@@@@@x@ X@ W:@@@@@Ơ V@@@  R Q@@@@@ e@@@@@@@@@@@ P@ O;@  N M@@@@@ L@@@@@@ R@@@ V@@@@@@@@@ H@ G<@  F E@@@@頠@ D@@@@@  H@@@@@@@ @@ ?=@ >@@@@䠠@ =@@@@@$ A@@@@@@@ 9@ 8> 7 5@ 2@ 4 .@@@@@@@@@@ + B@ ) (@@@@ F '@@@@@@@@@@@M O@@@@S U@@@W Y@@@@@@@@@@@@@ &@ %?@a $@@@@g *@@@k .@@@@@@@@,@ @ @@u @@@@{ $@@@ (@@@@@@@@@@ @ A@@ @  @@@@@ @@@@ %@@@ )@@@@@@@@@@Z@ @ B@@@@@@@@@@@@@@@@@@@o@ @ C@@@@@@@@@@@  @@@Ơ @@@@@@@@@ @ D@Р @@@J   @@@@@@@ @ E@ @@@  @@@@@@@ @ F@@@@@ @@@l   @@@ @@@@@@@@@ @ G@@@@@@@@@@@@@@@@@ @ H@@@@@@@"    @@@@@@@@@@ @ I@@  @@@@  @@@@@@@@  @@@@H @@@ @@@@@@@@@@ @ @@@  @@ӱ D@ JD;@@@A I @@@@@@@@@@ A@ KD; @A@A   W Ӡ @@@  @@*@@@ A@ L@ @@@ @@@@@@8@ @ M@  @@@ @@@@@~@E@ @ N@ @@@} @@@|@@{@R@ @ O@% @@@z) @@@y@@x@`@ @ P@3 @@@w@\@@@v@  @@@u@@t@@s@@r@u@ @ Q@H @@@q@@@@p @@@o@@n@@m@@ @ R@Z @@@l@'@@@k @@j@@i@@ @ S@i @@@h@6@@@g  @@@f@@e@@d@@ @ T@| @@@c@I@@@b  @@@a@@`@@_@@ @ U@ @@@^@\@@@]@  @@@\@@[@@Z@@Y@@ @ V@ @@@X@p@@@W @@@V@@U@@T@@ @ ~W@@~@@@S@ } y@@@R@@Q@@P@ @@@O x@@@N@@M@@L@@ w@ vX@@@@@K@ u q x@@@J@@I@@H@۠ ~@@@G p@@@F@@E@@D@@ o@ nY@@@@@C@ m@ i i@@B@@A@@@@ t@@@?@ q q@@>@@=@@<@,@ e@ dZ@ c@@@; _@@@:@@9@9@ ^@ ][@  \@@@8 X V@@@7@@6@G@ U@ T\@ S@@@5 O L K@@@@4@ b@@3@@@2@@1@`@ J@ I]@3 H@@@0 h F E@@@/@@@.@@-@s@ D@ C^@F B@@@, { > = H@@@+@@*@@ <@ ;_@V :@@@)@  6 5@,@@@(@ K@@'@@@& 4@@@%@@$@@#@@ 3@ 2`@t 1@@@"@  - ,@J@@@!@ B@@ @@@ +@@@@@@@@@ *@ )a@  ( '@b@@@@ &@@@@@ *@@@@@@@ "@ !b@ @@@ @  @@@@ .@@@@@@@@@ @ c@ @ / @@@@ @@@@@Ѡ @@@@@ @@ @ d@۠ @@@    G  @@@ @@ @@ @ e@   U  @@@  @@@@@@,@ @ f@ @@@@@@@@ @@@@@@ @@@@@@@B@ @ g@ @@@@@  @@ @@@@@@@@T@ @@@T @@@AI  s@@t@@A@@v@o=@6@@@     m [ HѠa@3WVVWWWWW@ð @  A@  @  @  @  @  @@@         u t a@ ` _A@ X WA@ M L@ G F@ 7 6@ - ,@  @  @  @  @  @  @  @  @  @  @  @  @  @ s r@ ` _@ L K@ 4 3@  @  @  @  @  @  @  @ | {@ r q@ h g@ Y X@ J I@ ; :@ , +@  @  @@@@@@@@{z@qp@cb@@@M@LKA@DCA@76@0/@@@@@@@|{@qp@\[@KJ@65@%$@@@@@@@@wv@XW@A@@,+@@@@@@@@}|@ml@SR@98@"!@  @@@@@@xw@cb@21@ @ @@@@@@@@ts@@@`3R@QPA@IHA@<;@0/@%$@@ @@@@@@@@@kj@VU@KJ@?>@('@@ @@@@@@~}@nm@ZY@@@ 9@AH  y " / J  @@)ocaml.doc l A [Uid.t] is associated to every declaration in signatures and implementations. They uniquely identify bindings in the program. When associated with these bindings' locations they are useful to external tools when trying to jump to an identifier's declaration or definition. They are stored to that effect in the [uid_to_decl] table of cmt files.  t   x  !@@@@@@@ y " "@ @2Sig_component_kinduE L   L @ a@@БA+!tiF M M@@;@@%Valuej@@ N"& N"-@@ V@$Typek@@ O.2 O.8@@ W@+Constructorl@@ P9= P9J@@ X@%Labelm@@ QKO QKV@@ Y@&Modulen@@ RW[ RWc@@!Z@+Module_typeo@@ Sdh Sdu@@! [@5Extension_constructorp@@ Tvz Tv@@!\@%Classq@@!U!U@@!]@*Class_typer@@! V! V@@!%^@@@A@@@@@!M@@A@!(U@@#UU!N"(S@R@@@V@#RR!O.4P@O@@@S@#OO!#P9?M@L@@@P@#LL!)QKQJ@I@@@M@#II!/RW]G@F@@@J@#FF!5SdjD@C@@@G@#CC!;Tv|A@@@@@D@#@@!AU>@=@@@A@#==!GV;@:@@@>@@A@:@@3!F!E!E!F!F!F!F!F@!E@A@@@yG@@@ @@ @A@@  @  @  @  @@@ @@  @  @  @  @ x w@ f@ e dA@ ] \A@ R Q@ L K@ < ;@ 2 1@ # "@  @  @  @  @  @  @  @  @  @  @  @  @ x w@ e d@ Q P@ 9 8@ % $@  @  @  @  @  @  @  @ w v@ m l@ ^ ]@ O N@ @ ?@ 1 0@  @  @  @  @  @  @  @  @  @  @ v u@ h g@@@@@ T@ S RA@ K JA@ > =@ 7 6@ # "@  @  @  @  @  @  @ x w@ c b@ R Q@ = <@ , +@  @  @@@@@@~}@_^@HG@32@#"@ @@@@@@@ts@ZY@@?@)(@@@@@@@~@ji@98@'&@@@@@@@@@{z@@@g:@@[@ZYA@RQA@ED@98@.-@#"@@@@@@@@@@ts@_^@TS@HG@10@ @@@@@@@@wv@cb@@@B@@@"@@@@@@!@A@)to_strings"X"X@б@г!t"X"X@@ @@@3""""""""@o@A@@г"&string"X"X@@ @@@@@@@@@@@"X @@"_@@ @@3can_appear_in_typest"[!"[4@б@г(!t"[7"[8@@ @@@3""""""""@1F@A@@г"$bool"[<"[@@@ @@@@@@@@@@@"[ @j D Whether the name of a component of that kind can appear in a type. # Z# Z@@@@@@@#"`@@@#@@@@@@1@d^A@yR@K$@@3########@8M&@A 3########@@A##L #$\AD@@@#&L  @@$ItemG#2b>E#3b>I@#Kr@@БA+!tvH#AcPW#BcPX@@;@@@A@#@@@@!t@@@@@@@@@#WcPR#XcPx@@@@#pb@@@AВ@г&string#ecP[#fcPa@@3#d#c#c#d#d#d#d#d@ @A@@x@@@M5;@@@A=@@@@@@@@%@@@"@A@@@г.2Sig_component_kind#cPd#cPv@5#cPw3@4@@<%5@@@G&)6@@8@@3########@&@A98@$namew#dy#dy@б@гb!t#dy#dy@@ @@@3########@Amg@A@@г#|&string#dy#dy@@ @@@@@@@@@@@#dy{ @@#c@@ @@$kindx#e#e@б@г!t#e#e@@ @@@3########@1F@A@@г9!t2Sig_component_kind#e#e@ #e#e@@@@@@ @@@@@! @@@#e @@$d@@@@!$makey$g$g@б@г#֠&string$ g$ g@@ @@@3$$ $ $$$$$@:O@A@@б@гt!t2Sig_component_kind$!g$"g@ $%g$&g@@@@@@ @@г!t$3g$4g@@ @@@'@@@@@*@@@0@@-3 @@@$Ag@@$Ye@@@@3%valuez$Li$Mi@б@г!l!t%Ident$[i$\i@ $_i$`i@@@@@@3$b$a$a$b$b$b$b$b@Uj(@A @@г.!t$oi$pi@@ @@@@@@@@@@@$zi @@$f@@ @@%type_{$j $j@б@г!!t%Ident$j$j@ $j$j@@@@@@3$$$$$$$$@:X(@A @@гg!t$j $j!@@ @@@@@@@@@@@$j  @@$g@@ @@&constr|$k"($k".@б@г!!t%Ident$k"1$k"6@ $k"7$k"8@@@@@@3$$$$$$$$@:X(@A @@г!t$k"<$k"=@@ @@@@@@@@@@@$k"$ @@%h@@ @@%label}$l>D$l>I@б@г"!t%Ident%l>L%l>Q@ % l>R% l>S@@@@@@3% % % % % % % % @:X(@A @@г٠!t%l>W%l>X@@ @@@@@@@@@@@%%l>@ @@%=i@@ @@'module_~%0mY_%1mYf@б@г"P!t%Ident%?mYi%@mYn@ %CmYo%DmYp@@@@@@3%F%E%E%F%F%F%F%F@:X(@A @@г!t%SmYt%TmYu@@ @@@@@@@@@@@%^mY[ @@%vj@@ @@+module_type%inv|%jnv@б@г"!t%Ident%xnv%ynv@ %|nv%}nv@@@@@@3%%~%~%%%%%@:X(@A @@гK!t%nv%nv@@ @@@@@@@@@@@%nvx @@%k@@ @@5extension_constructor%o%o@б@г"!t%Ident%o%o@ %o%o@@@@@@3%%%%%%%%@:X(@A @@г!t%o%o@@ @@@@@@@@@@@%o @@%l@@ @@&class_%p%p@б@г"!t%Ident%p%p@ %p%p@@@@@@3%%%%%%%%@:X(@A @@г!t%p%p@@ @@@@@@@@@@@& p @@&!m@@ @@*class_type&q&q@б@г#4!t%Ident&#q&$q@ &'q&(q@@@@@@3&*&)&)&*&*&*&*&*@:X(@A @@г!t&7q&8q@@ @@@@@@@@@@@&Bq @@&Zn@@ @@%print(&Ms&Ns @б@г$&Format)formatter&\s &]s@ &`s&as@@@@@@3&c&b&b&c&c&c&c&c@:X(@A @@б@г1!t&rs!&ss"@@ @@@@@г&,$unit&s&&s*@@ @@@@@@@@!@@@'@@$/ @@@&s@@&o@@@@*#MapI&u,5&u,8@&q@@УР%/#Map!S&u,;&u,>@ &u,?&u,@@@3&&&&&&&&@Mk)@A @@#key2@#key&u,K&u,N@+ @;@@@A@@@ 9@@@@&u,F&u,R@@@@&p@@@Aг !t&u,Q @@$ @@ @@"aJ;@@@A@@@"m@@@@@@@A@!tbJ;!a@ 8@A@A@I@B@@@'map.mliI V ZI V e@@@@+Stdlib__MapD@A@%emptyc!a@ 7@@@"l@L  L  @@E@@#addd@6@@@"k@!a@ 3@  @@@"j$ @@@"i@@"h@@"g@@"f@3O  4O  @@2F@@+add_to_liste@@@@"e@!a@ +@>$listK@@@"d@@@"cI @@@"b@@@"a@@"`@@"_@@"^@]X  ^X  @@\G@@&updatef@I@@@"]@@&optionL!a@ @@@"\  @@@"[@@"Z@v@@@"Yz@@@"X@@"W@@"V@@"U@^^@@H@@)singletong@u@@@"T@!a@ @@@"S@@"R@@"Q@jW[jW{@@I@@&removeh@@@@"P@!a@ @@@"O@@@"N@@"M@@"L@oo@@J@@%mergei@@@@@"K@`!a@ @@@"J@k!b@ @@@"It!c@ @@@"H@@"G@@"F@@"E@@@@"D@@@@"C@@@"B@@"A@@"@@@"?@vY]x@@K@@%unionj@@@@@">@!a@@ @@@"=@@"<@@";@@":@@@@"9@@@@"8@@@"7@@"6@@"5@@"4@)fj*f@@(L@@(cardinalk@)!a@@@@"3#intA@@@"2@@"1@BC@@AM@@(bindingsl@B!a@@@@"0 @>@@@"/@@@".@@@"-@@",@c8<d8a@@bN@@+min_bindingm@c!a@@@@"+@[@@@"*@@@")@@"(@bfb@@~O@@/min_binding_optn@!a@@@@"'#@{@@@"&@@@"%@@@"$@@"#@JNJ|@@P@@+max_bindingo@!a@@@@""@@@@"!@@@" @@"@484[@@Q@@/max_binding_optp@!a@@@@"`@@@@"@@@"@@@"@@"@ @@R@@&chooseq@ݠ!a@@@@"@@@@"@@@"@@"@@@S@@*choose_optr@!a@@@@"@@@@"@@@"@@@"@@"@@@T@@$finds@@@@"@!a@@@@"@@"@@" @23@@1U@@(find_optt@@@@" @7!a@@@@" ۠ @@@" @@" @@"@OIMPIs@@NV@@*find_firstu@@=@@@"$boolE@@@"@@"@\!a@@@@"@T@@@"@@@"@@"@@"@x  y  D@@wW@@.find_first_optv@@f@@@!)@@@!@@!@!a@@@@!'@@@@!@@@!@@@!@@!@@!@"*"."*"l@@X@@)find_lastw@@@@@!U@@@!@@!@!a@@@@!@@@@!@@@!@@!@@!@#_#c#_#@@Y@@-find_last_optx@@@@@!|@@@!@@!@֠!a@@@@!z@@@@!ꠠ@@@!@@@!@@!@@!@$y$}$y$@@Z@@$itery@@@@@!@!a@$unitF@@@!@@!@@!@ @@@! @@@!@@!@@!@%%%& @@[@@$foldz@@ @@@!@!a@@#acc@@@!@@!@@!@0@@@!@  @@!@@!@@!@A'%')B'3'l@@@\@@#map{@@!a@!b@@@!@M @@@!Q @@@!@@!@@!@`(e(ia(e(@@_]@@$mapi|@@N@@@!@!a@{!b@y@@!@@!@q @@@!u @@@!@@!@@!@))))@@^@@&filter}@@r@@@!@!a@p;@@@!@@!@@!@ @@@!@@@!@@!@@!@****@@_@@*filter_map~@@@@@!@!a@hO!b@f@@@!@@!@@!@@@@! @@@!@@!@@!@ ,, ,,?@@`@@)partition@@@@@!@!a@\@@@!@@!@@!@ @@@!@@@@!@@@@!@@!@@!@@!@.../%@@a@@%split@@@@!@!a@S@@@!@ @@@!@@@@!@@@@!@@!@@!@@!@,$0'0+-$0'0\@@+b@@(is_empty@,!a@N@@@!@@@!@@!@C022!D022;@@Bc@@,is_singleton@C!a@J@@@!@@@!@@!@Z32l2p[32l2@@Yd@@#mem@F@@@!@_!a@E@@@!@@@!@@!@@!@v822w823@@ue@@%equal@@!a@<@*@@@!@@!@@!@@@@!@@@@!:@@@!@@!@@!@@!@<3j3n<3j3@@f@@'compare@@!a@2@t@@@!@@!@@!@@@@!@@@@!@@@!@@!@@!@@!@B44B44@@g@@'for_all@@@@@!@!a@({@@@!@@!@@!@ՠ @@@!@@@!@@!@@!@F5r5vF5r5@@h@@&exists@@@@@!@!a@@@@!@@!@@!@ @@@!~@@@!}@@!|@@!{@ K66" K66Q@@ i@@'to_list@ !a@@@@!zӠ@@@@!y@@@!x@@@!w@@!v@-R66.R67@@,j@@'of_list@@!@@@!u@!a@@@!t@@@!s?@@@!r@@!q@NV7]7aOV7]7@@Mk@@&to_seq@N!a@ @@@!p&Stdlib#Seq!t@P@@@!o@@@!n@@@!m@@!l@u\888<v\888a@@tl@@*to_rev_seq@u!a@@@@!k'#Seq!t@t@@@!j@@@!i@@@!h@@!g@`88`88@@m@@+to_seq_from@@@@!f@!a@@@@!eP#Seq!t@@@@!d@@@!c@@@!b@@!a@@!`@d9;9?d9;9p@@n@@'add_seq@l#Seq!t@@@@!_@!a@@@!^@@@!]@٠ @@@!\ݠ@@@![@@!Z@@!Y@i: :i: :=@@o@@&of_seq@#Seq!t@@@@!X@!a@@@!W@@@!V@@@!U@@!T@m::m::@@p@@@PY7@@@-u,.9@S:@@  A@ v O@ H @ @@a@Z*@#@@@~N@G@@@@N@"@@@3-"-!-!-"-"-"-"-"@t@QPA@JHA@97@)'@  @@@@@MK@" @  @@@@@zx@`^@A?@+)@@@@@pn@LJ@*(@  @@@@vt@KI@64@!@@@@@yw@ZX@;9@@@@@@@@A3--------@ @A-b>L-vSV@@ - Shape's items are elements of a structure or, in the case of constructors and labels, elements of a record or variants definition seen as a structure. These structures model module components and nested types' constructors and labels. -^FF-a1=@@@@@@@-b>>@@A+#varK-xX]-xX`@@;@@ dA*!t@@@"o@@@@-xXX-xXj@@@@-s@@@Aг %Ident-xXc-xXh@-xXi@@@3--------@ \ @  A@ 7 @  @  @  Y@ R "@ @@}@vF@?@@@X@P@A@A@@@@@xv@b`@HF@  @@@@@qo@WU@86@@@@@@}{@XV@.,@ @@@@@`^@42@ @@@@@{y@YW@75@@@@@@ca@@@@@@@ @@@@@@ ;@@@A@@@"t@"n@@@@@@@@A@@@@3.T.S.S.T.T.T.T.T@@A@A+!tL.bykp.cykq@@;@@#uid@@-Р,!t@@@"@@@".vykv.wyk@@.w@$desc@@$descL@@@".yk.yk@@.x@,approximated@@.P@@@".yk.yk@@.y@@@A@@@@@.ykk.yk@@@@.t@@#22&.yky@%@@Ш@г5&option.yk.yk@г:#Uid.yk{.yk~@A.yk.yk@@@I3........@];@@@A@@@@@*@@@'=;@@@A@@@@@.z.J]@@@@.u@@A@@@Z @@]@@"@R@#NNG.yk@F@@Ш@гQ$desc.yk.yk@@Y@@\@@""@V@#RRM.yk@L@@Ш@гU$bool.ykV@@\0W@@_@@"3@[@@A@W@+ll.z.z@@;@@#VarZ@@@"@@.{.{@@/z@#Absh@@@"@@@"@@/|/|@@/){@#App@@@"@@@"@@/#}/$}@@/<|@&Struct #Map!t@@@#@@@$@@/:~/;~@@/S}@%Alias@@@$@@/H/I@@/a~@$Leaf@@/Q/R@@/j@$Proj@@@$ 6!t@@@$@@/f/g1@@/@@)Comp_unit/@@@@$@@/t24/u2I@@/A@%Error/N@@@$@@/JL@@/B@@@A@@@@@@@@@#/{/{@@г#var/{@@ݰ@@@@@#/|/|@@г#var/|/|@@@@г!t/|@@@@@@@#/}/}@@г!t/}/}@@@@г!t/}@@@@@@@#/~/~@@г$Item/~/~@/~/~@@/~@ @г!t/~/~@@8@@@9@@@@@#// @@г!t/@@I@@@@@#0@@@@@#0 0 #@@г!t0'0(@@`@@г$Item0!+0"/@0%0@@@p@@@@@#0,260-2?@@г&string062C@@@@@@@#0<JN0=JS@@гà&string0FJW@@@@@@@@A@@@30E0D0D0E0E0E0E0E@@A@%print0R_c0S_h@б@г.&Format)formatter0a_k0b_q@ 0e_r0f_{@@@@@@$:30h0g0g0h0h0h0h0h@~ @A @@б@г!t0x_0y_@@ @@@$;@@г02$unit0_0_@@ @@@$<@@@@@$="@@@(@@$>%0 @@@0__@@0C@@@@+2strip_head_aliases00@б@гG!t00@@ @@@$?300000000@Db@A@@гV!t00@@ @@@$@@@@@@$A@@@0 @@0D@@ @@9for_unnamed_functor_param00@г2#var00@@ @@@$B300000000@/D@A@@@0 @@0E@@ @@)fresh_var00@б$nameг0à&string00@@ @@@$C300000000@#6!@A@@б@г/!t#Uid1 1 @ 1 1@@@@@@$D @@В@г#var1$1%@@ @@@$E+@@@гѠ!t1314@@ @@@$F:@@@@@ @@$GA @@@- @@$HD5@@U0N@@@$I @@$JL1K@@ @1N@@1fF@@@@S#var1Y1Z"@б@г/!t#Uid1h%1i(@ 1l)1m*@@@@@@$K31o1n1n1o1o1o1o1o@u(@A @@б@г.!t%Ident1.13@ 1415@@@@@@$L @@г2!t191:@@ @@@$M'@@@@@$N*@@@0@@$O-8 @@@1@@1G@@@@3#abs1;?1;B@б#uidг0;!t#Uid1;J1;M@ 1;N1;O@@@@@@$P311111111@Wu*@A @@б@г/#var1;S1;V@@ @@@$Q@@б@г!t1;Z1;[@@ @@@$R @@г!t1;_1;`@@ @@@$S-@@@@@$T0@@@%@@$U3( @@M<@@@$V @@$W:2;E@@ @2;;@@2H@@@@A#app2ae2ah@б#uidг0!t#Uid2"ap2#as@ 2&at2'au@@@@@@$X32)2(2(2)2)2)2)2)@e*@A @@б@г֠!t28ay29az@@ @@@$Y@@б#argг砐!t2Ia2Ja@@ @@@$Z"@@г!t2Va2Wa@@ @@@$[/@@@@$\22_a~ @@@(@@$]6+ @@P ?@@@$^ @@$_=2jak@@ @2maa@@2I@@@@D#str2x2y@б#uidг1!t#Uid22@ 22@@@@@@$`322222222@h*@A @@б@гp#Map!t$Item22@ 22@@22@ @гY!t22@@ @@@$a-@@@)@@@$c2 @@гk!t22@@ @@@$d?@@@@@$eB@@\K@@@$f @@$gI2@@ @2@@2J@@@@P%alias22@б#uidг1y!t#Uid22@ 33@@@@@@$h333333333@t*@A @@б@г!t33@@ @@@$i@@г!t33 @@ @@@$j@@@@@$k!@@;*@@@$l @@$m(3/@@ @32@@3JK@@@@/$proj3=3>@б#uidг1!t#Uid3N3O@ 3R3S@@@@@@$n33U3T3T3U3U3U3U3U@Ss*@A @@б@г!t3d3e@@ @@@$o@@б@гC!t$Item3w3x@ 3{3|@@@@@@$p) @@г'!t33@@ @@@$q6@@@@@$r9@@@.@@$s<1 @@VRE@@@$t @@$uC3@@ @3@@3L@@@@J$leaf33@б@г26!t#Uid3 3 @ 3 3@@@@@@$v333333333@l(@A @@гk!t33@@ @@@$w@@@@@$x@@@3 @@3M@@ @@-decompose_abs33&@б@г!t3)3*@@ @@@$y333333333@1O@A@@г3\&option383>@В@гf#var4 /4 2@@ @@@$z@@@г!t4546@@ @@@${,@@@@@ @@$|3 @@@1 @@@$~84,./@@@?@@$<B2@@@425@@4JN@@7@@B3for_persistent_unit4=@D4>@W@б@г4&string4H@Z4I@`@@ @@@$34J4I4I4J4J4J4J4J@[p@A@@г!t4W@d4X@e@@ @@@$@@@@@$@@@4b@@ @@4zO@@ @@/leaf_for_unpack4mfj4nfy@г!t4vf|4wf}@@ @@@$34x4w4w4x4x4x4x4x@/D@A@@@4ff @@4P@@ @@#MapM44@4g@@БA+%shapeN44@@;@@[AE@@@$@@@@44@@@@4Q@@@Aг !t4 @@344444444@7J5;@@@A#@@@$@$@@@@@@@@A@@@@344444444@ @A@@+!tO44@@;@@A#Map!ty@@@$@@@$@@@@44@@@@4R@@@Aг$Item44@44@@4@ @г !t44@@(344444444@Lf`@A@@@3%@@'@@'&@%empty5 5 @гJ!t55@@ @@@$355555555@UO@A@@@5 @@54S@@ @@#add5'5(@б@гj!t5253@@ @@@$35453535454545454@!4@A@@б@г!t$Item5G5H@ 5K5L@@@@@@$ @@б@г%shape5[5\@@ @@@$)@@г!t5h5i@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@5y@@5T@@@@E)add_value55@б@гǠ!t5 5 @@ @@@$355555555@^s@A@@б@г2!t%Ident55@ 55@@@@@@$ @@б@г49!t#Uid55@ 55 @@@@@@$2 @@г!t5$5%@@ @@@$?@@@@@$B@@@.@@$E6 @@@K@@$HN@@@5@@5U@@@@N.add_value_proj5&,5&:@б@г-!t5&=5&>@@ @@@$355555555@g|@A@@б@г3!t%Ident6 &B6 &G@ 6&H6&I@@@@@@$ @@б@г%shape6&M6&R@@ @@@$)@@гc!t6+&V6,&W@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@6<&(@@6TV@@@@E(add_type6GY_6HYg@б@г!t6RYj6SYk@@ @@@$36T6S6S6T6T6T6T6T@^s@A@@б@г3x!t%Ident6gYo6hYt@ 6kYu6lYv@@@@@@$ @@б@гߠ%shape6{Yz6|Y@@ @@@$)@@г!t6Y6Y@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@6Y[@@6W@@@@E-add_type_proj66@б@г砐!t66@@ @@@$366666666@^s@A@@б@г3!t%Ident66@ 66@@@@@@$ @@б@г<%shape66@@ @@@$)@@г!t66@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@6@@7X@@@@E*add_constr77@б@гD!t7 7 @@ @@@$377 7 77777@^s@A@@б@г42!t%Ident7!7"@ 7%7&@@@@@@$ @@б@г%shape7576@@ @@@$)@@гz!t7B7C@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@7S@@7kY@@@@E/add_constr_proj7^7_@б@г!t7i7j@@ @@@$37k7j7j7k7k7k7k7k@^s@A@@б@г4!t%Ident7~7@ 77 @@@@@@$ @@б@г%shape7 7@@ @@@$)@@гנ!t77@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@7@@7Z@@@@E)add_label77(@б@г!t7+7,@@ @@@$377777777@^s@A@@б@г4!t%Ident7075@ 7677@@@@@@$ @@б@г6p!t#Uid7;7>@ 7?7@@@@@@@$2 @@г=!t8D8E@@ @@@$?@@@@@$B@@@.@@$E6 @@@K@@$HN@@@8@@8.[@@@@N.add_label_proj8!FL8"FZ@б@гd!t8,F]8-F^@@ @@@$38.8-8-8.8.8.8.8.@g|@A@@б@г5R!t%Ident8AFb8BFg@ 8EFh8FFi@@@@@@$ @@б@г%shape8UFm8VFr@@ @@@$)@@г!t8bFv8cFw@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@8sFH@@8\@@@@E*add_module8~y8y@б@г!t8y8y@@ @@@$388888888@^s@A@@б@г5!t%Ident8y8y@ 8y8y@@@@@@$ @@б@г%shape8y8y@@ @@@$)@@г!t8y8y@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@8y{@@8]@@@@E/add_module_proj88@б@г!t88@@ @@@$388888888@^s@A@@б@г6 !t%Ident88@ 89@@@@@@$ @@б@гs%shape99@@ @@@$)@@гT!t99@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@9-@@9E^@@@@E/add_module_type9899@б@г{!t9C9D@@ @@@$39E9D9D9E9E9E9E9E@^s@A@@б@г6i!t%Ident9X9Y@ 9\9]@@@@@@$ @@б@г7!t#Uid9p9q@ 9t9u@@@@@@$2 @@г!t9 9 @@ @@@$?@@@@@$B@@@.@@$E6 @@@K@@$HN@@@9@@9_@@@@N4add_module_type_proj99(@б@г᠐!t9+9,@@ @@@$399999999@g|@A@@б@г6!t%Ident9095@ 9697@@@@@@$ @@б@г6%shape9;9@@@ @@@$)@@г!t9D9E@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@9@@:`@@@@E+add_extcons9GM9GX@б@г>!t:G[:G\@@ @@@$3::::::::@^s@A@@б@г7,!t%Ident:G`:Ge@ :Gf: Gg@@@@@@$ @@б@г%shape:/Gk:0Gp@@ @@@$)@@гt!t:<Gt:=Gu@@ @@@$6@@@@@$9@@@%@@$<- @@@B@@$?E@@@:MGI@@:ea@@@@E0add_extcons_proj:Xv|:Yv@б@г!t:cv:dv@@ @@@$3:e:d:d:e:e:e:e:e@^s@A@@б@г7!t%Ident:xv:yv@ :|v:}v@@@@@@$ @@б@г%shape:v:v@@ @@@$)@@гѠ!t:v:v@@ @@@$6@@@@@$9@@@%@@%<- @@@B@@%?E@@@:vx@@:b@@@@E)add_class::@б@г!t::@@ @@@%3::::::::@^s@A@@б@г7!t%Ident::@ ::@@@@@@% @@б@г9j!t#Uid::@ ::@@@@@@%2 @@г7!t:;@@ @@@%?@@@@@%B@@@.@@%E6 @@@K@@%HN@@@;@@;(c@@@@N.add_class_proj;;@б@г^!t;&;'@@ @@@% 3;(;';';(;(;(;(;(@g|@A@@б@г8L!t%Ident;;;<@ ;?;@@@@@@@%  @@б@г%shape;O;P@@ @@@% )@@г!t;\;] @@ @@@% 6@@@@@% 9@@@%@@%<- @@@B@@%?E@@@;m@@;d@@@@E.add_class_type ;x ;y @б@г!t; "; #@@ @@@%3;;;;;;;;@^s@A@@б@г8!t%Ident; '; ,@ ; -; .@@@@@@% @@б@г:-!t#Uid; 2; 5@ ; 6; 7@@@@@@%2 @@г!t; ;; <@@ @@@%?@@@@@%B@@@.@@%E6 @@@K@@%HN@@@;  @@;e@@@@N3add_class_type_projà;=C;=V@б@г!!t;=Y;=Z@@ @@@%3;;;;;;;;@g|@A@@б@г9!t%Ident;=^;=c@ <=d<=e@@@@@@% @@б@гv%shape<=i<=n@@ @@@%)@@гW!t<=r< =s@@ @@@%6@@@@@%9@@@%@@%<- @@@B@@%?E@@@<0=?@@C>C@ H > D> D3@ I Ulysse Gérard, Thomas Refis, Tarides >E44>E4@ H >F>F@ H Copyright 2021 Institut National de Recherche en Informatique et >G>G@ H en Automatique. >!H>"Hh@ H >'Iii>(Ii@ H All rights reserved. This file is distributed under the terms of >-J>.J@ H the GNU Lesser General Public License version 2.1, with the >3K>4KO@ H special exception on linking described in the file LICENSE. >9LPP>:LP@ H >?M>@M@ H************************************************************************>EN>FN6@ r* Shapes are an abstract representation of modules' implementations which allow the tracking of definitions through functor applications and other module-level operations. The Shape of a compilation unit is elaborated during typing, partially reduced (without loading external shapes) and written to the [cmt] file. External tools can retrieve the definition of any value (or type, or module, etc) by following this procedure: - Build the Shape corresponding to the value's path: [let shape = Env.shape_of_path ~namespace env path] - Instantiate the [Shape_reduce.Make] functor with a way to load shapes from external units and to looks for shapes in the environment (usually using [Env.shape_of_path]). - Completely reduce the shape: [let shape = My_reduce.(weak_)reduce env shape] - The [Uid.t] stored in the reduced shape should be the one of the definition. However, if the [approximate] field of the reduced shape is [true] then the [Uid.t] will not correspond to the definition, but to the closest parent module's uid. This happens when Shape reduction gets stuck, for example when hitting first-class modules. - The location of the definition can be easily found with the [cmt_format.cmt_uid_to_decl] table of the corresponding compilation unit. See: - {{:https://icfp22.sigplan.org/details/mlfamilyworkshop-2022-papers/10/Module-Shapes-for-Modern-Tooling} the design document} - {{:https://www.lix.polytechnique.fr/Labo/Gabriel.Scherer/research/shapes/2022-ml-workshop-shapes-talk.pdf} a talk about the reduction strategy >K m* A [Uid.t] is associated to every declaration in signatures and implementations. They uniquely identify bindings in the program. When associated with these bindings' locations they are useful to external tools when trying to jump to an identifier's declaration or definition. They are stored to that effect in the [uid_to_decl] table of cmt files.  E* Whether the name of a component of that kind can appear in a type. H * Shape's items are elements of a structure or, in the case of constructors and labels, elements of a record or variants definition seen as a structure. These structures model module components and nested types' constructors and labels. 4 Smart constructors >W>X@ * This function returns the shape corresponding to a given path. It requires a callback to find shapes in the environment. It is generally more useful to rely directly on the [Env.shape_of_path] function to get the shape associated with a given path. @-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I&typing"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c>> H/home/touraine/ci/builds/workspace/main/flambda/false/label/ocaml-arm-32 >10/.-,+*)('&%$#"! @@0V ΅k|V3>>>>>>>>@>@@8CamlinternalFormatBasics0%FU(Q/Tu*Format_doc0]mWϓ:Mݠ;Ӑ0ki8' x%+Š,Identifiable0~ܽǞ+0(|r>8۠dwx>0mA;HXߠ&Stdlib0Lku]8_٠.Stdlib__Buffer08APF< t..Stdlib__Domain0Bj|5s)ڠ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ɢb tLir/Stdlib__Hashtbl0ѱN][/!+Stdlib__Map0hؤ5O8% By+Stdlib__Seq0nwzG&amg+Stdlib__Set0kb'G|PIF(-Stdlib__Uchar056uf4[_<ː0ڀh%(@0mA;HXAe;t;==@  =)<@@%~@@ې 4'=A<@@@n@=f= @w@_@@ΰ=@=@@@U ?==F@&@ bm#=p=@/ΐ' ʐ #A ;<3@  ej@@q-@]@װ