Caml1999I037 * Š.Stdlib__Option!t;!a@@A$None@@*option.mliXX@@A@$Some@@ X X@@ B@@@A&optionL @@@Y@@@@@X@@@@-@@A@$none!a@@@@@*[<<+[<P@@?C@@$some@!a@)@@@@@@>^kk?^k@@SD@@%value@9!a@@@@'default  @@@@@VaWa@@kE@@#get@Q!a@@@@@@@jdkd5@@F@@$bind@e!a@@@@@@ r!b@@@@@@{ @@@@@@@@ii@@G@@$join@!a@@@@@@@ @@@@@@l''l'O@@H@@#map@@!a@!b@@@@@@@@@@@@@@@oo@@I@@'product@ʠ!a@@@@@ՠ!b@@@@ޠ@@@@@@@@@@@@r  r X@@J@@$fold$none!a@$some@!b@@@@ @@@@@@@@@@xx @@0K@@$iter@@!a@$unitF@@@@@@$@@@ @@@@@@@@=| o o>| o @@RL@@%blend@@!a@@@@@@@B @@@@I@@@N@@@@@@@@@@c  d  "@@xM@@'is_none@^!a@@@@$boolE@@@@@@}G  ~G  @@N@@'is_some@x!a@@@@@@@@@@J L LJ L k@@O@@%equal@@!a@@1@@@@@@@@@@@@@@@C@@@@@@@@@@M  M  @@P@@'compare@@!a@@#intA@@@@@@@@ɠ@@@@Р@@@@@@@@@@@@@Q  Q  @@Q@@)to_result$none!e@@!a@@@@&Stdlib&result @@@@@@@@W w wW w @@$R@@'to_list@ !a@@@@$listK @@@@@@*[+[*@@?S@@&to_seq@%!a@@@@:#Seq!t @@@@@@F^vvG^v@@[T@@Ӡ&Syntax@$let*@G!a@v@@@u@@ T!b@y@@@w@@x] @@@z@@{@@|@risi@@U@@$and*@m!a@@@@}@x!b@@@@~@@@@@@@@@@@@ll9@@V@@$let+@!a@@@@@@ !b@@@@@@@@@@@oegoe@@W@@$and+@!a@@@@@à!b@@@@̠@@@@@@@@@@@@rr@@X@@@@gt(+@Y@@@@_L.Stdlib__Option0zf**=+Stdlib__Seq0nwzG&amg.Stdlib__Either0Vy`u~c à&Stdlib0Lku]8_٠8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037X :7wC.Stdlib__Option*ocaml.text&_none_@@A l Option values. Option values explicitly indicate the presence or absence of a value. @since 4.08 *option.mliP77T@@@@@@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@Ax5 {1:options Options} VV@@@@@@A+!tAXX@А!a@3@;@@@A@A@@@@@@G@B@@@XX@)ocaml.doc @ The type for option values. Either [None] or a value [Some v]. YY:@@@@@@@@@@@@AXX@@BA@;0@A$None@@XX@@A@$SomeBB@@@X,@@B@@@ADLB@@@@Y@@@@@96@@&@#@@@@@#XX@@А!a ]XJ@@@@ @@Aг&optionXX@А!a%lX X@@@,o @@]ZYX@XX@@@X@X@@hg@$none[<@ [<D@г&option([<J)[<P@А!a@B@30//00000@/o@A6[<G7[<I@@@ @@@ @@@?[<<@3 [none] is [None]. L\QQM\Qi@@@@@@@eC@@'@`@@@@@@($somec^kod^ks@б@А!a@B@3lkklllll@=V4@Ar^kvs^kx@@гڠ&option{^k|^k@А!a^k|^k~@@@@@@ @@@!@@@@@^kk@ސ7 [some v] is [Some v]. __@@@@@@@D@@#@@@@@@@;%valueaa@б@г&optionaa@А!a@B@3@Zk>@Aaa@@@ @@@ @@б'defaultА!aaa@@А!aaa@@!!@@a@@@@@ @@@a @; G [value o ~default] is [v] if [o] is [Some v] and [default] otherwise. bb@@@@@@@E@@@K @@@@@@?#getd d#@б@гy&optiond)d/@А!a@B@3"!!"""""@^y>@A(d&)d(@@@ @@@ @@А!a 3d34d5@@@ @@@@@:d@ g [get o] is [v] if [o] is [Some v] and raise otherwise. @raise Invalid_argument if [o] is [None]. Ge66Hgr@@@@@@@`F@@@[@@@@@@1$bind^i_i@б@гȠ&optioniiji@А!a@B@3qppqqqqq@Pk>@Awixi@@@ @@@ @@б@б@А!aii@@г&optionii@А!b@B@&ii@@@ @@@-@@@5@@0@@г &optionii@А!b>ii@@@#@@@E @@@@@Hi@@@G@@LJ@@@i@ E [bind o f] is [f v] if [o] is [Some v] and [None] if [o] is [None]. jj%@@@@@@@G@@'@#䐠@@@@@@k$joinl'+l'/@б@гQ&optionl'<l'B@г[&optionl'5l';@А!a@B@3@H@A l'2 l'4@@@ @@@ @@@&@@@ #@@г|&optionl'Il'O@А!a!$l'F%l'H@@@'@@@# @@@@@&$@@@0l''@ H [join oo] is [Some v] if [oo] is [Some (Some v)] and [None] otherwise. =mPP>mP@@@@@@@VH@@#@Q@@@@@@E#mapToUo@б@б@А!a@B@3_^^_____@\6@Aeofo@@А!b@B@ poqo@@@ @@@@б@гݠ&option~oo@А!a'"oo@@@-@@@) @@г&optionoo@А!b/7oo@@@5@@@> @@@@@A@@@4@@Do@@@o@ K [map f o] is [None] if [o] is [None] and [Some (f v)] if [o] is [Some v]. pp@@@@@@@I@@'@ ː@@@@@@d'productr $r +@б@г8&optionr 1r 7@А!a@ B@3@>@Ar .r 0@@@ @@@ @@б@гV&optionr >r D@А!b@ B@r ;r =@@@ @@@%@@гp&optionr Rr X@В@А!a<7r Ir K@@@А!b&?$r N%r P@@@@K@/@@H@@@# @@@M2r H!@@@0@@Q3$@@@O@@ TR'@@@;r  *@ y [product o0 o1] is [Some (v0, v1)] if [o0] is [Some v0] and [o1] is [Some v1] and [None] otherwise. @since 5.5 HsYYIv@@@@@@@aJ@@:@\@@@@@@s$fold_x`x@б$noneА!a@B@3jiijjjjj@6@Apxqx@@б$someб@А!b@B@xx@@А!axx@@@#@@ @@б@г&optionx x @А!b .x x @@@&@@@5 @@А!a>9x x @@@ C@@>@@:%@@Ax@@OJ@@Ex @@@x@ V [fold ~none ~some o] is [none] if [o] is [None] and [some v] if [o] is [Some v]. y  z ] m@@@@@@@K@@@א@@@@@@e$iter| o s| o w@б@б@А!a@#B@3@|6@A| o {| o }@@г$unit| o | o @@ @@@@@@@@@@б@гe&option| o | o @А!a)$ | o | o @@@/@@@+ @@гȠ$unit| o | o @@ @@@8@@@@@ ;@@@,@@!>'| o z @@@*| o o@z < [iter f o] is [f v] if [o] is [Some v] and [()] otherwise. 7}  8}  @@@@@@@PL@@@K@@@@@@^%blendN  O  @б@б@А!a@1B@$3YXXYYYYY@u6@A_  `  @@б@А!a g  h  @@А!am  n  @@@@@% @@@@@&@@б@гݠ&option~    @А!a-(    @@@3@@@(/ @@б@г&option    @А!aD?    @@@J@@@*F @@г &option    "@А!aYT    @@@_@@@,[ @@@@@-^@@@6@@.a9@@@N@@/d  @@@  @ [blend f o1 o2] is [o1] if [o2] is [None], [o2] if [o1] is [None], and [Some (f v1 v2)] if [o1] is [Some v1] and [o2] is [Some v2]. @since 5.5 @ # #C  @@@@@@@M@@*@$吠@@@@@@򐠠 & {1:preds Predicates and comparisons} E  E  @@@@@@3@1@A'is_none G  G  @б@гe&optionG  G  @А!a@8B@2 G  G  @@@ @@@4'@@гޠ$bool G  !G  @@ @@@54@@@@@67@@@+G   @{ 5 [is_none o] is [true] if and only if [o] is [None]. 8H  9H  J@@@@@@@QN@@@L@@@@@@V'is_some!OJ L PPJ L W@б@г&optionZJ L ][J L c@А!a@?B@93baabbbbb@up>@AhJ L ZiJ L \@@@ @@@; @@г4$boolvJ L gwJ L k@@ @@@<@@@@@=@@@J L L @ѐ 7 [is_some o] is [true] if and only if [o] is [Some o]. K l lK l @@@@@@@O@@@@@@@@@8%equal"M  M  @б@б@А!a@MB@@3@Oj6@AM  M  @@б@А!a M  M  @@г$boolM  M  @@ @@@A@@@!@@B@@@$@@C @@б@г;&optionM  M  @А!a4/M  M  @@@:@@@E6 @@б@гR&optionM  M  @А!aKFM  M  @@@Q@@@GM @@гƠ$boolM   M  @@ @@@HZ@@@@@I]@@@.@@J`1 @@@F@@KcM  @@@M  @j [equal eq o0 o1] is [true] if and only if [o0] and [o1] are both [None] or if they are [Some v0] and [Some v1] and [eq v0 v1] is [true]. 'N  (O 7 ~@@@@@@@@P@@"@z;@@@@@@'compare#>Q  ?Q  @б@б@А!a@[B@N3IHHIIIII@6@AOQ  PQ  @@б@А!a WQ  XQ  @@г3#int`Q  aQ  @@ @@@O@@@!@@P@@@$@@Q @@б@гԠ&optionuQ  vQ  @А!a4/|Q  }Q  @@@:@@@S6 @@б@г렐&optionQ  Q  @А!aKFQ  Q  @@@Q@@@UM @@гt#intQ  Q  @@ @@@VZ@@@@@W]@@@.@@X`1 @@@F@@YcQ  @@@Q  @ [compare cmp o0 o1] is a total order on options using [cmp] to compare values wrapped by [Some _]. [None] is smaller than [Some _] values. R  S  V@@@@@@@Q@@"@Ԑ@@@@@@ᐠ8 {1:convert Converting} U X XU X u@@@@@@3@1@A)to_result$W w {W w @б$noneА!e@hB@\W w W w @@б@гc&option W w  W w @А!a@fB@]/ W w  W w @@@ @@@_6@@г&result W w  W w @А!aD %W w  &W w @@А!e8K ,W w  -W w @@@'?@@@bS 4W w @@@% @@cW(@@LG@@dZ ;W w @@@ >W w w @ R [to_result ~none o] is [Ok v] if [o] is [Some v] and [Error none] otherwise.  KX   LY @@@@@@@ dR@@0@ _@@@@@@z'to_list% b[  c[@б@г̠&option m[ n[@А!a@pB@i3 u t t u u u u u@>@A {[ |[@@@ @@@k @@г $list [& [*@А!a [# [%@@@"@@@m @@@@@n!@@@ [@쐠 D [to_list o] is [[]] if [o] is [None] and [[v]] if [o] is [Some v].  \++ \+t@@@@@@@ S@@#@ @@@@@@@&to_seqe ^vz ^v@б@г *&option ^v ^v@А!a@ B@q3        @_z>@A ^v ^v@@@ @@@s @@гp#Seq!t ^v ^v@  ^v ^v@@А!a%  ^v ^v@@@+@@@ '@@@%@@ *(@@@ ^vv@S z [to_seq o] is [o] as a sequence. [None] is the empty sequence and [Some v] is the singleton sequence containing [v].  _ `@@@@@@@ )T@@$@c $@@@@@@I 2 13 {1:syntax Syntax}  .b /b2@@@@@@3 - , , - - - - -@[v1@A&SyntaxjB <g =g@ UY@@Б$let*f Ji Ki@б@г &option Ui Vi@А!a@ C@ 3 ] \ \ ] ] ] ] ]@0@A bi ci@@@ @@@ @@б@б@А!a qi ri@@г ٠&option zi {i@А!b@ C@ % i i@@@ @@@ ,@@@4@@ /@@г &option i i@А!b= i i@@@#@@@ D @@@@@ G i@@@G@@ KJ@@@ i@? [( let* )] is {!Option.bind}.  j j@@@@@@@ U@@'@  ϐ@@@@@@j$and*g l l @б@г <&option l l@А!a@ C@ 3        @>@A l l@@@ @@@  @@б@г Z&option l l%@А!b@ C@  l l@@@ @@@ %@@г t&option l3 l9@В@А!a<7 l* !l,@@@А!b&? (l/ )l1@@@@K@/@@ H@@@# @@@ M 6l)!@@@0@@ Q3$@@@O@@ TR'@@@ ?l*@ " [( and* )] is {!Option.product}.  Lm:< Mm:c@@@@@@@ eV@@:@  `@@@@@@s$let+h coek does@б@г ͠&option noey ooe@А!a@ C@ 3 v u u v v v v v@>@A |oev }oex@@@ @@@  @@б@б@А!a oe oe@@А!b@ C@  oe oe@@@& @@ !@@г &option oe oe@А!b/ oe oe@@@@@@ 6 @@@@@ 9 oe@@@8@@ =;@@@ oeg@ > [( let+ )] is {!Option.map}.  p p@@@@@@@ W@@'@  ڐ@@@@@@\$and+i r r@б@г G&option r r@А!a@ C@ 3        @{>@A r r@@@ @@@  @@б@г e&option r r@А!b@ C@  r r@@@ @@@ %@@г &option r !r@В@А!a<7 +r ,r@@@А!b&? 3r 4r@@@@K@/@@ H@@@# @@@ M Ar!@@@0@@ Q3$@@@O@@ TR'@@@ Jr*@ " [( and+ )] is {!Option.product}.  Ws Xs'@@@@@@@ pX@@:@  k@@@@@@s@"@-@ @&@@3 k j j k k k k k@|(@A A rg st(+@@  J Binding operators. See manual section 12.23 for details. @since 5.5  d44 fr@@@@@@@ g@U@@  A@ o M@ - @  @  X@ 8@f@F@_@?@t@T@w@W#@@l@l@L@@w@? :9@99@@@9@9@6{@@@3        @@y@@d @}@@B@A@ H************************************************************************ A@@ A@L@ H  BMM BM@ H OCaml  C C@ H  D D3@ H The OCaml programmers  E44 E4@ H  F F@ H Copyright 2018 Institut National de Recherche en Informatique et  G G@ H en Automatique.  H Hg@ H  Ihh Ih@ 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  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@ m* Option values. Option values explicitly indicate the presence or absence of a value. @since 4.08  6* {1:options Options}  !* #X $X@ A* The type for option values. Either [None] or a value [Some v].  j4* [none] is [None].  ࠠ8* [some v] is [Some v].  H* [value o ~default] is [v] if [o] is [Some v] and [default] otherwise.  : h* [get o] is [v] if [o] is [Some v] and raise otherwise. @raise Invalid_argument if [o] is [None].   F* [bind o f] is [f v] if [o] is [Some v] and [None] if [o] is [None].  h I* [join oo] is [Some v] if [oo] is [Some (Some v)] and [None] otherwise.  L* [map f o] is [None] if [o] is [None] and [Some (f v)] if [o] is [Some v].  z* [product o0 o1] is [Some (v0, v1)] if [o0] is [Some v0] and [o1] is [Some v1] and [None] otherwise. @since 5.5  W* [fold ~none ~some o] is [none] if [o] is [None] and [some v] if [o] is [Some v].  =* [iter f o] is [f v] if [o] is [Some v] and [()] otherwise.  * [blend f o1 o2] is [o1] if [o2] is [None], [o2] if [o1] is [None], and [Some (f v1 v2)] if [o1] is [Some v1] and [o2] is [Some v2]. @since 5.5 y '* {1:preds Predicates and comparisons} ^ 6* [is_none o] is [true] if and only if [o] is [None].  8* [is_some o] is [true] if and only if [o] is [Some o]. Š * [equal eq o0 o1] is [true] if and only if [o0] and [o1] are both [None] or if they are [Some v0] and [Some v1] and [eq v0 v1] is [true]. / * [compare cmp o0 o1] is a total order on options using [cmp] to compare values wrapped by [Some _]. [None] is smaller than [Some _] values. 9* {1:convert Converting} ~ S* [to_result ~none o] is [Ok v] if [o] is [Some v] and [Error none] otherwise.  E* [to_list o] is [[]] if [o] is [None] and [[v]] if [o] is [Some v].  {* [to_seq o] is [o] as a sequence. [None] is the empty sequence and [Some v] is the singleton sequence containing [v]. U4* {1:syntax Syntax} : K* Binding operators. See manual section 12.23 for details. @since 5.5 ꠠ * [( let* )] is {!Option.bind}.  #* [( and* )] is {!Option.product}. %?* [( let+ )] is {!Option.map}.  #* [( and+ )] is {!Option.product}.  @?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o2stdlib__Option.cmi"-c  D/builds/workspace/precheck/flambda/false/label/ocaml-linux-32/stdlib @@0E~4m̀~o~q3        @ @@8CamlinternalFormatBasics0%FU(Q/Tu&Stdlib0Lku]8_٠.Stdlib__Either0Vy`u~c à 0zf**=+Stdlib__Seq0nwzG&amg@0zf**=AZC]ư  ғ @@W@d| w @_@ q @_ Đ @2y  @ @  ?@ ~ @@@#r@     ~ ; {@@@P@@