From f00443c95d1a3c9057e1b97d478af6dacddd1ca2 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Fri, 9 Sep 2022 07:02:19 +0200 Subject: [PATCH 1/4] Mak promise a built-in type. Cleaner on hover and writing promise types explicitly. --- jscomp/gentype/TranslateTypeExprFromTypes.ml | 2 +- jscomp/main/builtin_cmi_datasets.ml | 6 ++-- jscomp/main/builtin_cmj_datasets.ml | 4 +-- jscomp/ml/predef.ml | 13 ++++++- jscomp/ml/predef.mli | 1 + jscomp/ml/typecore.ml | 1 + jscomp/others/js_promise.ml | 36 +++++++++---------- lib/4.06.1/unstable/all_ounit_tests.ml | 14 +++++++- lib/4.06.1/unstable/js_compiler.ml | 25 +++++++++---- lib/4.06.1/unstable/js_playground_compiler.ml | 25 +++++++++---- lib/4.06.1/whole_compiler.ml | 27 ++++++++++---- 11 files changed, 109 insertions(+), 45 deletions(-) diff --git a/jscomp/gentype/TranslateTypeExprFromTypes.ml b/jscomp/gentype/TranslateTypeExprFromTypes.ml index 88acbe4b9d..58db8cfc07 100644 --- a/jscomp/gentype/TranslateTypeExprFromTypes.ml +++ b/jscomp/gentype/TranslateTypeExprFromTypes.ml @@ -203,7 +203,7 @@ let translateConstr ~config ~paramsTranslation ~(path : Path.t) ~typeEnv = | [ "Js"; "null_undefined" ] ), [ paramTranslation ] ) -> { paramTranslation with type_ = Nullable paramTranslation.type_ } - | [ "Js"; "Promise"; "t" ], [ paramTranslation ] -> + | ([ "Js"; "Promise"; "t" ] | ["promise"]), [ paramTranslation ] -> { paramTranslation with type_ = Promise paramTranslation.type_ } | ( [ "Js"; "Internal"; "fn" ], [ { dependencies = argsDependencies; type_ = Tuple ts }; ret ] ) -> diff --git a/jscomp/main/builtin_cmi_datasets.ml b/jscomp/main/builtin_cmi_datasets.ml index d530487f89..f1c77a3800 100644 --- a/jscomp/main/builtin_cmi_datasets.ml +++ b/jscomp/main/builtin_cmi_datasets.ml @@ -1,4 +1,4 @@ -(* 481298ddf6a6c65d9542177270f4c5ed *) +(* 8d68a02b2c67ceea3dd9487a69b39b92 *) let module_names : string array = Obj.magic ( "Js" (* 6126 *), "Arg" (* 3634 *), @@ -74,7 +74,7 @@ let module_names : string array = Obj.magic ( "Belt_Float" (* 903 *), "Belt_Range" (* 1850 *), "Js_console" (* 3442 *), -"Js_promise" (* 2756 *), +"Js_promise" (* 2830 *), "Js_string2" (* 9269 *), "Js_weakmap" (* 174 *), "Js_weakset" (* 159 *), @@ -200,7 +200,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *) "\132\149\166\190\000\000\003s\000\000\000\206\000\000\002\213\000\000\002\186\192*Belt_Float\160\160\176\001\003\242%toInt@\192\176\193@\176\179\144\176D%float@@\144@\002\005\245\225\000\000\252\176\179\144\176A#int@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224+%intoffloatAA \160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\003\243'fromInt@\192\176\193@\176\179\144\004\021@\144@\002\005\245\225\000\000\249\176\179\144\004\031@\144@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224)%identityAA\004\023\160@@@\004\022@\160\160\176\001\003\244*fromString@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\245\176\179\144\176J&option@\160\176\179\144\004:@\144@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\004.@\160\160\176\001\003\245(toString@\192\176\193@\176\179\144\004F@\144@\002\005\245\225\000\000\242\176\179\144\004\028@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004B@\160\160\176\001\003\246!+@\192\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\237\176\193@\176\179\144\004`@\144@\002\005\245\225\000\000\238\176\179\144\004d@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241\144\224)%addfloatBA\004\\\160@\160@@@\004\\@\160\160\176\001\003\247!-@\192\176\193@\176\179\144\004t@\144@\002\005\245\225\000\000\232\176\193@\176\179\144\004z@\144@\002\005\245\225\000\000\233\176\179\144\004~@\144@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224)%subfloatBA\004v\160@\160@@@\004v@\160\160\176\001\003\248!*@\192\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\227\176\193@\176\179\144\004\148@\144@\002\005\245\225\000\000\228\176\179\144\004\152@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\002\005\245\225\000\000\231\144\224)%mulfloatBA\004\144\160@\160@@@\004\144@\160\160\176\001\003\249!/@\192\176\193@\176\179\144\004\168@\144@\002\005\245\225\000\000\222\176\193@\176\179\144\004\174@\144@\002\005\245\225\000\000\223\176\179\144\004\178@\144@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224)%divfloatBA\004\170\160@\160@@@\004\170@@\160\160*Belt_Float\1440\220\t\225\167\143TL\234\185\023\004\026t\228\210\161\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Belt_Range *) "\132\149\166\190\000\000\007&\000\000\001\179\000\000\005\214\000\000\005\182\192*Belt_Range\160\160\176\001\004b(forEachU@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\245\176\193@\176\179\144\004\b@\144@\002\005\245\225\000\000\246\176\193@\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\179\144\004\026@\144@\002\005\245\225\000\000\247\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\144@\002\005\245\225\000\000\250\176\179\144\004\007@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004c'forEach@\192\176\193@\176\179\144\0043@\144@\002\005\245\225\000\000\236\176\193@\176\179\144\0049@\144@\002\005\245\225\000\000\237\176\193@\176\193@\176\179\144\004A@\144@\002\005\245\225\000\000\238\176\179\144\004'@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\176\179\144\004+@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\004$@\160\160\176\001\004d&everyU@\192\176\193@\176\179\144\004T@\144@\002\005\245\225\000\000\226\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\227\176\193@\176\179\177\177\144\176@\004RA\004Q@&arity1\000\255\160\176\193@\176\179\144\004j@\144@\002\005\245\225\000\000\228\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231\176\179\144\004\007@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\004P@\160\160\176\001\004e%every@\192\176\193@\176\179\144\004\128@\144@\002\005\245\225\000\000\217\176\193@\176\179\144\004\134@\144@\002\005\245\225\000\000\218\176\193@\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\219\176\179\144\004$@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\221\176\179\144\004(@\144@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\004q@\160\160\176\001\004f(everyByU@\192\176\193@\176\179\144\004\161@\144@\002\005\245\225\000\000\205\176\193@\176\179\144\004\167@\144@\002\005\245\225\000\000\206\176\193\144$step\176\179\144\004\175@\144@\002\005\245\225\000\000\207\176\193@\176\179\177\177\144\176@\004\167A\004\166@&arity1\000\255\160\176\193@\176\179\144\004\191@\144@\002\005\245\225\000\000\208\176\179\144\004U@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\144@\002\005\245\225\000\000\211\176\179\144\004Z@\144@\002\005\245\225\000\000\212@\002\005\245\225\000\000\213@\002\005\245\225\000\000\214@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\004\163@\160\160\176\001\004g'everyBy@\192\176\193@\176\179\144\004\211@\144@\002\005\245\225\000\000\194\176\193@\176\179\144\004\217@\144@\002\005\245\225\000\000\195\176\193\144$step\176\179\144\004\225@\144@\002\005\245\225\000\000\196\176\193@\176\193@\176\179\144\004\233@\144@\002\005\245\225\000\000\197\176\179\144\004\127@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\199\176\179\144\004\131@\144@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202@\002\005\245\225\000\000\203@\002\005\245\225\000\000\204@\004\204@\160\160\176\001\004h%someU@\192\176\193@\176\179\144\004\252@\144@\002\005\245\225\000\000\184\176\193@\176\179\144\005\001\002@\144@\002\005\245\225\000\000\185\176\193@\176\179\177\177\144\176@\004\250A\004\249@&arity1\000\255\160\176\193@\176\179\144\005\001\018@\144@\002\005\245\225\000\000\186\176\179\144\004\168@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\144@\002\005\245\225\000\000\189\176\179\144\004\173@\144@\002\005\245\225\000\000\190@\002\005\245\225\000\000\191@\002\005\245\225\000\000\192@\002\005\245\225\000\000\193@\004\246@\160\160\176\001\004i$some@\192\176\193@\176\179\144\005\001&@\144@\002\005\245\225\000\000\175\176\193@\176\179\144\005\001,@\144@\002\005\245\225\000\000\176\176\193@\176\193@\176\179\144\005\0014@\144@\002\005\245\225\000\000\177\176\179\144\004\202@\144@\002\005\245\225\000\000\178@\002\005\245\225\000\000\179\176\179\144\004\206@\144@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\005\001\023@\160\160\176\001\004j'someByU@\192\176\193@\176\179\144\005\001G@\144@\002\005\245\225\000\000\163\176\193@\176\179\144\005\001M@\144@\002\005\245\225\000\000\164\176\193\144$step\176\179\144\005\001U@\144@\002\005\245\225\000\000\165\176\193@\176\179\177\177\144\176@\005\001MA\005\001L@&arity1\000\255\160\176\193@\176\179\144\005\001e@\144@\002\005\245\225\000\000\166\176\179\144\004\251@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\168@\144@\002\005\245\225\000\000\169\176\179\144\005\001\000@\144@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174@\005\001I@\160\160\176\001\004k&someBy@\192\176\193@\176\179\144\005\001y@\144@\002\005\245\225\000\000\152\176\193@\176\179\144\005\001\127@\144@\002\005\245\225\000\000\153\176\193\144$step\176\179\144\005\001\135@\144@\002\005\245\225\000\000\154\176\193@\176\193@\176\179\144\005\001\143@\144@\002\005\245\225\000\000\155\176\179\144\005\001%@\144@\002\005\245\225\000\000\156@\002\005\245\225\000\000\157\176\179\144\005\001)@\144@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\001r@@\160\160*Belt_Range\1440\192@X\13491\017\252j\198\193OH\002\2472\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_console *) "\132\149\166\190\000\000\r^\000\000\002\157\000\000\tu\000\000\b\204\192*Js_console\160\160\176\001\004\001#log@\192\176\193@\176\144\144!a\002\005\245\225\000\000\252\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@@\160'console@\160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004\002$log2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\247\176\193@\176\144\144!b\002\005\245\225\000\000\248\176\179\144\004\031@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224#logBA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145BE\196#log@@\160'console@\160@\160@@@\004\030@\160\160\176\001\004\003$log3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\240\176\193@\176\144\144!b\002\005\245\225\000\000\241\176\193@\176\144\144!c\002\005\245\225\000\000\242\176\179\144\004@@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246\144\224#logCA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145CE\196#log@@\160'console@\160@\160@\160@@@\004@@\160\160\176\001\004\004$log4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\231\176\193@\176\144\144!b\002\005\245\225\000\000\232\176\193@\176\144\144!c\002\005\245\225\000\000\233\176\193@\176\144\144!d\002\005\245\225\000\000\234\176\179\144\004h@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224#logDA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145DE\196#log@@\160'console@\160@\160@\160@\160@@@\004i@\160\160\176\001\004\005'logMany@\192\176\193@\176\179\144\176H%array@\160\176\144\144!a\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\134@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@A\160'console@\160@@@\004\132@\160\160\176\001\004\006$info@\192\176\193@\176\144\144!a\002\005\245\225\000\000\224\176\179\144\004\154@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@@\160'console@\160@@@\004\152@\160\160\176\001\004\007%info2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\219\176\193@\176\144\144!b\002\005\245\225\000\000\220\176\179\144\004\180@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224$infoBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$info@@\160'console@\160@\160@@@\004\179@\160\160\176\001\004\b%info3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\212\176\193@\176\144\144!b\002\005\245\225\000\000\213\176\193@\176\144\144!c\002\005\245\225\000\000\214\176\179\144\004\213@\144@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224$infoCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$info@@\160'console@\160@\160@\160@@@\004\213@\160\160\176\001\004\t%info4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\203\176\193@\176\144\144!b\002\005\245\225\000\000\204\176\193@\176\144\144!c\002\005\245\225\000\000\205\176\193@\176\144\144!d\002\005\245\225\000\000\206\176\179\144\004\253@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211\144\224$infoDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$info@@\160'console@\160@\160@\160@\160@@@\004\254@\160\160\176\001\004\n(infoMany@\192\176\193@\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\199@\144@\002\005\245\225\000\000\200\176\179\144\005\001\025@\144@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@A\160'console@\160@@@\005\001\023@\160\160\176\001\004\011$warn@\192\176\193@\176\144\144!a\002\005\245\225\000\000\196\176\179\144\005\001-@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\198\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@@\160'console@\160@@@\005\001+@\160\160\176\001\004\012%warn2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\191\176\193@\176\144\144!b\002\005\245\225\000\000\192\176\179\144\005\001G@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195\144\224$warnBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$warn@@\160'console@\160@\160@@@\005\001F@\160\160\176\001\004\r%warn3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\184\176\193@\176\144\144!b\002\005\245\225\000\000\185\176\193@\176\144\144!c\002\005\245\225\000\000\186\176\179\144\005\001h@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189@\002\005\245\225\000\000\190\144\224$warnCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$warn@@\160'console@\160@\160@\160@@@\005\001h@\160\160\176\001\004\014%warn4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\175\176\193@\176\144\144!b\002\005\245\225\000\000\176\176\193@\176\144\144!c\002\005\245\225\000\000\177\176\193@\176\144\144!d\002\005\245\225\000\000\178\176\179\144\005\001\144@\144@\002\005\245\225\000\000\179@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224$warnDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$warn@@\160'console@\160@\160@\160@\160@@@\005\001\145@\160\160\176\001\004\015(warnMany@\192\176\193@\176\179\144\005\001(\160\176\144\144!a\002\005\245\225\000\000\171@\144@\002\005\245\225\000\000\172\176\179\144\005\001\172@\144@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@A\160'console@\160@@@\005\001\170@\160\160\176\001\004\016%error@\192\176\193@\176\144\144!a\002\005\245\225\000\000\168\176\179\144\005\001\192@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@@\160'console@\160@@@\005\001\190@\160\160\176\001\004\017&error2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\163\176\193@\176\144\144!b\002\005\245\225\000\000\164\176\179\144\005\001\218@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224%errorBA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196%error@@\160'console@\160@\160@@@\005\001\217@\160\160\176\001\004\018&error3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\156\176\193@\176\144\144!b\002\005\245\225\000\000\157\176\193@\176\144\144!c\002\005\245\225\000\000\158\176\179\144\005\001\251@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162\144\224%errorCA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196%error@@\160'console@\160@\160@\160@@@\005\001\251@\160\160\176\001\004\019&error4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\147\176\193@\176\144\144!b\002\005\245\225\000\000\148\176\193@\176\144\144!c\002\005\245\225\000\000\149\176\193@\176\144\144!d\002\005\245\225\000\000\150\176\179\144\005\002#@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\144\224%errorDA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196%error@@\160'console@\160@\160@\160@\160@@@\005\002$@\160\160\176\001\004\020)errorMany@\192\176\193@\176\179\144\005\001\187\160\176\144\144!a\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144\176\179\144\005\002?@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@A\160'console@\160@@@\005\002=@\160\160\176\001\004\021%trace@\192\176\193@\176\179\144\005\002O@\144@\002\005\245\225\000\000\140\176\179\144\005\002S@\144@\002\005\245\225\000\000\141@\002\005\245\225\000\000\142\144\224%traceAA\t/\132\149\166\190\000\000\000\027\000\000\000\b\000\000\000\026\000\000\000\024\176\144\160\160@A@E\196%trace@@\160'console@\160@@@\005\002Q@\160\160\176\001\004\022)timeStart@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\137\176\179\144\005\002i@\144@\002\005\245\225\000\000\138@\002\005\245\225\000\000\139\144\224$timeAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$time@@\160'console@\160@@@\005\002g@\160\160\176\001\004\023'timeEnd@\192\176\193@\176\179\144\004\022@\144@\002\005\245\225\000\000\134\176\179\144\005\002}@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136\144\224'timeEndAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196'timeEnd@@\160'console@\160@@@\005\002{@@\160\160*Js_console\1440L`\184fJ:\215\143\159\251<\002\0161\210\129\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", -(* Js_promise *) "\132\149\166\190\000\000\n\176\000\000\002d\000\000\b-\000\000\007\210\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160A@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\144@\002\005\245\225\000\000\243\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\244\176\179\144\004\027@\144@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247\176\179\144\004 @\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\176\179\144\004T\160\004,@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\238\176\179\004\021\160\004\007@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004f@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0044@\144@\002\005\245\225\000\000\234\176\179\004)\160\176\144\144!a\002\005\245\225\000\000\235@\144@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004~@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\004C\160\176\144\144!a\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\228@\144@\002\005\245\225\000\000\229\176\179\004L\160\176\179\144\004\018\160\004\r@\144@\002\005\245\225\000\000\231@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\162@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\004d\160\176\144\144\"a0\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\221\160\176\179\004m\160\176\144\144\"a1\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\222\176\179\004u\160\176\146\160\004\020\160\004\012@\002\005\245\225\000\000\225@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\202@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\004\140\160\176\144\144\"a0\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\212\160\176\179\004\149\160\176\144\144\"a1\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\004\158\160\176\144\144\"a2\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\213\176\179\004\166\160\176\146\160\004\029\160\004\021\160\004\r@\002\005\245\225\000\000\217@\144@\002\005\245\225\000\000\218@\002\005\245\225\000\000\219\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\252@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\004\190\160\176\144\144\"a0\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\201\160\176\179\004\199\160\176\144\144\"a1\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\004\208\160\176\144\144\"a2\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\004\217\160\176\144\144\"a3\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\202\176\179\004\225\160\176\146\160\004&\160\004\030\160\004\022\160\004\014@\002\005\245\225\000\000\207@\144@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\0018@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\004\250\160\176\144\144\"a0\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\188\160\176\179\005\001\003\160\176\144\144\"a1\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\005\001\012\160\176\144\144\"a2\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\005\001\021\160\176\144\144\"a3\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\005\001\030\160\176\144\144\"a4\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184@\002\005\245\225\000\000\189\176\179\005\001&\160\176\146\160\004/\160\004'\160\004\031\160\004\023\160\004\015@\002\005\245\225\000\000\195@\144@\002\005\245\225\000\000\196@\002\005\245\225\000\000\197\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001~@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\005\001@\160\176\144\144\"a0\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\173\160\176\179\005\001I\160\176\144\144\"a1\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\005\001R\160\176\144\144\"a2\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\005\001[\160\176\144\144\"a3\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\005\001d\160\176\144\144\"a4\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\005\001m\160\176\144\144\"a5\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168@\002\005\245\225\000\000\174\176\179\005\001u\160\176\146\160\0048\160\0040\160\004(\160\004 \160\004\024\160\004\016@\002\005\245\225\000\000\181@\144@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\206@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001P\160\176\179\005\001\145\160\176\144\144!a\002\005\245\225\000\000\165@\144@\002\005\245\225\000\000\163@\144@\002\005\245\225\000\000\164\176\179\005\001\154\160\004\t@\144@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\157\176\179\005\001\174\160\176\004\005\002\005\245\225\000\000\159@\144@\002\005\245\225\000\000\155@\002\005\245\225\000\000\156\176\193@\176\179\005\001\181\160\004\012@\144@\002\005\245\225\000\000\158\176\179\005\001\185\160\004\011@\144@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\002\005@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002\011@\144@\002\005\245\225\000\000\147\176\179\005\001\202\160\176\004!\002\005\245\225\000\000\151@\144@\002\005\245\225\000\000\148@\002\005\245\225\000\000\149\176\193@\176\179\005\001\209\160\004\007@\144@\002\005\245\225\000\000\150\176\179\005\001\213\160\004\011@\144@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\005\002!@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\144\176\179\005\001\228\160\004\007@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224)%identityAA \160@@@\005\0025@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\005\001\244\160\176\144\144!a\002\005\245\225\000\000\142@\144@\002\005\245\225\000\000\141\004\005@\002\005\245\225\000\000\143\144\224&?awaitAA\004\020\160@@@\005\002H@@\160\160*Js_promise\1440'i\255\135\213\144\168\240\001pr\b{\245\206\200\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", +(* Js_promise *) "\132\149\166\190\000\000\n\250\000\000\002\147\000\000\b\147\000\000\b7\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\253@A@A\144\176\179\144\176Q'promise@\160\004\011@\144@\002\005\245\225\000\000\254\160Y@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\250\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241@\144@\002\005\245\225\000\000\242\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\243\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\144@\002\005\245\225\000\000\246\176\179\144\004 @\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249\176\179\144\004P\160\004,@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\237\176\179\144\004e\160\004\b@\144@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004g@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0045@\144@\002\005\245\225\000\000\233\176\179\144\004z\160\176\144\144!a\002\005\245\225\000\000\234@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004\128@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\229@\144@\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\159\160\176\179\144\004\020\160\004\014@\144@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\166@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\144\004\184\160\176\144\144\"a0\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220\160\176\179\144\004\194\160\176\144\144\"a1\002\005\245\225\000\000\222@\144@\002\005\245\225\000\000\219@\002\005\245\225\000\000\221\176\179\144\004\203\160\176\146\160\004\022\160\004\r@\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\209@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\144\004\227\160\176\144\144\"a0\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\144\004\237\160\176\144\144\"a1\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210\160\176\179\144\004\247\160\176\144\144\"a2\002\005\245\225\000\000\213@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\212\176\179\144\005\001\000\160\176\146\160\004 \160\004\023\160\004\014@\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\007@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\144\005\001\025\160\176\144\144\"a0\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\144\005\001#\160\176\144\144\"a1\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\144\005\001-\160\176\144\144\"a2\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198\160\176\179\144\005\0017\160\176\144\144\"a3\002\005\245\225\000\000\202@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\201\176\179\144\005\001@\160\176\146\160\004*\160\004!\160\004\024\160\004\015@\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001H@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\144\005\001Z\160\176\144\144\"a0\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\144\005\001d\160\176\144\144\"a1\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\144\005\001n\160\176\144\144\"a2\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\144\005\001x\160\176\144\144\"a3\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184\160\176\179\144\005\001\130\160\176\144\144\"a4\002\005\245\225\000\000\189@\144@\002\005\245\225\000\000\183@\002\005\245\225\000\000\188\176\179\144\005\001\139\160\176\146\160\0044\160\004+\160\004\"\160\004\025\160\004\016@\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\148@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\144\005\001\166\160\176\144\144\"a0\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\144\005\001\176\160\176\144\144\"a1\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\144\005\001\186\160\176\144\144\"a2\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\144\005\001\196\160\176\144\144\"a3\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\144\005\001\206\160\176\144\144\"a4\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168\160\176\179\144\005\001\216\160\176\144\144\"a5\002\005\245\225\000\000\174@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\173\176\179\144\005\001\225\160\176\146\160\004>\160\0045\160\004,\160\004#\160\004\026\160\004\017@\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001k\160\176\179\144\005\001\254\160\176\144\144!a\002\005\245\225\000\000\164@\144@\002\005\245\225\000\000\162@\144@\002\005\245\225\000\000\163\176\179\144\005\002\b\160\004\n@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\002\n@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\156\176\179\144\005\002\029\160\176\004\006\002\005\245\225\000\000\158@\144@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\176\193@\176\179\144\005\002%\160\004\014@\144@\002\005\245\225\000\000\157\176\179\144\005\002*\160\004\r@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\005\002'@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002-@\144@\002\005\245\225\000\000\146\176\179\144\005\002<\160\176\004%\002\005\245\225\000\000\150@\144@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\176\193@\176\179\144\005\002D\160\004\b@\144@\002\005\245\225\000\000\149\176\179\144\005\002I\160\004\r@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\005\002F@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\143\176\179\144\005\002Y\160\004\b@\144@\002\005\245\225\000\000\144@\002\005\245\225\000\000\145\144\224)%identityAA \160@@@\005\002[@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\144\005\002j\160\176\144\144!a\002\005\245\225\000\000\141@\144@\002\005\245\225\000\000\140\004\005@\002\005\245\225\000\000\142\144\224&?awaitAA\004\021\160@@@\005\002o@@\160\160*Js_promise\1440\0141\140\179\b+\200\207\131\168\131u\021\178\185\250\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_string2 *) "\132\149\166\190\000\000$!\000\000\006<\000\000\024\016\000\000\022g\192*Js_string2\160\177\176\001\004Y!t@\b\000\000,\000@@@A\144\176\179\144\176M&string@@\144@\002\005\245\225\000\000\254@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\160\176\001\004Z$make@\192\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\004\028@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004\024@\160\160\176\001\004[,fromCharCode@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\248\176\179\004\022@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@@@\160@@@\004-@\160\160\176\001\004\\0fromCharCodeMany@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\144@\002\005\245\225\000\000\245\176\179\0040@\144@\002\005\245\225\000\000\246@\002\005\245\225\000\000\247\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@A@\160@@@\004G@\160\160\176\001\004]-fromCodePoint@\192\176\193@\176\179\144\004/@\144@\002\005\245\225\000\000\241\176\179\004C@\144@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@@@\160@@@\004Z@\160\160\176\001\004^1fromCodePointMany@\192\176\193@\176\179\144\004-\160\176\179\144\004F@\144@\002\005\245\225\000\000\237@\144@\002\005\245\225\000\000\238\176\179\004[@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@A@\160@@@\004r@\160\160\176\001\004_&length@\192\176\193@\176\179\004j@\144@\002\005\245\225\000\000\234\176\179\144\004]@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&lengthAA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\012\000\000\000\011\176\145A@\168&length@\160@@@\004\133@\160\160\176\001\004`#get@\192\176\193@\176\179\004}@\144@\002\005\245\225\000\000\229\176\193@\176\179\144\004r@\144@\002\005\245\225\000\000\230\176\179\004\134@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224 BA:\132\149\166\190\000\000\000\006\000\000\000\003\000\000\000\b\000\000\000\b\176\145B@\153@\160@\160@@@\004\158@\160\160\176\001\004a&charAt@\192\176\193@\176\179\004\150@\144@\002\005\245\225\000\000\224\176\193@\176\179\144\004\139@\144@\002\005\245\225\000\000\225\176\179\004\159@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227@\002\005\245\225\000\000\228\144\224&charAtBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&charAt@@\160@\160@@@\004\183@\160\160\176\001\004b*charCodeAt@\192\176\193@\176\179\004\175@\144@\002\005\245\225\000\000\219\176\193@\176\179\144\004\164@\144@\002\005\245\225\000\000\220\176\179\144\176D%float@@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224*charCodeAtBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*charCodeAt@@\160@\160@@@\004\211@\160\160\176\001\004c+codePointAt@\192\176\193@\176\179\004\203@\144@\002\005\245\225\000\000\213\176\193@\176\179\144\004\192@\144@\002\005\245\225\000\000\214\176\179\144\176J&option@\160\176\179\144\004\202@\144@\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224+codePointAtBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+codePointAt@@\160@\160@@@\004\244@\160\160\176\001\004d&concat@\192\176\193@\176\179\004\236@\144@\002\005\245\225\000\000\208\176\193@\176\179\004\241@\144@\002\005\245\225\000\000\209\176\179\004\244@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211@\002\005\245\225\000\000\212\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concat@@\160@\160@@@\005\001\012@\160\160\176\001\004e*concatMany@\192\176\193@\176\179\005\001\004@\144@\002\005\245\225\000\000\202\176\193@\176\179\144\004\228\160\176\179\005\001\r@\144@\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\204\176\179\005\001\017@\144@\002\005\245\225\000\000\205@\002\005\245\225\000\000\206@\002\005\245\225\000\000\207\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concatA@\160@\160@@@\005\001)@\160\160\176\001\004f(endsWith@\192\176\193@\176\179\005\001!@\144@\002\005\245\225\000\000\197\176\193@\176\179\005\001&@\144@\002\005\245\225\000\000\198\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\199@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201\144\224(endsWithBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(endsWith@@\160@\160@@@\005\001D@\160\160\176\001\004g,endsWithFrom@\192\176\193@\176\179\005\001<@\144@\002\005\245\225\000\000\190\176\193@\176\179\005\001A@\144@\002\005\245\225\000\000\191\176\193@\176\179\144\005\0016@\144@\002\005\245\225\000\000\192\176\179\144\004!@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224(endsWithCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(endsWith@@\160@\160@\160@@@\005\001d@\160\160\176\001\004h(includes@\192\176\193@\176\179\005\001\\@\144@\002\005\245\225\000\000\185\176\193@\176\179\005\001a@\144@\002\005\245\225\000\000\186\176\179\144\004;@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189\144\224(includesBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(includes@@\160@\160@@@\005\001}@\160\160\176\001\004i,includesFrom@\192\176\193@\176\179\005\001u@\144@\002\005\245\225\000\000\178\176\193@\176\179\005\001z@\144@\002\005\245\225\000\000\179\176\193@\176\179\144\005\001o@\144@\002\005\245\225\000\000\180\176\179\144\004Z@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\002\005\245\225\000\000\184\144\224(includesCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(includes@@\160@\160@\160@@@\005\001\157@\160\160\176\001\004j'indexOf@\192\176\193@\176\179\005\001\149@\144@\002\005\245\225\000\000\173\176\193@\176\179\005\001\154@\144@\002\005\245\225\000\000\174\176\179\144\005\001\141@\144@\002\005\245\225\000\000\175@\002\005\245\225\000\000\176@\002\005\245\225\000\000\177\144\224'indexOfBA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181'indexOf@@\160@\160@@@\005\001\182@\160\160\176\001\004k+indexOfFrom@\192\176\193@\176\179\005\001\174@\144@\002\005\245\225\000\000\166\176\193@\176\179\005\001\179@\144@\002\005\245\225\000\000\167\176\193@\176\179\144\005\001\168@\144@\002\005\245\225\000\000\168\176\179\144\005\001\172@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172\144\224'indexOfCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'indexOf@@\160@\160@\160@@@\005\001\214@\160\160\176\001\004l+lastIndexOf@\192\176\193@\176\179\005\001\206@\144@\002\005\245\225\000\000\161\176\193@\176\179\005\001\211@\144@\002\005\245\225\000\000\162\176\179\144\005\001\198@\144@\002\005\245\225\000\000\163@\002\005\245\225\000\000\164@\002\005\245\225\000\000\165\144\224+lastIndexOfBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+lastIndexOf@@\160@\160@@@\005\001\239@\160\160\176\001\004m/lastIndexOfFrom@\192\176\193@\176\179\005\001\231@\144@\002\005\245\225\000\000\154\176\193@\176\179\005\001\236@\144@\002\005\245\225\000\000\155\176\193@\176\179\144\005\001\225@\144@\002\005\245\225\000\000\156\176\179\144\005\001\229@\144@\002\005\245\225\000\000\157@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160\144\224+lastIndexOfCA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181+lastIndexOf@@\160@\160@\160@@@\005\002\015@\160\160\176\001\004n-localeCompare@\192\176\193@\176\179\005\002\007@\144@\002\005\245\225\000\000\149\176\193@\176\179\005\002\012@\144@\002\005\245\225\000\000\150\176\179\144\005\001W@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153\144\224-localeCompareBA\t)\132\149\166\190\000\000\000\021\000\000\000\004\000\000\000\015\000\000\000\r\176\145B@\181-localeCompare@@\160@\160@@@\005\002(@\160\160\176\001\004o&match_@\192\176\193@\176\179\005\002 @\144@\002\005\245\225\000\000\141\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\000\142\176\179\144\005\001Y\160\176\179\144\005\002\012\160\176\179\144\005\001a\160\176\179\005\0029@\144@\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144@\144@\002\005\245\225\000\000\145@\144@\002\005\245\225\000\000\146@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\144\224%matchBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145BC\181%match@@\160@\160@@@\005\002T@\160\160\176\001\004p)normalize@\192\176\193@\176\179\005\002L@\144@\002\005\245\225\000\000\138\176\179\005\002O@\144@\002\005\245\225\000\000\139@\002\005\245\225\000\000\140\144\224)normalizeAA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181)normalize@@\160@@@\005\002f@\160\160\176\001\004q/normalizeByForm@\192\176\193@\176\179\005\002^@\144@\002\005\245\225\000\000\133\176\193@\176\179\005\002c@\144@\002\005\245\225\000\000\134\176\179\005\002f@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136@\002\005\245\225\000\000\137\144\224)normalizeBA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181)normalize@@\160@\160@@@\005\002~@\160\160\176\001\004r&repeat@\192\176\193@\176\179\005\002v@\144@\002\005\245\225\000\000\128\176\193@\176\179\144\005\002k@\144@\002\005\245\225\000\000\129\176\179\005\002\127@\144@\002\005\245\225\000\000\130@\002\005\245\225\000\000\131@\002\005\245\225\000\000\132\144\224&repeatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&repeat@@\160@\160@@@\005\002\151@\160\160\176\001\004s'replace@\192\176\193@\176\179\005\002\143@\144@\002\005\245\225\000\001\255y\176\193@\176\179\005\002\148@\144@\002\005\245\225\000\001\255z\176\193@\176\179\005\002\153@\144@\002\005\245\225\000\001\255{\176\179\005\002\156@\144@\002\005\245\225\000\001\255|@\002\005\245\225\000\001\255}@\002\005\245\225\000\001\255~@\002\005\245\225\000\001\255\127\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\181@\160\160\176\001\004t+replaceByRe@\192\176\193@\176\179\005\002\173@\144@\002\005\245\225\000\001\255r\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255s\176\193@\176\179\005\002\188@\144@\002\005\245\225\000\001\255t\176\179\005\002\191@\144@\002\005\245\225\000\001\255u@\002\005\245\225\000\001\255v@\002\005\245\225\000\001\255w@\002\005\245\225\000\001\255x\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\216@\160\160\176\001\004u0unsafeReplaceBy0@\192\176\193@\176\179\005\002\208@\144@\002\005\245\225\000\001\255e\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255f\176\193@\176\193@\176\179\005\002\225@\144@\002\005\245\225\000\001\255g\176\193@\176\179\144\005\002\214@\144@\002\005\245\225\000\001\255h\176\193@\176\179\005\002\236@\144@\002\005\245\225\000\001\255i\176\179\005\002\239@\144@\002\005\245\225\000\001\255j@\002\005\245\225\000\001\255k@\002\005\245\225\000\001\255l@\002\005\245\225\000\001\255m\176\179\005\002\242@\144@\002\005\245\225\000\001\255n@\002\005\245\225\000\001\255o@\002\005\245\225\000\001\255p@\002\005\245\225\000\001\255q\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148CA@@\181'replace@@\160@\160@\160@@@\005\003\011@\160\160\176\001\004v0unsafeReplaceBy1@\192\176\193@\176\179\005\003\003@\144@\002\005\245\225\000\001\255V\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255W\176\193@\176\193@\176\179\005\003\020@\144@\002\005\245\225\000\001\255X\176\193@\176\179\005\003\025@\144@\002\005\245\225\000\001\255Y\176\193@\176\179\144\005\003\014@\144@\002\005\245\225\000\001\255Z\176\193@\176\179\005\003$@\144@\002\005\245\225\000\001\255[\176\179\005\003'@\144@\002\005\245\225\000\001\255\\@\002\005\245\225\000\001\255]@\002\005\245\225\000\001\255^@\002\005\245\225\000\001\255_@\002\005\245\225\000\001\255`\176\179\005\003*@\144@\002\005\245\225\000\001\255a@\002\005\245\225\000\001\255b@\002\005\245\225\000\001\255c@\002\005\245\225\000\001\255d\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148DA@@\181'replace@@\160@\160@\160@@@\005\003C@\160\160\176\001\004w0unsafeReplaceBy2@\192\176\193@\176\179\005\003;@\144@\002\005\245\225\000\001\255E\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255F\176\193@\176\193@\176\179\005\003L@\144@\002\005\245\225\000\001\255G\176\193@\176\179\005\003Q@\144@\002\005\245\225\000\001\255H\176\193@\176\179\005\003V@\144@\002\005\245\225\000\001\255I\176\193@\176\179\144\005\003K@\144@\002\005\245\225\000\001\255J\176\193@\176\179\005\003a@\144@\002\005\245\225\000\001\255K\176\179\005\003d@\144@\002\005\245\225\000\001\255L@\002\005\245\225\000\001\255M@\002\005\245\225\000\001\255N@\002\005\245\225\000\001\255O@\002\005\245\225\000\001\255P@\002\005\245\225\000\001\255Q\176\179\005\003g@\144@\002\005\245\225\000\001\255R@\002\005\245\225\000\001\255S@\002\005\245\225\000\001\255T@\002\005\245\225\000\001\255U\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148EA@@\181'replace@@\160@\160@\160@@@\005\003\128@\160\160\176\001\004x0unsafeReplaceBy3@\192\176\193@\176\179\005\003x@\144@\002\005\245\225\000\001\2552\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\2553\176\193@\176\193@\176\179\005\003\137@\144@\002\005\245\225\000\001\2554\176\193@\176\179\005\003\142@\144@\002\005\245\225\000\001\2555\176\193@\176\179\005\003\147@\144@\002\005\245\225\000\001\2556\176\193@\176\179\005\003\152@\144@\002\005\245\225\000\001\2557\176\193@\176\179\144\005\003\141@\144@\002\005\245\225\000\001\2558\176\193@\176\179\005\003\163@\144@\002\005\245\225\000\001\2559\176\179\005\003\166@\144@\002\005\245\225\000\001\255:@\002\005\245\225\000\001\255;@\002\005\245\225\000\001\255<@\002\005\245\225\000\001\255=@\002\005\245\225\000\001\255>@\002\005\245\225\000\001\255?@\002\005\245\225\000\001\255@\176\179\005\003\169@\144@\002\005\245\225\000\001\255A@\002\005\245\225\000\001\255B@\002\005\245\225\000\001\255C@\002\005\245\225\000\001\255D\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148FA@@\181'replace@@\160@\160@\160@@@\005\003\194@\160\160\176\001\004y&search@\192\176\193@\176\179\005\003\186@\144@\002\005\245\225\000\001\255-\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255.\176\179\144\005\003\183@\144@\002\005\245\225\000\001\255/@\002\005\245\225\000\001\2550@\002\005\245\225\000\001\2551\144\224&searchBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&search@@\160@\160@@@\005\003\224@\160\160\176\001\004z%slice@\192\176\193@\176\179\005\003\216@\144@\002\005\245\225\000\001\255&\176\193\144$from\176\179\144\005\003\207@\144@\002\005\245\225\000\001\255'\176\193\144#to_\176\179\144\005\003\215@\144@\002\005\245\225\000\001\255(\176\179\005\003\235@\144@\002\005\245\225\000\001\255)@\002\005\245\225\000\001\255*@\002\005\245\225\000\001\255+@\002\005\245\225\000\001\255,\144\224%sliceCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181%slice@@\160@\160@\160@@@\005\004\004@\160\160\176\001\004{*sliceToEnd@\192\176\193@\176\179\005\003\252@\144@\002\005\245\225\000\001\255!\176\193\144$from\176\179\144\005\003\243@\144@\002\005\245\225\000\001\255\"\176\179\005\004\007@\144@\002\005\245\225\000\001\255#@\002\005\245\225\000\001\255$@\002\005\245\225\000\001\255%\144\224%sliceBA\t)\132\149\166\190\000\000\000\021\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181%slice@@\160@\160@@@\005\004\031@\160\160\176\001\004|%split@\192\176\193@\176\179\005\004\023@\144@\002\005\245\225\000\001\255\027\176\193@\176\179\005\004\028@\144@\002\005\245\225\000\001\255\028\176\179\144\005\003\250\160\176\179\005\004#@\144@\002\005\245\225\000\001\255\029@\144@\002\005\245\225\000\001\255\030@\002\005\245\225\000\001\255\031@\002\005\245\225\000\001\255 \144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004<@\160\160\176\001\004}+splitAtMost@\192\176\193@\176\179\005\0044@\144@\002\005\245\225\000\001\255\019\176\193@\176\179\005\0049@\144@\002\005\245\225\000\001\255\020\176\193\144%limit\176\179\144\005\0040@\144@\002\005\245\225\000\001\255\021\176\179\144\005\004\031\160\176\179\005\004H@\144@\002\005\245\225\000\001\255\022@\144@\002\005\245\225\000\001\255\023@\002\005\245\225\000\001\255\024@\002\005\245\225\000\001\255\025@\002\005\245\225\000\001\255\026\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004b@\160\160\176\001\004~)splitByRe@\192\176\193@\176\179\005\004Z@\144@\002\005\245\225\000\001\255\012\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\r\176\179\144\005\004B\160\176\179\144\005\003\151\160\176\179\005\004o@\144@\002\005\245\225\000\001\255\014@\144@\002\005\245\225\000\001\255\015@\144@\002\005\245\225\000\001\255\016@\002\005\245\225\000\001\255\017@\002\005\245\225\000\001\255\018\144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004\137@\160\160\176\001\004\127/splitByReAtMost@\192\176\193@\176\179\005\004\129@\144@\002\005\245\225\000\001\255\003\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\004\176\193\144%limit\176\179\144\005\004\130@\144@\002\005\245\225\000\001\255\005\176\179\144\005\004q\160\176\179\144\005\003\198\160\176\179\005\004\158@\144@\002\005\245\225\000\001\255\006@\144@\002\005\245\225\000\001\255\007@\144@\002\005\245\225\000\001\255\b@\002\005\245\225\000\001\255\t@\002\005\245\225\000\001\255\n@\002\005\245\225\000\001\255\011\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004\185@\160\160\176\001\004\128*startsWith@\192\176\193@\176\179\005\004\177@\144@\002\005\245\225\000\001\254\254\176\193@\176\179\005\004\182@\144@\002\005\245\225\000\001\254\255\176\179\144\005\003\144@\144@\002\005\245\225\000\001\255\000@\002\005\245\225\000\001\255\001@\002\005\245\225\000\001\255\002\144\224*startsWithBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*startsWith@@\160@\160@@@\005\004\210@\160\160\176\001\004\129.startsWithFrom@\192\176\193@\176\179\005\004\202@\144@\002\005\245\225\000\001\254\247\176\193@\176\179\005\004\207@\144@\002\005\245\225\000\001\254\248\176\193@\176\179\144\005\004\196@\144@\002\005\245\225\000\001\254\249\176\179\144\005\003\175@\144@\002\005\245\225\000\001\254\250@\002\005\245\225\000\001\254\251@\002\005\245\225\000\001\254\252@\002\005\245\225\000\001\254\253\144\224*startsWithCA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181*startsWith@@\160@\160@\160@@@\005\004\242@\160\160\176\001\004\130&substr@\192\176\193@\176\179\005\004\234@\144@\002\005\245\225\000\001\254\242\176\193\144$from\176\179\144\005\004\225@\144@\002\005\245\225\000\001\254\243\176\179\005\004\245@\144@\002\005\245\225\000\001\254\244@\002\005\245\225\000\001\254\245@\002\005\245\225\000\001\254\246\144\224&substrBA\t*\132\149\166\190\000\000\000\022\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181&substr@@\160@\160@@@\005\005\r@\160\160\176\001\004\131,substrAtMost@\192\176\193@\176\179\005\005\005@\144@\002\005\245\225\000\001\254\235\176\193\144$from\176\179\144\005\004\252@\144@\002\005\245\225\000\001\254\236\176\193\144&length\176\179\144\005\005\004@\144@\002\005\245\225\000\001\254\237\176\179\005\005\024@\144@\002\005\245\225\000\001\254\238@\002\005\245\225\000\001\254\239@\002\005\245\225\000\001\254\240@\002\005\245\225\000\001\254\241\144\224&substrCA\t.\132\149\166\190\000\000\000\026\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181&substr@@\160@\160@\160@@@\005\0051@\160\160\176\001\004\132)substring@\192\176\193@\176\179\005\005)@\144@\002\005\245\225\000\001\254\228\176\193\144$from\176\179\144\005\005 @\144@\002\005\245\225\000\001\254\229\176\193\144#to_\176\179\144\005\005(@\144@\002\005\245\225\000\001\254\230\176\179\005\005<@\144@\002\005\245\225\000\001\254\231@\002\005\245\225\000\001\254\232@\002\005\245\225\000\001\254\233@\002\005\245\225\000\001\254\234\144\224)substringCA\t1\132\149\166\190\000\000\000\029\000\000\000\n\000\000\000 \000\000\000\031\176\144\160\160AA\160\160A@\160\160A@@@\181)substring@@\160@\160@\160@@@\005\005U@\160\160\176\001\004\133.substringToEnd@\192\176\193@\176\179\005\005M@\144@\002\005\245\225\000\001\254\223\176\193\144$from\176\179\144\005\005D@\144@\002\005\245\225\000\001\254\224\176\179\005\005X@\144@\002\005\245\225\000\001\254\225@\002\005\245\225\000\001\254\226@\002\005\245\225\000\001\254\227\144\224)substringBA\t-\132\149\166\190\000\000\000\025\000\000\000\b\000\000\000\026\000\000\000\025\176\144\160\160AA\160\160A@@@\181)substring@@\160@\160@@@\005\005p@\160\160\176\001\004\134+toLowerCase@\192\176\193@\176\179\005\005h@\144@\002\005\245\225\000\001\254\220\176\179\005\005k@\144@\002\005\245\225\000\001\254\221@\002\005\245\225\000\001\254\222\144\224+toLowerCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toLowerCase@@\160@@@\005\005\130@\160\160\176\001\004\1351toLocaleLowerCase@\192\176\193@\176\179\005\005z@\144@\002\005\245\225\000\001\254\217\176\179\005\005}@\144@\002\005\245\225\000\001\254\218@\002\005\245\225\000\001\254\219\144\2241toLocaleLowerCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleLowerCase@@\160@@@\005\005\148@\160\160\176\001\004\136+toUpperCase@\192\176\193@\176\179\005\005\140@\144@\002\005\245\225\000\001\254\214\176\179\005\005\143@\144@\002\005\245\225\000\001\254\215@\002\005\245\225\000\001\254\216\144\224+toUpperCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toUpperCase@@\160@@@\005\005\166@\160\160\176\001\004\1371toLocaleUpperCase@\192\176\193@\176\179\005\005\158@\144@\002\005\245\225\000\001\254\211\176\179\005\005\161@\144@\002\005\245\225\000\001\254\212@\002\005\245\225\000\001\254\213\144\2241toLocaleUpperCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleUpperCase@@\160@@@\005\005\184@\160\160\176\001\004\138$trim@\192\176\193@\176\179\005\005\176@\144@\002\005\245\225\000\001\254\208\176\179\005\005\179@\144@\002\005\245\225\000\001\254\209@\002\005\245\225\000\001\254\210\144\224$trimAA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145A@\181$trim@@\160@@@\005\005\202@\160\160\176\001\004\139&anchor@\192\176\193@\176\179\005\005\194@\144@\002\005\245\225\000\001\254\203\176\193@\176\179\005\005\199@\144@\002\005\245\225\000\001\254\204\176\179\005\005\202@\144@\002\005\245\225\000\001\254\205@\002\005\245\225\000\001\254\206@\002\005\245\225\000\001\254\207\144\224&anchorBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&anchor@@\160@\160@@@\005\005\226@\160\160\176\001\004\140$link@\192\176\193@\176\179\005\005\218@\144@\002\005\245\225\000\001\254\198\176\193@\176\179\005\005\223@\144@\002\005\245\225\000\001\254\199\176\179\005\005\226@\144@\002\005\245\225\000\001\254\200@\002\005\245\225\000\001\254\201@\002\005\245\225\000\001\254\202\144\224$linkBA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181$link@@\160@\160@@@\005\005\250@\160\160\176\001\004\141/castToArrayLike@\192\176\193@\176\179\005\005\242@\144@\002\005\245\225\000\001\254\194\176\179\177\144\176@)Js_array2A*array_like\000\255\160\176\179\005\005\253@\144@\002\005\245\225\000\001\254\195@\144@\002\005\245\225\000\001\254\196@\002\005\245\225\000\001\254\197\144\224)%identityAA \160@@@\005\006\021@@\160\160*Js_string2\1440\146#\242\226\1584\145\226N-\139\129m\"o\169\160\160%Js_re\1440c\r\158s\143R\211\142\216\025\193\227\221',\168\160\160)Js_array2\1440\210T\206\242K\020R\133\13934h\179,\196r\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakmap *) "\132\149\166\190\000\000\000\154\000\000\000!\000\000\000v\000\000\000m\192*Js_weakmap\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!k\002\005\245\225\000\000\254\160\176\144\144!v\002\005\245\225\000\000\253@B@A@\160G\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakmap\1440\001(;\181(\t\025\137\"\199\191\226\b[\028F\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakset *) "\132\149\166\190\000\000\000\139\000\000\000\027\000\000\000f\000\000\000]\192*Js_weakset\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakset\1440\157\245\162m3PL\1309\223>\168\227\229\184W\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", diff --git a/jscomp/main/builtin_cmj_datasets.ml b/jscomp/main/builtin_cmj_datasets.ml index ff82260c30..37f5a01d29 100644 --- a/jscomp/main/builtin_cmj_datasets.ml +++ b/jscomp/main/builtin_cmj_datasets.ml @@ -1,4 +1,4 @@ -(* 36afc4d4582ed9cc168039f5d3f28592 *) +(* a32a8631aa0bfcd37a4d742e9ad8aada *) let module_names : string array = Obj.magic ( "Js" (* 23 *), "Arg" (* 217 *), @@ -209,7 +209,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *)"\132\149\166\190\000\000\000\022\000\000\000\007\000\000\000\021\000\000\000\020\160\144\176*fromString\144\160\160A@@@A", (* Belt_Range *)"\132\149\166\190\000\000\000\160\000\000\0004\000\000\000\166\000\000\000\156\160\b\000\000(\000\176$some\144\160\160C@@@\176%every\144\160\160C@@@\176%someU\144\160\160C@@@\176&everyU\144\160\160C@@@\176&someBy\144\160\160D@@@\176'everyBy\144\160\160D@@@\176'forEach\144\160\160C@@@\176'someByU\144\160\160D@@@\176(everyByU\144\160\160D@@@\176(forEachU\144\160\160C@@@A", (* Js_console *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", -(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\018\001\011\018\192\004\002\000R\001\011T\001\011l@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\n\186\001\n\186\192\004%\000O\001\n\248\001\011\016@@\004\003\208B@@@@A", +(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\241\001\011\241\192\004\002\000R\001\012?\001\012]@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\011\135\001\011\135\192\004%\000O\001\011\209\001\011\239@@\004\003\208B@@@@A", (* Js_string2 *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakmap *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakset *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", diff --git a/jscomp/ml/predef.ml b/jscomp/ml/predef.ml index 31436eb9d3..fec66b1c79 100644 --- a/jscomp/ml/predef.ml +++ b/jscomp/ml/predef.ml @@ -48,6 +48,8 @@ and ident_floatarray = ident_create "floatarray" and ident_unknown = ident_create "unknown" +and ident_promise = ident_create "promise" + type test = | For_sure_yes | For_sure_no @@ -87,6 +89,8 @@ and path_unkonwn = Pident ident_unknown and path_extension_constructor = Pident ident_extension_constructor and path_floatarray = Pident ident_floatarray +and path_promise = Pident ident_promise + let type_int = newgenty (Tconstr(path_int, [], ref Mnil)) and type_char = newgenty (Tconstr(path_char, [], ref Mnil)) and type_bytes = newgenty (Tconstr(path_bytes, [], ref Mnil)) @@ -227,6 +231,12 @@ let common_initial_env add_type add_extension empty_env = type_params = [tvar]; type_arity = 1; type_variance = [Variance.covariant]} + and decl_promise = + let tvar = newgenvar() in + {decl_abstr with + type_params = [tvar]; + type_arity = 1; + type_variance = [Variance.covariant]} in let add_extension id l = @@ -268,7 +278,8 @@ let common_initial_env add_type add_extension empty_env = add_type ident_int decl_abstr_imm ( add_type ident_extension_constructor decl_abstr ( add_type ident_floatarray decl_abstr ( - empty_env))))))))))))))))))))))) + add_type ident_promise decl_promise ( + empty_env)))))))))))))))))))))))) let build_initial_env add_type add_exception empty_env = let common = common_initial_env add_type add_exception empty_env in diff --git a/jscomp/ml/predef.mli b/jscomp/ml/predef.mli index 69ef816035..d6f82144e2 100644 --- a/jscomp/ml/predef.mli +++ b/jscomp/ml/predef.mli @@ -52,6 +52,7 @@ val path_int64: Path.t val path_lazy_t: Path.t val path_extension_constructor: Path.t val path_floatarray: Path.t +val path_promise: Path.t val path_match_failure: Path.t val path_assert_failure : Path.t diff --git a/jscomp/ml/typecore.ml b/jscomp/ml/typecore.ml index 3e3ca3a943..cb6400ec4c 100644 --- a/jscomp/ml/typecore.ml +++ b/jscomp/ml/typecore.ml @@ -1868,6 +1868,7 @@ and type_expect ?in_function ?recarg env sexp ty_expected = let rec extractPromise t = match t.desc with | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) + | Tconstr (Pident {name = "promise"}, [t1], _) -> Some t1 | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 diff --git a/jscomp/others/js_promise.ml b/jscomp/others/js_promise.ml index 69dae91aec..431537115d 100644 --- a/jscomp/others/js_promise.ml +++ b/jscomp/others/js_promise.ml @@ -31,7 +31,7 @@ [@@@warning "-103"] -type +'a t +type +'a t = 'a promise type error (* @@ -43,43 +43,43 @@ type error external make : ((resolve:(('a -> unit)[@bs]) -> reject:((exn -> unit)[@bs]) -> unit) [@bs.uncurry]) -> - 'a t = "Promise" + 'a promise = "Promise" [@@bs.new] (* `make (fun resolve reject -> .. )` *) -external resolve : 'a -> 'a t = "resolve" [@@bs.val] [@@bs.scope "Promise"] -external reject : exn -> 'a t = "reject" [@@bs.val] [@@bs.scope "Promise"] +external resolve : 'a -> 'a promise = "resolve" [@@bs.val] [@@bs.scope "Promise"] +external reject : exn -> 'a promise = "reject" [@@bs.val] [@@bs.scope "Promise"] -external all : 'a t array -> 'a array t = "all" +external all : 'a promise array -> 'a array promise = "all" [@@bs.val] [@@bs.scope "Promise"] -external all2 : 'a0 t * 'a1 t -> ('a0 * 'a1) t = "all" +external all2 : 'a0 promise * 'a1 promise -> ('a0 * 'a1) promise = "all" [@@bs.val] [@@bs.scope "Promise"] -external all3 : 'a0 t * 'a1 t * 'a2 t -> ('a0 * 'a1 * 'a2) t = "all" +external all3 : 'a0 promise * 'a1 promise * 'a2 promise -> ('a0 * 'a1 * 'a2) promise = "all" [@@bs.val] [@@bs.scope "Promise"] -external all4 : 'a0 t * 'a1 t * 'a2 t * 'a3 t -> ('a0 * 'a1 * 'a2 * 'a3) t +external all4 : 'a0 promise * 'a1 promise * 'a2 promise * 'a3 promise -> ('a0 * 'a1 * 'a2 * 'a3) promise = "all" [@@bs.val] [@@bs.scope "Promise"] external all5 : - 'a0 t * 'a1 t * 'a2 t * 'a3 t * 'a4 t -> ('a0 * 'a1 * 'a2 * 'a3 * 'a4) t + 'a0 promise * 'a1 promise * 'a2 promise * 'a3 promise * 'a4 promise -> ('a0 * 'a1 * 'a2 * 'a3 * 'a4) promise = "all" [@@bs.val] [@@bs.scope "Promise"] external all6 : - 'a0 t * 'a1 t * 'a2 t * 'a3 t * 'a4 t * 'a5 t -> - ('a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5) t = "all" + 'a0 promise * 'a1 promise * 'a2 promise * 'a3 promise * 'a4 promise * 'a5 promise -> + ('a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5) promise = "all" [@@bs.val] [@@bs.scope "Promise"] -external race : 'a t array -> 'a t = "race" [@@bs.val] [@@bs.scope "Promise"] +external race : 'a promise array -> 'a promise = "race" [@@bs.val] [@@bs.scope "Promise"] -external then_ : (('a -> 'b t)[@bs.uncurry]) -> 'b t = "then" - [@@bs.send.pipe: 'a t] +external then_ : (('a -> 'b promise)[@bs.uncurry]) -> 'b promise = "then" + [@@bs.send.pipe: 'a promise] -external catch : ((error -> 'a t)[@bs.uncurry]) -> 'a t = "catch" - [@@bs.send.pipe: 'a t] +external catch : ((error -> 'a promise)[@bs.uncurry]) -> 'a promise = "catch" + [@@bs.send.pipe: 'a promise] (* ` p|> catch handler` Note in JS the returned promise type is actually runtime dependent, if promise is rejected, it will pick the `handler` otherwise the original promise, @@ -87,8 +87,8 @@ external catch : ((error -> 'a t)[@bs.uncurry]) -> 'a t = "catch" https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch *) -external unsafe_async : 'a -> 'a t = "%identity" -external unsafe_await : 'a t -> 'a = "?await" +external unsafe_async : 'a -> 'a promise = "%identity" +external unsafe_await : 'a promise -> 'a = "?await" (* diff --git a/lib/4.06.1/unstable/all_ounit_tests.ml b/lib/4.06.1/unstable/all_ounit_tests.ml index c61fd9dbcf..0a8eea9500 100644 --- a/lib/4.06.1/unstable/all_ounit_tests.ml +++ b/lib/4.06.1/unstable/all_ounit_tests.ml @@ -43611,6 +43611,7 @@ val path_int64: Path.t val path_lazy_t: Path.t val path_extension_constructor: Path.t val path_floatarray: Path.t +val path_promise: Path.t val path_match_failure: Path.t val path_assert_failure : Path.t @@ -43697,6 +43698,8 @@ and ident_floatarray = ident_create "floatarray" and ident_unknown = ident_create "unknown" +and ident_promise = ident_create "promise" + type test = | For_sure_yes | For_sure_no @@ -43736,6 +43739,8 @@ and path_unkonwn = Pident ident_unknown and path_extension_constructor = Pident ident_extension_constructor and path_floatarray = Pident ident_floatarray +and path_promise = Pident ident_promise + let type_int = newgenty (Tconstr(path_int, [], ref Mnil)) and type_char = newgenty (Tconstr(path_char, [], ref Mnil)) and type_bytes = newgenty (Tconstr(path_bytes, [], ref Mnil)) @@ -43876,6 +43881,12 @@ let common_initial_env add_type add_extension empty_env = type_params = [tvar]; type_arity = 1; type_variance = [Variance.covariant]} + and decl_promise = + let tvar = newgenvar() in + {decl_abstr with + type_params = [tvar]; + type_arity = 1; + type_variance = [Variance.covariant]} in let add_extension id l = @@ -43917,7 +43928,8 @@ let common_initial_env add_type add_extension empty_env = add_type ident_int decl_abstr_imm ( add_type ident_extension_constructor decl_abstr ( add_type ident_floatarray decl_abstr ( - empty_env))))))))))))))))))))))) + add_type ident_promise decl_promise ( + empty_env)))))))))))))))))))))))) let build_initial_env add_type add_exception empty_env = let common = common_initial_env add_type add_exception empty_env in diff --git a/lib/4.06.1/unstable/js_compiler.ml b/lib/4.06.1/unstable/js_compiler.ml index 1f5a9152fb..51ae669ec3 100644 --- a/lib/4.06.1/unstable/js_compiler.ml +++ b/lib/4.06.1/unstable/js_compiler.ml @@ -13,7 +13,7 @@ val module_data : end = struct #1 "builtin_cmi_datasets.ml" -(* 481298ddf6a6c65d9542177270f4c5ed *) +(* 8d68a02b2c67ceea3dd9487a69b39b92 *) let module_names : string array = Obj.magic ( "Js" (* 6126 *), "Arg" (* 3634 *), @@ -89,7 +89,7 @@ let module_names : string array = Obj.magic ( "Belt_Float" (* 903 *), "Belt_Range" (* 1850 *), "Js_console" (* 3442 *), -"Js_promise" (* 2756 *), +"Js_promise" (* 2830 *), "Js_string2" (* 9269 *), "Js_weakmap" (* 174 *), "Js_weakset" (* 159 *), @@ -215,7 +215,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *) "\132\149\166\190\000\000\003s\000\000\000\206\000\000\002\213\000\000\002\186\192*Belt_Float\160\160\176\001\003\242%toInt@\192\176\193@\176\179\144\176D%float@@\144@\002\005\245\225\000\000\252\176\179\144\176A#int@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224+%intoffloatAA \160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\003\243'fromInt@\192\176\193@\176\179\144\004\021@\144@\002\005\245\225\000\000\249\176\179\144\004\031@\144@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224)%identityAA\004\023\160@@@\004\022@\160\160\176\001\003\244*fromString@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\245\176\179\144\176J&option@\160\176\179\144\004:@\144@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\004.@\160\160\176\001\003\245(toString@\192\176\193@\176\179\144\004F@\144@\002\005\245\225\000\000\242\176\179\144\004\028@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004B@\160\160\176\001\003\246!+@\192\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\237\176\193@\176\179\144\004`@\144@\002\005\245\225\000\000\238\176\179\144\004d@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241\144\224)%addfloatBA\004\\\160@\160@@@\004\\@\160\160\176\001\003\247!-@\192\176\193@\176\179\144\004t@\144@\002\005\245\225\000\000\232\176\193@\176\179\144\004z@\144@\002\005\245\225\000\000\233\176\179\144\004~@\144@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224)%subfloatBA\004v\160@\160@@@\004v@\160\160\176\001\003\248!*@\192\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\227\176\193@\176\179\144\004\148@\144@\002\005\245\225\000\000\228\176\179\144\004\152@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\002\005\245\225\000\000\231\144\224)%mulfloatBA\004\144\160@\160@@@\004\144@\160\160\176\001\003\249!/@\192\176\193@\176\179\144\004\168@\144@\002\005\245\225\000\000\222\176\193@\176\179\144\004\174@\144@\002\005\245\225\000\000\223\176\179\144\004\178@\144@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224)%divfloatBA\004\170\160@\160@@@\004\170@@\160\160*Belt_Float\1440\220\t\225\167\143TL\234\185\023\004\026t\228\210\161\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Belt_Range *) "\132\149\166\190\000\000\007&\000\000\001\179\000\000\005\214\000\000\005\182\192*Belt_Range\160\160\176\001\004b(forEachU@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\245\176\193@\176\179\144\004\b@\144@\002\005\245\225\000\000\246\176\193@\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\179\144\004\026@\144@\002\005\245\225\000\000\247\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\144@\002\005\245\225\000\000\250\176\179\144\004\007@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004c'forEach@\192\176\193@\176\179\144\0043@\144@\002\005\245\225\000\000\236\176\193@\176\179\144\0049@\144@\002\005\245\225\000\000\237\176\193@\176\193@\176\179\144\004A@\144@\002\005\245\225\000\000\238\176\179\144\004'@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\176\179\144\004+@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\004$@\160\160\176\001\004d&everyU@\192\176\193@\176\179\144\004T@\144@\002\005\245\225\000\000\226\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\227\176\193@\176\179\177\177\144\176@\004RA\004Q@&arity1\000\255\160\176\193@\176\179\144\004j@\144@\002\005\245\225\000\000\228\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231\176\179\144\004\007@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\004P@\160\160\176\001\004e%every@\192\176\193@\176\179\144\004\128@\144@\002\005\245\225\000\000\217\176\193@\176\179\144\004\134@\144@\002\005\245\225\000\000\218\176\193@\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\219\176\179\144\004$@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\221\176\179\144\004(@\144@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\004q@\160\160\176\001\004f(everyByU@\192\176\193@\176\179\144\004\161@\144@\002\005\245\225\000\000\205\176\193@\176\179\144\004\167@\144@\002\005\245\225\000\000\206\176\193\144$step\176\179\144\004\175@\144@\002\005\245\225\000\000\207\176\193@\176\179\177\177\144\176@\004\167A\004\166@&arity1\000\255\160\176\193@\176\179\144\004\191@\144@\002\005\245\225\000\000\208\176\179\144\004U@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\144@\002\005\245\225\000\000\211\176\179\144\004Z@\144@\002\005\245\225\000\000\212@\002\005\245\225\000\000\213@\002\005\245\225\000\000\214@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\004\163@\160\160\176\001\004g'everyBy@\192\176\193@\176\179\144\004\211@\144@\002\005\245\225\000\000\194\176\193@\176\179\144\004\217@\144@\002\005\245\225\000\000\195\176\193\144$step\176\179\144\004\225@\144@\002\005\245\225\000\000\196\176\193@\176\193@\176\179\144\004\233@\144@\002\005\245\225\000\000\197\176\179\144\004\127@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\199\176\179\144\004\131@\144@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202@\002\005\245\225\000\000\203@\002\005\245\225\000\000\204@\004\204@\160\160\176\001\004h%someU@\192\176\193@\176\179\144\004\252@\144@\002\005\245\225\000\000\184\176\193@\176\179\144\005\001\002@\144@\002\005\245\225\000\000\185\176\193@\176\179\177\177\144\176@\004\250A\004\249@&arity1\000\255\160\176\193@\176\179\144\005\001\018@\144@\002\005\245\225\000\000\186\176\179\144\004\168@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\144@\002\005\245\225\000\000\189\176\179\144\004\173@\144@\002\005\245\225\000\000\190@\002\005\245\225\000\000\191@\002\005\245\225\000\000\192@\002\005\245\225\000\000\193@\004\246@\160\160\176\001\004i$some@\192\176\193@\176\179\144\005\001&@\144@\002\005\245\225\000\000\175\176\193@\176\179\144\005\001,@\144@\002\005\245\225\000\000\176\176\193@\176\193@\176\179\144\005\0014@\144@\002\005\245\225\000\000\177\176\179\144\004\202@\144@\002\005\245\225\000\000\178@\002\005\245\225\000\000\179\176\179\144\004\206@\144@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\005\001\023@\160\160\176\001\004j'someByU@\192\176\193@\176\179\144\005\001G@\144@\002\005\245\225\000\000\163\176\193@\176\179\144\005\001M@\144@\002\005\245\225\000\000\164\176\193\144$step\176\179\144\005\001U@\144@\002\005\245\225\000\000\165\176\193@\176\179\177\177\144\176@\005\001MA\005\001L@&arity1\000\255\160\176\193@\176\179\144\005\001e@\144@\002\005\245\225\000\000\166\176\179\144\004\251@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\168@\144@\002\005\245\225\000\000\169\176\179\144\005\001\000@\144@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174@\005\001I@\160\160\176\001\004k&someBy@\192\176\193@\176\179\144\005\001y@\144@\002\005\245\225\000\000\152\176\193@\176\179\144\005\001\127@\144@\002\005\245\225\000\000\153\176\193\144$step\176\179\144\005\001\135@\144@\002\005\245\225\000\000\154\176\193@\176\193@\176\179\144\005\001\143@\144@\002\005\245\225\000\000\155\176\179\144\005\001%@\144@\002\005\245\225\000\000\156@\002\005\245\225\000\000\157\176\179\144\005\001)@\144@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\001r@@\160\160*Belt_Range\1440\192@X\13491\017\252j\198\193OH\002\2472\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_console *) "\132\149\166\190\000\000\r^\000\000\002\157\000\000\tu\000\000\b\204\192*Js_console\160\160\176\001\004\001#log@\192\176\193@\176\144\144!a\002\005\245\225\000\000\252\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@@\160'console@\160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004\002$log2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\247\176\193@\176\144\144!b\002\005\245\225\000\000\248\176\179\144\004\031@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224#logBA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145BE\196#log@@\160'console@\160@\160@@@\004\030@\160\160\176\001\004\003$log3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\240\176\193@\176\144\144!b\002\005\245\225\000\000\241\176\193@\176\144\144!c\002\005\245\225\000\000\242\176\179\144\004@@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246\144\224#logCA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145CE\196#log@@\160'console@\160@\160@\160@@@\004@@\160\160\176\001\004\004$log4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\231\176\193@\176\144\144!b\002\005\245\225\000\000\232\176\193@\176\144\144!c\002\005\245\225\000\000\233\176\193@\176\144\144!d\002\005\245\225\000\000\234\176\179\144\004h@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224#logDA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145DE\196#log@@\160'console@\160@\160@\160@\160@@@\004i@\160\160\176\001\004\005'logMany@\192\176\193@\176\179\144\176H%array@\160\176\144\144!a\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\134@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@A\160'console@\160@@@\004\132@\160\160\176\001\004\006$info@\192\176\193@\176\144\144!a\002\005\245\225\000\000\224\176\179\144\004\154@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@@\160'console@\160@@@\004\152@\160\160\176\001\004\007%info2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\219\176\193@\176\144\144!b\002\005\245\225\000\000\220\176\179\144\004\180@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224$infoBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$info@@\160'console@\160@\160@@@\004\179@\160\160\176\001\004\b%info3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\212\176\193@\176\144\144!b\002\005\245\225\000\000\213\176\193@\176\144\144!c\002\005\245\225\000\000\214\176\179\144\004\213@\144@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224$infoCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$info@@\160'console@\160@\160@\160@@@\004\213@\160\160\176\001\004\t%info4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\203\176\193@\176\144\144!b\002\005\245\225\000\000\204\176\193@\176\144\144!c\002\005\245\225\000\000\205\176\193@\176\144\144!d\002\005\245\225\000\000\206\176\179\144\004\253@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211\144\224$infoDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$info@@\160'console@\160@\160@\160@\160@@@\004\254@\160\160\176\001\004\n(infoMany@\192\176\193@\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\199@\144@\002\005\245\225\000\000\200\176\179\144\005\001\025@\144@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@A\160'console@\160@@@\005\001\023@\160\160\176\001\004\011$warn@\192\176\193@\176\144\144!a\002\005\245\225\000\000\196\176\179\144\005\001-@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\198\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@@\160'console@\160@@@\005\001+@\160\160\176\001\004\012%warn2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\191\176\193@\176\144\144!b\002\005\245\225\000\000\192\176\179\144\005\001G@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195\144\224$warnBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$warn@@\160'console@\160@\160@@@\005\001F@\160\160\176\001\004\r%warn3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\184\176\193@\176\144\144!b\002\005\245\225\000\000\185\176\193@\176\144\144!c\002\005\245\225\000\000\186\176\179\144\005\001h@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189@\002\005\245\225\000\000\190\144\224$warnCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$warn@@\160'console@\160@\160@\160@@@\005\001h@\160\160\176\001\004\014%warn4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\175\176\193@\176\144\144!b\002\005\245\225\000\000\176\176\193@\176\144\144!c\002\005\245\225\000\000\177\176\193@\176\144\144!d\002\005\245\225\000\000\178\176\179\144\005\001\144@\144@\002\005\245\225\000\000\179@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224$warnDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$warn@@\160'console@\160@\160@\160@\160@@@\005\001\145@\160\160\176\001\004\015(warnMany@\192\176\193@\176\179\144\005\001(\160\176\144\144!a\002\005\245\225\000\000\171@\144@\002\005\245\225\000\000\172\176\179\144\005\001\172@\144@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@A\160'console@\160@@@\005\001\170@\160\160\176\001\004\016%error@\192\176\193@\176\144\144!a\002\005\245\225\000\000\168\176\179\144\005\001\192@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@@\160'console@\160@@@\005\001\190@\160\160\176\001\004\017&error2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\163\176\193@\176\144\144!b\002\005\245\225\000\000\164\176\179\144\005\001\218@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224%errorBA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196%error@@\160'console@\160@\160@@@\005\001\217@\160\160\176\001\004\018&error3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\156\176\193@\176\144\144!b\002\005\245\225\000\000\157\176\193@\176\144\144!c\002\005\245\225\000\000\158\176\179\144\005\001\251@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162\144\224%errorCA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196%error@@\160'console@\160@\160@\160@@@\005\001\251@\160\160\176\001\004\019&error4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\147\176\193@\176\144\144!b\002\005\245\225\000\000\148\176\193@\176\144\144!c\002\005\245\225\000\000\149\176\193@\176\144\144!d\002\005\245\225\000\000\150\176\179\144\005\002#@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\144\224%errorDA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196%error@@\160'console@\160@\160@\160@\160@@@\005\002$@\160\160\176\001\004\020)errorMany@\192\176\193@\176\179\144\005\001\187\160\176\144\144!a\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144\176\179\144\005\002?@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@A\160'console@\160@@@\005\002=@\160\160\176\001\004\021%trace@\192\176\193@\176\179\144\005\002O@\144@\002\005\245\225\000\000\140\176\179\144\005\002S@\144@\002\005\245\225\000\000\141@\002\005\245\225\000\000\142\144\224%traceAA\t/\132\149\166\190\000\000\000\027\000\000\000\b\000\000\000\026\000\000\000\024\176\144\160\160@A@E\196%trace@@\160'console@\160@@@\005\002Q@\160\160\176\001\004\022)timeStart@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\137\176\179\144\005\002i@\144@\002\005\245\225\000\000\138@\002\005\245\225\000\000\139\144\224$timeAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$time@@\160'console@\160@@@\005\002g@\160\160\176\001\004\023'timeEnd@\192\176\193@\176\179\144\004\022@\144@\002\005\245\225\000\000\134\176\179\144\005\002}@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136\144\224'timeEndAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196'timeEnd@@\160'console@\160@@@\005\002{@@\160\160*Js_console\1440L`\184fJ:\215\143\159\251<\002\0161\210\129\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", -(* Js_promise *) "\132\149\166\190\000\000\n\176\000\000\002d\000\000\b-\000\000\007\210\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160A@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\144@\002\005\245\225\000\000\243\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\244\176\179\144\004\027@\144@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247\176\179\144\004 @\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\176\179\144\004T\160\004,@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\238\176\179\004\021\160\004\007@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004f@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0044@\144@\002\005\245\225\000\000\234\176\179\004)\160\176\144\144!a\002\005\245\225\000\000\235@\144@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004~@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\004C\160\176\144\144!a\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\228@\144@\002\005\245\225\000\000\229\176\179\004L\160\176\179\144\004\018\160\004\r@\144@\002\005\245\225\000\000\231@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\162@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\004d\160\176\144\144\"a0\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\221\160\176\179\004m\160\176\144\144\"a1\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\222\176\179\004u\160\176\146\160\004\020\160\004\012@\002\005\245\225\000\000\225@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\202@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\004\140\160\176\144\144\"a0\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\212\160\176\179\004\149\160\176\144\144\"a1\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\004\158\160\176\144\144\"a2\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\213\176\179\004\166\160\176\146\160\004\029\160\004\021\160\004\r@\002\005\245\225\000\000\217@\144@\002\005\245\225\000\000\218@\002\005\245\225\000\000\219\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\252@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\004\190\160\176\144\144\"a0\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\201\160\176\179\004\199\160\176\144\144\"a1\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\004\208\160\176\144\144\"a2\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\004\217\160\176\144\144\"a3\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\202\176\179\004\225\160\176\146\160\004&\160\004\030\160\004\022\160\004\014@\002\005\245\225\000\000\207@\144@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\0018@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\004\250\160\176\144\144\"a0\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\188\160\176\179\005\001\003\160\176\144\144\"a1\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\005\001\012\160\176\144\144\"a2\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\005\001\021\160\176\144\144\"a3\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\005\001\030\160\176\144\144\"a4\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184@\002\005\245\225\000\000\189\176\179\005\001&\160\176\146\160\004/\160\004'\160\004\031\160\004\023\160\004\015@\002\005\245\225\000\000\195@\144@\002\005\245\225\000\000\196@\002\005\245\225\000\000\197\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001~@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\005\001@\160\176\144\144\"a0\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\173\160\176\179\005\001I\160\176\144\144\"a1\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\005\001R\160\176\144\144\"a2\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\005\001[\160\176\144\144\"a3\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\005\001d\160\176\144\144\"a4\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\005\001m\160\176\144\144\"a5\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168@\002\005\245\225\000\000\174\176\179\005\001u\160\176\146\160\0048\160\0040\160\004(\160\004 \160\004\024\160\004\016@\002\005\245\225\000\000\181@\144@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\206@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001P\160\176\179\005\001\145\160\176\144\144!a\002\005\245\225\000\000\165@\144@\002\005\245\225\000\000\163@\144@\002\005\245\225\000\000\164\176\179\005\001\154\160\004\t@\144@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\157\176\179\005\001\174\160\176\004\005\002\005\245\225\000\000\159@\144@\002\005\245\225\000\000\155@\002\005\245\225\000\000\156\176\193@\176\179\005\001\181\160\004\012@\144@\002\005\245\225\000\000\158\176\179\005\001\185\160\004\011@\144@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\002\005@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002\011@\144@\002\005\245\225\000\000\147\176\179\005\001\202\160\176\004!\002\005\245\225\000\000\151@\144@\002\005\245\225\000\000\148@\002\005\245\225\000\000\149\176\193@\176\179\005\001\209\160\004\007@\144@\002\005\245\225\000\000\150\176\179\005\001\213\160\004\011@\144@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\005\002!@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\144\176\179\005\001\228\160\004\007@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224)%identityAA \160@@@\005\0025@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\005\001\244\160\176\144\144!a\002\005\245\225\000\000\142@\144@\002\005\245\225\000\000\141\004\005@\002\005\245\225\000\000\143\144\224&?awaitAA\004\020\160@@@\005\002H@@\160\160*Js_promise\1440'i\255\135\213\144\168\240\001pr\b{\245\206\200\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", +(* Js_promise *) "\132\149\166\190\000\000\n\250\000\000\002\147\000\000\b\147\000\000\b7\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\253@A@A\144\176\179\144\176Q'promise@\160\004\011@\144@\002\005\245\225\000\000\254\160Y@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\250\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241@\144@\002\005\245\225\000\000\242\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\243\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\144@\002\005\245\225\000\000\246\176\179\144\004 @\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249\176\179\144\004P\160\004,@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\237\176\179\144\004e\160\004\b@\144@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004g@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0045@\144@\002\005\245\225\000\000\233\176\179\144\004z\160\176\144\144!a\002\005\245\225\000\000\234@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004\128@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\229@\144@\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\159\160\176\179\144\004\020\160\004\014@\144@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\166@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\144\004\184\160\176\144\144\"a0\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220\160\176\179\144\004\194\160\176\144\144\"a1\002\005\245\225\000\000\222@\144@\002\005\245\225\000\000\219@\002\005\245\225\000\000\221\176\179\144\004\203\160\176\146\160\004\022\160\004\r@\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\209@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\144\004\227\160\176\144\144\"a0\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\144\004\237\160\176\144\144\"a1\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210\160\176\179\144\004\247\160\176\144\144\"a2\002\005\245\225\000\000\213@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\212\176\179\144\005\001\000\160\176\146\160\004 \160\004\023\160\004\014@\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\007@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\144\005\001\025\160\176\144\144\"a0\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\144\005\001#\160\176\144\144\"a1\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\144\005\001-\160\176\144\144\"a2\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198\160\176\179\144\005\0017\160\176\144\144\"a3\002\005\245\225\000\000\202@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\201\176\179\144\005\001@\160\176\146\160\004*\160\004!\160\004\024\160\004\015@\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001H@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\144\005\001Z\160\176\144\144\"a0\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\144\005\001d\160\176\144\144\"a1\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\144\005\001n\160\176\144\144\"a2\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\144\005\001x\160\176\144\144\"a3\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184\160\176\179\144\005\001\130\160\176\144\144\"a4\002\005\245\225\000\000\189@\144@\002\005\245\225\000\000\183@\002\005\245\225\000\000\188\176\179\144\005\001\139\160\176\146\160\0044\160\004+\160\004\"\160\004\025\160\004\016@\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\148@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\144\005\001\166\160\176\144\144\"a0\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\144\005\001\176\160\176\144\144\"a1\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\144\005\001\186\160\176\144\144\"a2\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\144\005\001\196\160\176\144\144\"a3\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\144\005\001\206\160\176\144\144\"a4\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168\160\176\179\144\005\001\216\160\176\144\144\"a5\002\005\245\225\000\000\174@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\173\176\179\144\005\001\225\160\176\146\160\004>\160\0045\160\004,\160\004#\160\004\026\160\004\017@\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001k\160\176\179\144\005\001\254\160\176\144\144!a\002\005\245\225\000\000\164@\144@\002\005\245\225\000\000\162@\144@\002\005\245\225\000\000\163\176\179\144\005\002\b\160\004\n@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\002\n@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\156\176\179\144\005\002\029\160\176\004\006\002\005\245\225\000\000\158@\144@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\176\193@\176\179\144\005\002%\160\004\014@\144@\002\005\245\225\000\000\157\176\179\144\005\002*\160\004\r@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\005\002'@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002-@\144@\002\005\245\225\000\000\146\176\179\144\005\002<\160\176\004%\002\005\245\225\000\000\150@\144@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\176\193@\176\179\144\005\002D\160\004\b@\144@\002\005\245\225\000\000\149\176\179\144\005\002I\160\004\r@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\005\002F@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\143\176\179\144\005\002Y\160\004\b@\144@\002\005\245\225\000\000\144@\002\005\245\225\000\000\145\144\224)%identityAA \160@@@\005\002[@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\144\005\002j\160\176\144\144!a\002\005\245\225\000\000\141@\144@\002\005\245\225\000\000\140\004\005@\002\005\245\225\000\000\142\144\224&?awaitAA\004\021\160@@@\005\002o@@\160\160*Js_promise\1440\0141\140\179\b+\200\207\131\168\131u\021\178\185\250\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_string2 *) "\132\149\166\190\000\000$!\000\000\006<\000\000\024\016\000\000\022g\192*Js_string2\160\177\176\001\004Y!t@\b\000\000,\000@@@A\144\176\179\144\176M&string@@\144@\002\005\245\225\000\000\254@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\160\176\001\004Z$make@\192\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\004\028@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004\024@\160\160\176\001\004[,fromCharCode@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\248\176\179\004\022@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@@@\160@@@\004-@\160\160\176\001\004\\0fromCharCodeMany@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\144@\002\005\245\225\000\000\245\176\179\0040@\144@\002\005\245\225\000\000\246@\002\005\245\225\000\000\247\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@A@\160@@@\004G@\160\160\176\001\004]-fromCodePoint@\192\176\193@\176\179\144\004/@\144@\002\005\245\225\000\000\241\176\179\004C@\144@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@@@\160@@@\004Z@\160\160\176\001\004^1fromCodePointMany@\192\176\193@\176\179\144\004-\160\176\179\144\004F@\144@\002\005\245\225\000\000\237@\144@\002\005\245\225\000\000\238\176\179\004[@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@A@\160@@@\004r@\160\160\176\001\004_&length@\192\176\193@\176\179\004j@\144@\002\005\245\225\000\000\234\176\179\144\004]@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&lengthAA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\012\000\000\000\011\176\145A@\168&length@\160@@@\004\133@\160\160\176\001\004`#get@\192\176\193@\176\179\004}@\144@\002\005\245\225\000\000\229\176\193@\176\179\144\004r@\144@\002\005\245\225\000\000\230\176\179\004\134@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224 BA:\132\149\166\190\000\000\000\006\000\000\000\003\000\000\000\b\000\000\000\b\176\145B@\153@\160@\160@@@\004\158@\160\160\176\001\004a&charAt@\192\176\193@\176\179\004\150@\144@\002\005\245\225\000\000\224\176\193@\176\179\144\004\139@\144@\002\005\245\225\000\000\225\176\179\004\159@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227@\002\005\245\225\000\000\228\144\224&charAtBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&charAt@@\160@\160@@@\004\183@\160\160\176\001\004b*charCodeAt@\192\176\193@\176\179\004\175@\144@\002\005\245\225\000\000\219\176\193@\176\179\144\004\164@\144@\002\005\245\225\000\000\220\176\179\144\176D%float@@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224*charCodeAtBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*charCodeAt@@\160@\160@@@\004\211@\160\160\176\001\004c+codePointAt@\192\176\193@\176\179\004\203@\144@\002\005\245\225\000\000\213\176\193@\176\179\144\004\192@\144@\002\005\245\225\000\000\214\176\179\144\176J&option@\160\176\179\144\004\202@\144@\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224+codePointAtBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+codePointAt@@\160@\160@@@\004\244@\160\160\176\001\004d&concat@\192\176\193@\176\179\004\236@\144@\002\005\245\225\000\000\208\176\193@\176\179\004\241@\144@\002\005\245\225\000\000\209\176\179\004\244@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211@\002\005\245\225\000\000\212\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concat@@\160@\160@@@\005\001\012@\160\160\176\001\004e*concatMany@\192\176\193@\176\179\005\001\004@\144@\002\005\245\225\000\000\202\176\193@\176\179\144\004\228\160\176\179\005\001\r@\144@\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\204\176\179\005\001\017@\144@\002\005\245\225\000\000\205@\002\005\245\225\000\000\206@\002\005\245\225\000\000\207\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concatA@\160@\160@@@\005\001)@\160\160\176\001\004f(endsWith@\192\176\193@\176\179\005\001!@\144@\002\005\245\225\000\000\197\176\193@\176\179\005\001&@\144@\002\005\245\225\000\000\198\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\199@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201\144\224(endsWithBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(endsWith@@\160@\160@@@\005\001D@\160\160\176\001\004g,endsWithFrom@\192\176\193@\176\179\005\001<@\144@\002\005\245\225\000\000\190\176\193@\176\179\005\001A@\144@\002\005\245\225\000\000\191\176\193@\176\179\144\005\0016@\144@\002\005\245\225\000\000\192\176\179\144\004!@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224(endsWithCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(endsWith@@\160@\160@\160@@@\005\001d@\160\160\176\001\004h(includes@\192\176\193@\176\179\005\001\\@\144@\002\005\245\225\000\000\185\176\193@\176\179\005\001a@\144@\002\005\245\225\000\000\186\176\179\144\004;@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189\144\224(includesBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(includes@@\160@\160@@@\005\001}@\160\160\176\001\004i,includesFrom@\192\176\193@\176\179\005\001u@\144@\002\005\245\225\000\000\178\176\193@\176\179\005\001z@\144@\002\005\245\225\000\000\179\176\193@\176\179\144\005\001o@\144@\002\005\245\225\000\000\180\176\179\144\004Z@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\002\005\245\225\000\000\184\144\224(includesCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(includes@@\160@\160@\160@@@\005\001\157@\160\160\176\001\004j'indexOf@\192\176\193@\176\179\005\001\149@\144@\002\005\245\225\000\000\173\176\193@\176\179\005\001\154@\144@\002\005\245\225\000\000\174\176\179\144\005\001\141@\144@\002\005\245\225\000\000\175@\002\005\245\225\000\000\176@\002\005\245\225\000\000\177\144\224'indexOfBA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181'indexOf@@\160@\160@@@\005\001\182@\160\160\176\001\004k+indexOfFrom@\192\176\193@\176\179\005\001\174@\144@\002\005\245\225\000\000\166\176\193@\176\179\005\001\179@\144@\002\005\245\225\000\000\167\176\193@\176\179\144\005\001\168@\144@\002\005\245\225\000\000\168\176\179\144\005\001\172@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172\144\224'indexOfCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'indexOf@@\160@\160@\160@@@\005\001\214@\160\160\176\001\004l+lastIndexOf@\192\176\193@\176\179\005\001\206@\144@\002\005\245\225\000\000\161\176\193@\176\179\005\001\211@\144@\002\005\245\225\000\000\162\176\179\144\005\001\198@\144@\002\005\245\225\000\000\163@\002\005\245\225\000\000\164@\002\005\245\225\000\000\165\144\224+lastIndexOfBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+lastIndexOf@@\160@\160@@@\005\001\239@\160\160\176\001\004m/lastIndexOfFrom@\192\176\193@\176\179\005\001\231@\144@\002\005\245\225\000\000\154\176\193@\176\179\005\001\236@\144@\002\005\245\225\000\000\155\176\193@\176\179\144\005\001\225@\144@\002\005\245\225\000\000\156\176\179\144\005\001\229@\144@\002\005\245\225\000\000\157@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160\144\224+lastIndexOfCA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181+lastIndexOf@@\160@\160@\160@@@\005\002\015@\160\160\176\001\004n-localeCompare@\192\176\193@\176\179\005\002\007@\144@\002\005\245\225\000\000\149\176\193@\176\179\005\002\012@\144@\002\005\245\225\000\000\150\176\179\144\005\001W@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153\144\224-localeCompareBA\t)\132\149\166\190\000\000\000\021\000\000\000\004\000\000\000\015\000\000\000\r\176\145B@\181-localeCompare@@\160@\160@@@\005\002(@\160\160\176\001\004o&match_@\192\176\193@\176\179\005\002 @\144@\002\005\245\225\000\000\141\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\000\142\176\179\144\005\001Y\160\176\179\144\005\002\012\160\176\179\144\005\001a\160\176\179\005\0029@\144@\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144@\144@\002\005\245\225\000\000\145@\144@\002\005\245\225\000\000\146@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\144\224%matchBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145BC\181%match@@\160@\160@@@\005\002T@\160\160\176\001\004p)normalize@\192\176\193@\176\179\005\002L@\144@\002\005\245\225\000\000\138\176\179\005\002O@\144@\002\005\245\225\000\000\139@\002\005\245\225\000\000\140\144\224)normalizeAA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181)normalize@@\160@@@\005\002f@\160\160\176\001\004q/normalizeByForm@\192\176\193@\176\179\005\002^@\144@\002\005\245\225\000\000\133\176\193@\176\179\005\002c@\144@\002\005\245\225\000\000\134\176\179\005\002f@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136@\002\005\245\225\000\000\137\144\224)normalizeBA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181)normalize@@\160@\160@@@\005\002~@\160\160\176\001\004r&repeat@\192\176\193@\176\179\005\002v@\144@\002\005\245\225\000\000\128\176\193@\176\179\144\005\002k@\144@\002\005\245\225\000\000\129\176\179\005\002\127@\144@\002\005\245\225\000\000\130@\002\005\245\225\000\000\131@\002\005\245\225\000\000\132\144\224&repeatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&repeat@@\160@\160@@@\005\002\151@\160\160\176\001\004s'replace@\192\176\193@\176\179\005\002\143@\144@\002\005\245\225\000\001\255y\176\193@\176\179\005\002\148@\144@\002\005\245\225\000\001\255z\176\193@\176\179\005\002\153@\144@\002\005\245\225\000\001\255{\176\179\005\002\156@\144@\002\005\245\225\000\001\255|@\002\005\245\225\000\001\255}@\002\005\245\225\000\001\255~@\002\005\245\225\000\001\255\127\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\181@\160\160\176\001\004t+replaceByRe@\192\176\193@\176\179\005\002\173@\144@\002\005\245\225\000\001\255r\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255s\176\193@\176\179\005\002\188@\144@\002\005\245\225\000\001\255t\176\179\005\002\191@\144@\002\005\245\225\000\001\255u@\002\005\245\225\000\001\255v@\002\005\245\225\000\001\255w@\002\005\245\225\000\001\255x\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\216@\160\160\176\001\004u0unsafeReplaceBy0@\192\176\193@\176\179\005\002\208@\144@\002\005\245\225\000\001\255e\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255f\176\193@\176\193@\176\179\005\002\225@\144@\002\005\245\225\000\001\255g\176\193@\176\179\144\005\002\214@\144@\002\005\245\225\000\001\255h\176\193@\176\179\005\002\236@\144@\002\005\245\225\000\001\255i\176\179\005\002\239@\144@\002\005\245\225\000\001\255j@\002\005\245\225\000\001\255k@\002\005\245\225\000\001\255l@\002\005\245\225\000\001\255m\176\179\005\002\242@\144@\002\005\245\225\000\001\255n@\002\005\245\225\000\001\255o@\002\005\245\225\000\001\255p@\002\005\245\225\000\001\255q\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148CA@@\181'replace@@\160@\160@\160@@@\005\003\011@\160\160\176\001\004v0unsafeReplaceBy1@\192\176\193@\176\179\005\003\003@\144@\002\005\245\225\000\001\255V\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255W\176\193@\176\193@\176\179\005\003\020@\144@\002\005\245\225\000\001\255X\176\193@\176\179\005\003\025@\144@\002\005\245\225\000\001\255Y\176\193@\176\179\144\005\003\014@\144@\002\005\245\225\000\001\255Z\176\193@\176\179\005\003$@\144@\002\005\245\225\000\001\255[\176\179\005\003'@\144@\002\005\245\225\000\001\255\\@\002\005\245\225\000\001\255]@\002\005\245\225\000\001\255^@\002\005\245\225\000\001\255_@\002\005\245\225\000\001\255`\176\179\005\003*@\144@\002\005\245\225\000\001\255a@\002\005\245\225\000\001\255b@\002\005\245\225\000\001\255c@\002\005\245\225\000\001\255d\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148DA@@\181'replace@@\160@\160@\160@@@\005\003C@\160\160\176\001\004w0unsafeReplaceBy2@\192\176\193@\176\179\005\003;@\144@\002\005\245\225\000\001\255E\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255F\176\193@\176\193@\176\179\005\003L@\144@\002\005\245\225\000\001\255G\176\193@\176\179\005\003Q@\144@\002\005\245\225\000\001\255H\176\193@\176\179\005\003V@\144@\002\005\245\225\000\001\255I\176\193@\176\179\144\005\003K@\144@\002\005\245\225\000\001\255J\176\193@\176\179\005\003a@\144@\002\005\245\225\000\001\255K\176\179\005\003d@\144@\002\005\245\225\000\001\255L@\002\005\245\225\000\001\255M@\002\005\245\225\000\001\255N@\002\005\245\225\000\001\255O@\002\005\245\225\000\001\255P@\002\005\245\225\000\001\255Q\176\179\005\003g@\144@\002\005\245\225\000\001\255R@\002\005\245\225\000\001\255S@\002\005\245\225\000\001\255T@\002\005\245\225\000\001\255U\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148EA@@\181'replace@@\160@\160@\160@@@\005\003\128@\160\160\176\001\004x0unsafeReplaceBy3@\192\176\193@\176\179\005\003x@\144@\002\005\245\225\000\001\2552\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\2553\176\193@\176\193@\176\179\005\003\137@\144@\002\005\245\225\000\001\2554\176\193@\176\179\005\003\142@\144@\002\005\245\225\000\001\2555\176\193@\176\179\005\003\147@\144@\002\005\245\225\000\001\2556\176\193@\176\179\005\003\152@\144@\002\005\245\225\000\001\2557\176\193@\176\179\144\005\003\141@\144@\002\005\245\225\000\001\2558\176\193@\176\179\005\003\163@\144@\002\005\245\225\000\001\2559\176\179\005\003\166@\144@\002\005\245\225\000\001\255:@\002\005\245\225\000\001\255;@\002\005\245\225\000\001\255<@\002\005\245\225\000\001\255=@\002\005\245\225\000\001\255>@\002\005\245\225\000\001\255?@\002\005\245\225\000\001\255@\176\179\005\003\169@\144@\002\005\245\225\000\001\255A@\002\005\245\225\000\001\255B@\002\005\245\225\000\001\255C@\002\005\245\225\000\001\255D\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148FA@@\181'replace@@\160@\160@\160@@@\005\003\194@\160\160\176\001\004y&search@\192\176\193@\176\179\005\003\186@\144@\002\005\245\225\000\001\255-\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255.\176\179\144\005\003\183@\144@\002\005\245\225\000\001\255/@\002\005\245\225\000\001\2550@\002\005\245\225\000\001\2551\144\224&searchBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&search@@\160@\160@@@\005\003\224@\160\160\176\001\004z%slice@\192\176\193@\176\179\005\003\216@\144@\002\005\245\225\000\001\255&\176\193\144$from\176\179\144\005\003\207@\144@\002\005\245\225\000\001\255'\176\193\144#to_\176\179\144\005\003\215@\144@\002\005\245\225\000\001\255(\176\179\005\003\235@\144@\002\005\245\225\000\001\255)@\002\005\245\225\000\001\255*@\002\005\245\225\000\001\255+@\002\005\245\225\000\001\255,\144\224%sliceCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181%slice@@\160@\160@\160@@@\005\004\004@\160\160\176\001\004{*sliceToEnd@\192\176\193@\176\179\005\003\252@\144@\002\005\245\225\000\001\255!\176\193\144$from\176\179\144\005\003\243@\144@\002\005\245\225\000\001\255\"\176\179\005\004\007@\144@\002\005\245\225\000\001\255#@\002\005\245\225\000\001\255$@\002\005\245\225\000\001\255%\144\224%sliceBA\t)\132\149\166\190\000\000\000\021\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181%slice@@\160@\160@@@\005\004\031@\160\160\176\001\004|%split@\192\176\193@\176\179\005\004\023@\144@\002\005\245\225\000\001\255\027\176\193@\176\179\005\004\028@\144@\002\005\245\225\000\001\255\028\176\179\144\005\003\250\160\176\179\005\004#@\144@\002\005\245\225\000\001\255\029@\144@\002\005\245\225\000\001\255\030@\002\005\245\225\000\001\255\031@\002\005\245\225\000\001\255 \144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004<@\160\160\176\001\004}+splitAtMost@\192\176\193@\176\179\005\0044@\144@\002\005\245\225\000\001\255\019\176\193@\176\179\005\0049@\144@\002\005\245\225\000\001\255\020\176\193\144%limit\176\179\144\005\0040@\144@\002\005\245\225\000\001\255\021\176\179\144\005\004\031\160\176\179\005\004H@\144@\002\005\245\225\000\001\255\022@\144@\002\005\245\225\000\001\255\023@\002\005\245\225\000\001\255\024@\002\005\245\225\000\001\255\025@\002\005\245\225\000\001\255\026\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004b@\160\160\176\001\004~)splitByRe@\192\176\193@\176\179\005\004Z@\144@\002\005\245\225\000\001\255\012\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\r\176\179\144\005\004B\160\176\179\144\005\003\151\160\176\179\005\004o@\144@\002\005\245\225\000\001\255\014@\144@\002\005\245\225\000\001\255\015@\144@\002\005\245\225\000\001\255\016@\002\005\245\225\000\001\255\017@\002\005\245\225\000\001\255\018\144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004\137@\160\160\176\001\004\127/splitByReAtMost@\192\176\193@\176\179\005\004\129@\144@\002\005\245\225\000\001\255\003\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\004\176\193\144%limit\176\179\144\005\004\130@\144@\002\005\245\225\000\001\255\005\176\179\144\005\004q\160\176\179\144\005\003\198\160\176\179\005\004\158@\144@\002\005\245\225\000\001\255\006@\144@\002\005\245\225\000\001\255\007@\144@\002\005\245\225\000\001\255\b@\002\005\245\225\000\001\255\t@\002\005\245\225\000\001\255\n@\002\005\245\225\000\001\255\011\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004\185@\160\160\176\001\004\128*startsWith@\192\176\193@\176\179\005\004\177@\144@\002\005\245\225\000\001\254\254\176\193@\176\179\005\004\182@\144@\002\005\245\225\000\001\254\255\176\179\144\005\003\144@\144@\002\005\245\225\000\001\255\000@\002\005\245\225\000\001\255\001@\002\005\245\225\000\001\255\002\144\224*startsWithBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*startsWith@@\160@\160@@@\005\004\210@\160\160\176\001\004\129.startsWithFrom@\192\176\193@\176\179\005\004\202@\144@\002\005\245\225\000\001\254\247\176\193@\176\179\005\004\207@\144@\002\005\245\225\000\001\254\248\176\193@\176\179\144\005\004\196@\144@\002\005\245\225\000\001\254\249\176\179\144\005\003\175@\144@\002\005\245\225\000\001\254\250@\002\005\245\225\000\001\254\251@\002\005\245\225\000\001\254\252@\002\005\245\225\000\001\254\253\144\224*startsWithCA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181*startsWith@@\160@\160@\160@@@\005\004\242@\160\160\176\001\004\130&substr@\192\176\193@\176\179\005\004\234@\144@\002\005\245\225\000\001\254\242\176\193\144$from\176\179\144\005\004\225@\144@\002\005\245\225\000\001\254\243\176\179\005\004\245@\144@\002\005\245\225\000\001\254\244@\002\005\245\225\000\001\254\245@\002\005\245\225\000\001\254\246\144\224&substrBA\t*\132\149\166\190\000\000\000\022\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181&substr@@\160@\160@@@\005\005\r@\160\160\176\001\004\131,substrAtMost@\192\176\193@\176\179\005\005\005@\144@\002\005\245\225\000\001\254\235\176\193\144$from\176\179\144\005\004\252@\144@\002\005\245\225\000\001\254\236\176\193\144&length\176\179\144\005\005\004@\144@\002\005\245\225\000\001\254\237\176\179\005\005\024@\144@\002\005\245\225\000\001\254\238@\002\005\245\225\000\001\254\239@\002\005\245\225\000\001\254\240@\002\005\245\225\000\001\254\241\144\224&substrCA\t.\132\149\166\190\000\000\000\026\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181&substr@@\160@\160@\160@@@\005\0051@\160\160\176\001\004\132)substring@\192\176\193@\176\179\005\005)@\144@\002\005\245\225\000\001\254\228\176\193\144$from\176\179\144\005\005 @\144@\002\005\245\225\000\001\254\229\176\193\144#to_\176\179\144\005\005(@\144@\002\005\245\225\000\001\254\230\176\179\005\005<@\144@\002\005\245\225\000\001\254\231@\002\005\245\225\000\001\254\232@\002\005\245\225\000\001\254\233@\002\005\245\225\000\001\254\234\144\224)substringCA\t1\132\149\166\190\000\000\000\029\000\000\000\n\000\000\000 \000\000\000\031\176\144\160\160AA\160\160A@\160\160A@@@\181)substring@@\160@\160@\160@@@\005\005U@\160\160\176\001\004\133.substringToEnd@\192\176\193@\176\179\005\005M@\144@\002\005\245\225\000\001\254\223\176\193\144$from\176\179\144\005\005D@\144@\002\005\245\225\000\001\254\224\176\179\005\005X@\144@\002\005\245\225\000\001\254\225@\002\005\245\225\000\001\254\226@\002\005\245\225\000\001\254\227\144\224)substringBA\t-\132\149\166\190\000\000\000\025\000\000\000\b\000\000\000\026\000\000\000\025\176\144\160\160AA\160\160A@@@\181)substring@@\160@\160@@@\005\005p@\160\160\176\001\004\134+toLowerCase@\192\176\193@\176\179\005\005h@\144@\002\005\245\225\000\001\254\220\176\179\005\005k@\144@\002\005\245\225\000\001\254\221@\002\005\245\225\000\001\254\222\144\224+toLowerCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toLowerCase@@\160@@@\005\005\130@\160\160\176\001\004\1351toLocaleLowerCase@\192\176\193@\176\179\005\005z@\144@\002\005\245\225\000\001\254\217\176\179\005\005}@\144@\002\005\245\225\000\001\254\218@\002\005\245\225\000\001\254\219\144\2241toLocaleLowerCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleLowerCase@@\160@@@\005\005\148@\160\160\176\001\004\136+toUpperCase@\192\176\193@\176\179\005\005\140@\144@\002\005\245\225\000\001\254\214\176\179\005\005\143@\144@\002\005\245\225\000\001\254\215@\002\005\245\225\000\001\254\216\144\224+toUpperCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toUpperCase@@\160@@@\005\005\166@\160\160\176\001\004\1371toLocaleUpperCase@\192\176\193@\176\179\005\005\158@\144@\002\005\245\225\000\001\254\211\176\179\005\005\161@\144@\002\005\245\225\000\001\254\212@\002\005\245\225\000\001\254\213\144\2241toLocaleUpperCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleUpperCase@@\160@@@\005\005\184@\160\160\176\001\004\138$trim@\192\176\193@\176\179\005\005\176@\144@\002\005\245\225\000\001\254\208\176\179\005\005\179@\144@\002\005\245\225\000\001\254\209@\002\005\245\225\000\001\254\210\144\224$trimAA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145A@\181$trim@@\160@@@\005\005\202@\160\160\176\001\004\139&anchor@\192\176\193@\176\179\005\005\194@\144@\002\005\245\225\000\001\254\203\176\193@\176\179\005\005\199@\144@\002\005\245\225\000\001\254\204\176\179\005\005\202@\144@\002\005\245\225\000\001\254\205@\002\005\245\225\000\001\254\206@\002\005\245\225\000\001\254\207\144\224&anchorBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&anchor@@\160@\160@@@\005\005\226@\160\160\176\001\004\140$link@\192\176\193@\176\179\005\005\218@\144@\002\005\245\225\000\001\254\198\176\193@\176\179\005\005\223@\144@\002\005\245\225\000\001\254\199\176\179\005\005\226@\144@\002\005\245\225\000\001\254\200@\002\005\245\225\000\001\254\201@\002\005\245\225\000\001\254\202\144\224$linkBA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181$link@@\160@\160@@@\005\005\250@\160\160\176\001\004\141/castToArrayLike@\192\176\193@\176\179\005\005\242@\144@\002\005\245\225\000\001\254\194\176\179\177\144\176@)Js_array2A*array_like\000\255\160\176\179\005\005\253@\144@\002\005\245\225\000\001\254\195@\144@\002\005\245\225\000\001\254\196@\002\005\245\225\000\001\254\197\144\224)%identityAA \160@@@\005\006\021@@\160\160*Js_string2\1440\146#\242\226\1584\145\226N-\139\129m\"o\169\160\160%Js_re\1440c\r\158s\143R\211\142\216\025\193\227\221',\168\160\160)Js_array2\1440\210T\206\242K\020R\133\13934h\179,\196r\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakmap *) "\132\149\166\190\000\000\000\154\000\000\000!\000\000\000v\000\000\000m\192*Js_weakmap\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!k\002\005\245\225\000\000\254\160\176\144\144!v\002\005\245\225\000\000\253@B@A@\160G\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakmap\1440\001(;\181(\t\025\137\"\199\191\226\b[\028F\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakset *) "\132\149\166\190\000\000\000\139\000\000\000\027\000\000\000f\000\000\000]\192*Js_weakset\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakset\1440\157\245\162m3PL\1309\223>\168\227\229\184W\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", @@ -10681,6 +10681,7 @@ val path_int64: Path.t val path_lazy_t: Path.t val path_extension_constructor: Path.t val path_floatarray: Path.t +val path_promise: Path.t val path_match_failure: Path.t val path_assert_failure : Path.t @@ -10767,6 +10768,8 @@ and ident_floatarray = ident_create "floatarray" and ident_unknown = ident_create "unknown" +and ident_promise = ident_create "promise" + type test = | For_sure_yes | For_sure_no @@ -10806,6 +10809,8 @@ and path_unkonwn = Pident ident_unknown and path_extension_constructor = Pident ident_extension_constructor and path_floatarray = Pident ident_floatarray +and path_promise = Pident ident_promise + let type_int = newgenty (Tconstr(path_int, [], ref Mnil)) and type_char = newgenty (Tconstr(path_char, [], ref Mnil)) and type_bytes = newgenty (Tconstr(path_bytes, [], ref Mnil)) @@ -10946,6 +10951,12 @@ let common_initial_env add_type add_extension empty_env = type_params = [tvar]; type_arity = 1; type_variance = [Variance.covariant]} + and decl_promise = + let tvar = newgenvar() in + {decl_abstr with + type_params = [tvar]; + type_arity = 1; + type_variance = [Variance.covariant]} in let add_extension id l = @@ -10987,7 +10998,8 @@ let common_initial_env add_type add_extension empty_env = add_type ident_int decl_abstr_imm ( add_type ident_extension_constructor decl_abstr ( add_type ident_floatarray decl_abstr ( - empty_env))))))))))))))))))))))) + add_type ident_promise decl_promise ( + empty_env)))))))))))))))))))))))) let build_initial_env add_type add_exception empty_env = let common = common_initial_env add_type add_exception empty_env in @@ -40805,6 +40817,7 @@ and type_expect ?in_function ?recarg env sexp ty_expected = let rec extractPromise t = match t.desc with | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) + | Tconstr (Pident {name = "promise"}, [t1], _) -> Some t1 | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 @@ -85850,7 +85863,7 @@ val module_data : end = struct #1 "builtin_cmj_datasets.ml" -(* 36afc4d4582ed9cc168039f5d3f28592 *) +(* a32a8631aa0bfcd37a4d742e9ad8aada *) let module_names : string array = Obj.magic ( "Js" (* 23 *), "Arg" (* 217 *), @@ -86061,7 +86074,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *)"\132\149\166\190\000\000\000\022\000\000\000\007\000\000\000\021\000\000\000\020\160\144\176*fromString\144\160\160A@@@A", (* Belt_Range *)"\132\149\166\190\000\000\000\160\000\000\0004\000\000\000\166\000\000\000\156\160\b\000\000(\000\176$some\144\160\160C@@@\176%every\144\160\160C@@@\176%someU\144\160\160C@@@\176&everyU\144\160\160C@@@\176&someBy\144\160\160D@@@\176'everyBy\144\160\160D@@@\176'forEach\144\160\160C@@@\176'someByU\144\160\160D@@@\176(everyByU\144\160\160D@@@\176(forEachU\144\160\160C@@@A", (* Js_console *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", -(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\018\001\011\018\192\004\002\000R\001\011T\001\011l@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\n\186\001\n\186\192\004%\000O\001\n\248\001\011\016@@\004\003\208B@@@@A", +(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\241\001\011\241\192\004\002\000R\001\012?\001\012]@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\011\135\001\011\135\192\004%\000O\001\011\209\001\011\239@@\004\003\208B@@@@A", (* Js_string2 *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakmap *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakset *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", diff --git a/lib/4.06.1/unstable/js_playground_compiler.ml b/lib/4.06.1/unstable/js_playground_compiler.ml index 1408ef09ee..0e0cacbc01 100644 --- a/lib/4.06.1/unstable/js_playground_compiler.ml +++ b/lib/4.06.1/unstable/js_playground_compiler.ml @@ -2921,7 +2921,7 @@ val module_data : end = struct #1 "builtin_cmi_datasets.ml" -(* 481298ddf6a6c65d9542177270f4c5ed *) +(* 8d68a02b2c67ceea3dd9487a69b39b92 *) let module_names : string array = Obj.magic ( "Js" (* 6126 *), "Arg" (* 3634 *), @@ -2997,7 +2997,7 @@ let module_names : string array = Obj.magic ( "Belt_Float" (* 903 *), "Belt_Range" (* 1850 *), "Js_console" (* 3442 *), -"Js_promise" (* 2756 *), +"Js_promise" (* 2830 *), "Js_string2" (* 9269 *), "Js_weakmap" (* 174 *), "Js_weakset" (* 159 *), @@ -3123,7 +3123,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *) "\132\149\166\190\000\000\003s\000\000\000\206\000\000\002\213\000\000\002\186\192*Belt_Float\160\160\176\001\003\242%toInt@\192\176\193@\176\179\144\176D%float@@\144@\002\005\245\225\000\000\252\176\179\144\176A#int@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224+%intoffloatAA \160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\003\243'fromInt@\192\176\193@\176\179\144\004\021@\144@\002\005\245\225\000\000\249\176\179\144\004\031@\144@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224)%identityAA\004\023\160@@@\004\022@\160\160\176\001\003\244*fromString@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\245\176\179\144\176J&option@\160\176\179\144\004:@\144@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\004.@\160\160\176\001\003\245(toString@\192\176\193@\176\179\144\004F@\144@\002\005\245\225\000\000\242\176\179\144\004\028@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004B@\160\160\176\001\003\246!+@\192\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\237\176\193@\176\179\144\004`@\144@\002\005\245\225\000\000\238\176\179\144\004d@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241\144\224)%addfloatBA\004\\\160@\160@@@\004\\@\160\160\176\001\003\247!-@\192\176\193@\176\179\144\004t@\144@\002\005\245\225\000\000\232\176\193@\176\179\144\004z@\144@\002\005\245\225\000\000\233\176\179\144\004~@\144@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224)%subfloatBA\004v\160@\160@@@\004v@\160\160\176\001\003\248!*@\192\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\227\176\193@\176\179\144\004\148@\144@\002\005\245\225\000\000\228\176\179\144\004\152@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\002\005\245\225\000\000\231\144\224)%mulfloatBA\004\144\160@\160@@@\004\144@\160\160\176\001\003\249!/@\192\176\193@\176\179\144\004\168@\144@\002\005\245\225\000\000\222\176\193@\176\179\144\004\174@\144@\002\005\245\225\000\000\223\176\179\144\004\178@\144@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224)%divfloatBA\004\170\160@\160@@@\004\170@@\160\160*Belt_Float\1440\220\t\225\167\143TL\234\185\023\004\026t\228\210\161\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Belt_Range *) "\132\149\166\190\000\000\007&\000\000\001\179\000\000\005\214\000\000\005\182\192*Belt_Range\160\160\176\001\004b(forEachU@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\245\176\193@\176\179\144\004\b@\144@\002\005\245\225\000\000\246\176\193@\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\179\144\004\026@\144@\002\005\245\225\000\000\247\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\144@\002\005\245\225\000\000\250\176\179\144\004\007@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004c'forEach@\192\176\193@\176\179\144\0043@\144@\002\005\245\225\000\000\236\176\193@\176\179\144\0049@\144@\002\005\245\225\000\000\237\176\193@\176\193@\176\179\144\004A@\144@\002\005\245\225\000\000\238\176\179\144\004'@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\176\179\144\004+@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\004$@\160\160\176\001\004d&everyU@\192\176\193@\176\179\144\004T@\144@\002\005\245\225\000\000\226\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\227\176\193@\176\179\177\177\144\176@\004RA\004Q@&arity1\000\255\160\176\193@\176\179\144\004j@\144@\002\005\245\225\000\000\228\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231\176\179\144\004\007@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\004P@\160\160\176\001\004e%every@\192\176\193@\176\179\144\004\128@\144@\002\005\245\225\000\000\217\176\193@\176\179\144\004\134@\144@\002\005\245\225\000\000\218\176\193@\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\219\176\179\144\004$@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\221\176\179\144\004(@\144@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\004q@\160\160\176\001\004f(everyByU@\192\176\193@\176\179\144\004\161@\144@\002\005\245\225\000\000\205\176\193@\176\179\144\004\167@\144@\002\005\245\225\000\000\206\176\193\144$step\176\179\144\004\175@\144@\002\005\245\225\000\000\207\176\193@\176\179\177\177\144\176@\004\167A\004\166@&arity1\000\255\160\176\193@\176\179\144\004\191@\144@\002\005\245\225\000\000\208\176\179\144\004U@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\144@\002\005\245\225\000\000\211\176\179\144\004Z@\144@\002\005\245\225\000\000\212@\002\005\245\225\000\000\213@\002\005\245\225\000\000\214@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\004\163@\160\160\176\001\004g'everyBy@\192\176\193@\176\179\144\004\211@\144@\002\005\245\225\000\000\194\176\193@\176\179\144\004\217@\144@\002\005\245\225\000\000\195\176\193\144$step\176\179\144\004\225@\144@\002\005\245\225\000\000\196\176\193@\176\193@\176\179\144\004\233@\144@\002\005\245\225\000\000\197\176\179\144\004\127@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\199\176\179\144\004\131@\144@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202@\002\005\245\225\000\000\203@\002\005\245\225\000\000\204@\004\204@\160\160\176\001\004h%someU@\192\176\193@\176\179\144\004\252@\144@\002\005\245\225\000\000\184\176\193@\176\179\144\005\001\002@\144@\002\005\245\225\000\000\185\176\193@\176\179\177\177\144\176@\004\250A\004\249@&arity1\000\255\160\176\193@\176\179\144\005\001\018@\144@\002\005\245\225\000\000\186\176\179\144\004\168@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\144@\002\005\245\225\000\000\189\176\179\144\004\173@\144@\002\005\245\225\000\000\190@\002\005\245\225\000\000\191@\002\005\245\225\000\000\192@\002\005\245\225\000\000\193@\004\246@\160\160\176\001\004i$some@\192\176\193@\176\179\144\005\001&@\144@\002\005\245\225\000\000\175\176\193@\176\179\144\005\001,@\144@\002\005\245\225\000\000\176\176\193@\176\193@\176\179\144\005\0014@\144@\002\005\245\225\000\000\177\176\179\144\004\202@\144@\002\005\245\225\000\000\178@\002\005\245\225\000\000\179\176\179\144\004\206@\144@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\005\001\023@\160\160\176\001\004j'someByU@\192\176\193@\176\179\144\005\001G@\144@\002\005\245\225\000\000\163\176\193@\176\179\144\005\001M@\144@\002\005\245\225\000\000\164\176\193\144$step\176\179\144\005\001U@\144@\002\005\245\225\000\000\165\176\193@\176\179\177\177\144\176@\005\001MA\005\001L@&arity1\000\255\160\176\193@\176\179\144\005\001e@\144@\002\005\245\225\000\000\166\176\179\144\004\251@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\168@\144@\002\005\245\225\000\000\169\176\179\144\005\001\000@\144@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174@\005\001I@\160\160\176\001\004k&someBy@\192\176\193@\176\179\144\005\001y@\144@\002\005\245\225\000\000\152\176\193@\176\179\144\005\001\127@\144@\002\005\245\225\000\000\153\176\193\144$step\176\179\144\005\001\135@\144@\002\005\245\225\000\000\154\176\193@\176\193@\176\179\144\005\001\143@\144@\002\005\245\225\000\000\155\176\179\144\005\001%@\144@\002\005\245\225\000\000\156@\002\005\245\225\000\000\157\176\179\144\005\001)@\144@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\001r@@\160\160*Belt_Range\1440\192@X\13491\017\252j\198\193OH\002\2472\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_console *) "\132\149\166\190\000\000\r^\000\000\002\157\000\000\tu\000\000\b\204\192*Js_console\160\160\176\001\004\001#log@\192\176\193@\176\144\144!a\002\005\245\225\000\000\252\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@@\160'console@\160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004\002$log2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\247\176\193@\176\144\144!b\002\005\245\225\000\000\248\176\179\144\004\031@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224#logBA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145BE\196#log@@\160'console@\160@\160@@@\004\030@\160\160\176\001\004\003$log3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\240\176\193@\176\144\144!b\002\005\245\225\000\000\241\176\193@\176\144\144!c\002\005\245\225\000\000\242\176\179\144\004@@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246\144\224#logCA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145CE\196#log@@\160'console@\160@\160@\160@@@\004@@\160\160\176\001\004\004$log4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\231\176\193@\176\144\144!b\002\005\245\225\000\000\232\176\193@\176\144\144!c\002\005\245\225\000\000\233\176\193@\176\144\144!d\002\005\245\225\000\000\234\176\179\144\004h@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224#logDA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145DE\196#log@@\160'console@\160@\160@\160@\160@@@\004i@\160\160\176\001\004\005'logMany@\192\176\193@\176\179\144\176H%array@\160\176\144\144!a\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\134@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@A\160'console@\160@@@\004\132@\160\160\176\001\004\006$info@\192\176\193@\176\144\144!a\002\005\245\225\000\000\224\176\179\144\004\154@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@@\160'console@\160@@@\004\152@\160\160\176\001\004\007%info2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\219\176\193@\176\144\144!b\002\005\245\225\000\000\220\176\179\144\004\180@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224$infoBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$info@@\160'console@\160@\160@@@\004\179@\160\160\176\001\004\b%info3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\212\176\193@\176\144\144!b\002\005\245\225\000\000\213\176\193@\176\144\144!c\002\005\245\225\000\000\214\176\179\144\004\213@\144@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224$infoCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$info@@\160'console@\160@\160@\160@@@\004\213@\160\160\176\001\004\t%info4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\203\176\193@\176\144\144!b\002\005\245\225\000\000\204\176\193@\176\144\144!c\002\005\245\225\000\000\205\176\193@\176\144\144!d\002\005\245\225\000\000\206\176\179\144\004\253@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211\144\224$infoDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$info@@\160'console@\160@\160@\160@\160@@@\004\254@\160\160\176\001\004\n(infoMany@\192\176\193@\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\199@\144@\002\005\245\225\000\000\200\176\179\144\005\001\025@\144@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@A\160'console@\160@@@\005\001\023@\160\160\176\001\004\011$warn@\192\176\193@\176\144\144!a\002\005\245\225\000\000\196\176\179\144\005\001-@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\198\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@@\160'console@\160@@@\005\001+@\160\160\176\001\004\012%warn2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\191\176\193@\176\144\144!b\002\005\245\225\000\000\192\176\179\144\005\001G@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195\144\224$warnBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$warn@@\160'console@\160@\160@@@\005\001F@\160\160\176\001\004\r%warn3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\184\176\193@\176\144\144!b\002\005\245\225\000\000\185\176\193@\176\144\144!c\002\005\245\225\000\000\186\176\179\144\005\001h@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189@\002\005\245\225\000\000\190\144\224$warnCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$warn@@\160'console@\160@\160@\160@@@\005\001h@\160\160\176\001\004\014%warn4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\175\176\193@\176\144\144!b\002\005\245\225\000\000\176\176\193@\176\144\144!c\002\005\245\225\000\000\177\176\193@\176\144\144!d\002\005\245\225\000\000\178\176\179\144\005\001\144@\144@\002\005\245\225\000\000\179@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224$warnDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$warn@@\160'console@\160@\160@\160@\160@@@\005\001\145@\160\160\176\001\004\015(warnMany@\192\176\193@\176\179\144\005\001(\160\176\144\144!a\002\005\245\225\000\000\171@\144@\002\005\245\225\000\000\172\176\179\144\005\001\172@\144@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@A\160'console@\160@@@\005\001\170@\160\160\176\001\004\016%error@\192\176\193@\176\144\144!a\002\005\245\225\000\000\168\176\179\144\005\001\192@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@@\160'console@\160@@@\005\001\190@\160\160\176\001\004\017&error2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\163\176\193@\176\144\144!b\002\005\245\225\000\000\164\176\179\144\005\001\218@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224%errorBA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196%error@@\160'console@\160@\160@@@\005\001\217@\160\160\176\001\004\018&error3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\156\176\193@\176\144\144!b\002\005\245\225\000\000\157\176\193@\176\144\144!c\002\005\245\225\000\000\158\176\179\144\005\001\251@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162\144\224%errorCA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196%error@@\160'console@\160@\160@\160@@@\005\001\251@\160\160\176\001\004\019&error4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\147\176\193@\176\144\144!b\002\005\245\225\000\000\148\176\193@\176\144\144!c\002\005\245\225\000\000\149\176\193@\176\144\144!d\002\005\245\225\000\000\150\176\179\144\005\002#@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\144\224%errorDA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196%error@@\160'console@\160@\160@\160@\160@@@\005\002$@\160\160\176\001\004\020)errorMany@\192\176\193@\176\179\144\005\001\187\160\176\144\144!a\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144\176\179\144\005\002?@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@A\160'console@\160@@@\005\002=@\160\160\176\001\004\021%trace@\192\176\193@\176\179\144\005\002O@\144@\002\005\245\225\000\000\140\176\179\144\005\002S@\144@\002\005\245\225\000\000\141@\002\005\245\225\000\000\142\144\224%traceAA\t/\132\149\166\190\000\000\000\027\000\000\000\b\000\000\000\026\000\000\000\024\176\144\160\160@A@E\196%trace@@\160'console@\160@@@\005\002Q@\160\160\176\001\004\022)timeStart@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\137\176\179\144\005\002i@\144@\002\005\245\225\000\000\138@\002\005\245\225\000\000\139\144\224$timeAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$time@@\160'console@\160@@@\005\002g@\160\160\176\001\004\023'timeEnd@\192\176\193@\176\179\144\004\022@\144@\002\005\245\225\000\000\134\176\179\144\005\002}@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136\144\224'timeEndAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196'timeEnd@@\160'console@\160@@@\005\002{@@\160\160*Js_console\1440L`\184fJ:\215\143\159\251<\002\0161\210\129\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", -(* Js_promise *) "\132\149\166\190\000\000\n\176\000\000\002d\000\000\b-\000\000\007\210\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160A@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\144@\002\005\245\225\000\000\243\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\244\176\179\144\004\027@\144@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247\176\179\144\004 @\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\176\179\144\004T\160\004,@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\238\176\179\004\021\160\004\007@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004f@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0044@\144@\002\005\245\225\000\000\234\176\179\004)\160\176\144\144!a\002\005\245\225\000\000\235@\144@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004~@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\004C\160\176\144\144!a\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\228@\144@\002\005\245\225\000\000\229\176\179\004L\160\176\179\144\004\018\160\004\r@\144@\002\005\245\225\000\000\231@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\162@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\004d\160\176\144\144\"a0\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\221\160\176\179\004m\160\176\144\144\"a1\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\222\176\179\004u\160\176\146\160\004\020\160\004\012@\002\005\245\225\000\000\225@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\202@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\004\140\160\176\144\144\"a0\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\212\160\176\179\004\149\160\176\144\144\"a1\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\004\158\160\176\144\144\"a2\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\213\176\179\004\166\160\176\146\160\004\029\160\004\021\160\004\r@\002\005\245\225\000\000\217@\144@\002\005\245\225\000\000\218@\002\005\245\225\000\000\219\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\252@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\004\190\160\176\144\144\"a0\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\201\160\176\179\004\199\160\176\144\144\"a1\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\004\208\160\176\144\144\"a2\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\004\217\160\176\144\144\"a3\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\202\176\179\004\225\160\176\146\160\004&\160\004\030\160\004\022\160\004\014@\002\005\245\225\000\000\207@\144@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\0018@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\004\250\160\176\144\144\"a0\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\188\160\176\179\005\001\003\160\176\144\144\"a1\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\005\001\012\160\176\144\144\"a2\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\005\001\021\160\176\144\144\"a3\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\005\001\030\160\176\144\144\"a4\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184@\002\005\245\225\000\000\189\176\179\005\001&\160\176\146\160\004/\160\004'\160\004\031\160\004\023\160\004\015@\002\005\245\225\000\000\195@\144@\002\005\245\225\000\000\196@\002\005\245\225\000\000\197\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001~@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\005\001@\160\176\144\144\"a0\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\173\160\176\179\005\001I\160\176\144\144\"a1\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\005\001R\160\176\144\144\"a2\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\005\001[\160\176\144\144\"a3\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\005\001d\160\176\144\144\"a4\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\005\001m\160\176\144\144\"a5\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168@\002\005\245\225\000\000\174\176\179\005\001u\160\176\146\160\0048\160\0040\160\004(\160\004 \160\004\024\160\004\016@\002\005\245\225\000\000\181@\144@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\206@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001P\160\176\179\005\001\145\160\176\144\144!a\002\005\245\225\000\000\165@\144@\002\005\245\225\000\000\163@\144@\002\005\245\225\000\000\164\176\179\005\001\154\160\004\t@\144@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\157\176\179\005\001\174\160\176\004\005\002\005\245\225\000\000\159@\144@\002\005\245\225\000\000\155@\002\005\245\225\000\000\156\176\193@\176\179\005\001\181\160\004\012@\144@\002\005\245\225\000\000\158\176\179\005\001\185\160\004\011@\144@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\002\005@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002\011@\144@\002\005\245\225\000\000\147\176\179\005\001\202\160\176\004!\002\005\245\225\000\000\151@\144@\002\005\245\225\000\000\148@\002\005\245\225\000\000\149\176\193@\176\179\005\001\209\160\004\007@\144@\002\005\245\225\000\000\150\176\179\005\001\213\160\004\011@\144@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\005\002!@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\144\176\179\005\001\228\160\004\007@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224)%identityAA \160@@@\005\0025@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\005\001\244\160\176\144\144!a\002\005\245\225\000\000\142@\144@\002\005\245\225\000\000\141\004\005@\002\005\245\225\000\000\143\144\224&?awaitAA\004\020\160@@@\005\002H@@\160\160*Js_promise\1440'i\255\135\213\144\168\240\001pr\b{\245\206\200\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", +(* Js_promise *) "\132\149\166\190\000\000\n\250\000\000\002\147\000\000\b\147\000\000\b7\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\253@A@A\144\176\179\144\176Q'promise@\160\004\011@\144@\002\005\245\225\000\000\254\160Y@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\250\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241@\144@\002\005\245\225\000\000\242\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\243\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\144@\002\005\245\225\000\000\246\176\179\144\004 @\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249\176\179\144\004P\160\004,@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\237\176\179\144\004e\160\004\b@\144@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004g@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0045@\144@\002\005\245\225\000\000\233\176\179\144\004z\160\176\144\144!a\002\005\245\225\000\000\234@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004\128@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\229@\144@\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\159\160\176\179\144\004\020\160\004\014@\144@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\166@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\144\004\184\160\176\144\144\"a0\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220\160\176\179\144\004\194\160\176\144\144\"a1\002\005\245\225\000\000\222@\144@\002\005\245\225\000\000\219@\002\005\245\225\000\000\221\176\179\144\004\203\160\176\146\160\004\022\160\004\r@\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\209@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\144\004\227\160\176\144\144\"a0\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\144\004\237\160\176\144\144\"a1\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210\160\176\179\144\004\247\160\176\144\144\"a2\002\005\245\225\000\000\213@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\212\176\179\144\005\001\000\160\176\146\160\004 \160\004\023\160\004\014@\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\007@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\144\005\001\025\160\176\144\144\"a0\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\144\005\001#\160\176\144\144\"a1\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\144\005\001-\160\176\144\144\"a2\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198\160\176\179\144\005\0017\160\176\144\144\"a3\002\005\245\225\000\000\202@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\201\176\179\144\005\001@\160\176\146\160\004*\160\004!\160\004\024\160\004\015@\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001H@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\144\005\001Z\160\176\144\144\"a0\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\144\005\001d\160\176\144\144\"a1\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\144\005\001n\160\176\144\144\"a2\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\144\005\001x\160\176\144\144\"a3\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184\160\176\179\144\005\001\130\160\176\144\144\"a4\002\005\245\225\000\000\189@\144@\002\005\245\225\000\000\183@\002\005\245\225\000\000\188\176\179\144\005\001\139\160\176\146\160\0044\160\004+\160\004\"\160\004\025\160\004\016@\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\148@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\144\005\001\166\160\176\144\144\"a0\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\144\005\001\176\160\176\144\144\"a1\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\144\005\001\186\160\176\144\144\"a2\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\144\005\001\196\160\176\144\144\"a3\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\144\005\001\206\160\176\144\144\"a4\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168\160\176\179\144\005\001\216\160\176\144\144\"a5\002\005\245\225\000\000\174@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\173\176\179\144\005\001\225\160\176\146\160\004>\160\0045\160\004,\160\004#\160\004\026\160\004\017@\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001k\160\176\179\144\005\001\254\160\176\144\144!a\002\005\245\225\000\000\164@\144@\002\005\245\225\000\000\162@\144@\002\005\245\225\000\000\163\176\179\144\005\002\b\160\004\n@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\002\n@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\156\176\179\144\005\002\029\160\176\004\006\002\005\245\225\000\000\158@\144@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\176\193@\176\179\144\005\002%\160\004\014@\144@\002\005\245\225\000\000\157\176\179\144\005\002*\160\004\r@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\005\002'@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002-@\144@\002\005\245\225\000\000\146\176\179\144\005\002<\160\176\004%\002\005\245\225\000\000\150@\144@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\176\193@\176\179\144\005\002D\160\004\b@\144@\002\005\245\225\000\000\149\176\179\144\005\002I\160\004\r@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\005\002F@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\143\176\179\144\005\002Y\160\004\b@\144@\002\005\245\225\000\000\144@\002\005\245\225\000\000\145\144\224)%identityAA \160@@@\005\002[@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\144\005\002j\160\176\144\144!a\002\005\245\225\000\000\141@\144@\002\005\245\225\000\000\140\004\005@\002\005\245\225\000\000\142\144\224&?awaitAA\004\021\160@@@\005\002o@@\160\160*Js_promise\1440\0141\140\179\b+\200\207\131\168\131u\021\178\185\250\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_string2 *) "\132\149\166\190\000\000$!\000\000\006<\000\000\024\016\000\000\022g\192*Js_string2\160\177\176\001\004Y!t@\b\000\000,\000@@@A\144\176\179\144\176M&string@@\144@\002\005\245\225\000\000\254@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\160\176\001\004Z$make@\192\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\004\028@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004\024@\160\160\176\001\004[,fromCharCode@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\248\176\179\004\022@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@@@\160@@@\004-@\160\160\176\001\004\\0fromCharCodeMany@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\144@\002\005\245\225\000\000\245\176\179\0040@\144@\002\005\245\225\000\000\246@\002\005\245\225\000\000\247\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@A@\160@@@\004G@\160\160\176\001\004]-fromCodePoint@\192\176\193@\176\179\144\004/@\144@\002\005\245\225\000\000\241\176\179\004C@\144@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@@@\160@@@\004Z@\160\160\176\001\004^1fromCodePointMany@\192\176\193@\176\179\144\004-\160\176\179\144\004F@\144@\002\005\245\225\000\000\237@\144@\002\005\245\225\000\000\238\176\179\004[@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@A@\160@@@\004r@\160\160\176\001\004_&length@\192\176\193@\176\179\004j@\144@\002\005\245\225\000\000\234\176\179\144\004]@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&lengthAA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\012\000\000\000\011\176\145A@\168&length@\160@@@\004\133@\160\160\176\001\004`#get@\192\176\193@\176\179\004}@\144@\002\005\245\225\000\000\229\176\193@\176\179\144\004r@\144@\002\005\245\225\000\000\230\176\179\004\134@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224 BA:\132\149\166\190\000\000\000\006\000\000\000\003\000\000\000\b\000\000\000\b\176\145B@\153@\160@\160@@@\004\158@\160\160\176\001\004a&charAt@\192\176\193@\176\179\004\150@\144@\002\005\245\225\000\000\224\176\193@\176\179\144\004\139@\144@\002\005\245\225\000\000\225\176\179\004\159@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227@\002\005\245\225\000\000\228\144\224&charAtBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&charAt@@\160@\160@@@\004\183@\160\160\176\001\004b*charCodeAt@\192\176\193@\176\179\004\175@\144@\002\005\245\225\000\000\219\176\193@\176\179\144\004\164@\144@\002\005\245\225\000\000\220\176\179\144\176D%float@@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224*charCodeAtBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*charCodeAt@@\160@\160@@@\004\211@\160\160\176\001\004c+codePointAt@\192\176\193@\176\179\004\203@\144@\002\005\245\225\000\000\213\176\193@\176\179\144\004\192@\144@\002\005\245\225\000\000\214\176\179\144\176J&option@\160\176\179\144\004\202@\144@\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224+codePointAtBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+codePointAt@@\160@\160@@@\004\244@\160\160\176\001\004d&concat@\192\176\193@\176\179\004\236@\144@\002\005\245\225\000\000\208\176\193@\176\179\004\241@\144@\002\005\245\225\000\000\209\176\179\004\244@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211@\002\005\245\225\000\000\212\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concat@@\160@\160@@@\005\001\012@\160\160\176\001\004e*concatMany@\192\176\193@\176\179\005\001\004@\144@\002\005\245\225\000\000\202\176\193@\176\179\144\004\228\160\176\179\005\001\r@\144@\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\204\176\179\005\001\017@\144@\002\005\245\225\000\000\205@\002\005\245\225\000\000\206@\002\005\245\225\000\000\207\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concatA@\160@\160@@@\005\001)@\160\160\176\001\004f(endsWith@\192\176\193@\176\179\005\001!@\144@\002\005\245\225\000\000\197\176\193@\176\179\005\001&@\144@\002\005\245\225\000\000\198\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\199@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201\144\224(endsWithBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(endsWith@@\160@\160@@@\005\001D@\160\160\176\001\004g,endsWithFrom@\192\176\193@\176\179\005\001<@\144@\002\005\245\225\000\000\190\176\193@\176\179\005\001A@\144@\002\005\245\225\000\000\191\176\193@\176\179\144\005\0016@\144@\002\005\245\225\000\000\192\176\179\144\004!@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224(endsWithCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(endsWith@@\160@\160@\160@@@\005\001d@\160\160\176\001\004h(includes@\192\176\193@\176\179\005\001\\@\144@\002\005\245\225\000\000\185\176\193@\176\179\005\001a@\144@\002\005\245\225\000\000\186\176\179\144\004;@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189\144\224(includesBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(includes@@\160@\160@@@\005\001}@\160\160\176\001\004i,includesFrom@\192\176\193@\176\179\005\001u@\144@\002\005\245\225\000\000\178\176\193@\176\179\005\001z@\144@\002\005\245\225\000\000\179\176\193@\176\179\144\005\001o@\144@\002\005\245\225\000\000\180\176\179\144\004Z@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\002\005\245\225\000\000\184\144\224(includesCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(includes@@\160@\160@\160@@@\005\001\157@\160\160\176\001\004j'indexOf@\192\176\193@\176\179\005\001\149@\144@\002\005\245\225\000\000\173\176\193@\176\179\005\001\154@\144@\002\005\245\225\000\000\174\176\179\144\005\001\141@\144@\002\005\245\225\000\000\175@\002\005\245\225\000\000\176@\002\005\245\225\000\000\177\144\224'indexOfBA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181'indexOf@@\160@\160@@@\005\001\182@\160\160\176\001\004k+indexOfFrom@\192\176\193@\176\179\005\001\174@\144@\002\005\245\225\000\000\166\176\193@\176\179\005\001\179@\144@\002\005\245\225\000\000\167\176\193@\176\179\144\005\001\168@\144@\002\005\245\225\000\000\168\176\179\144\005\001\172@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172\144\224'indexOfCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'indexOf@@\160@\160@\160@@@\005\001\214@\160\160\176\001\004l+lastIndexOf@\192\176\193@\176\179\005\001\206@\144@\002\005\245\225\000\000\161\176\193@\176\179\005\001\211@\144@\002\005\245\225\000\000\162\176\179\144\005\001\198@\144@\002\005\245\225\000\000\163@\002\005\245\225\000\000\164@\002\005\245\225\000\000\165\144\224+lastIndexOfBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+lastIndexOf@@\160@\160@@@\005\001\239@\160\160\176\001\004m/lastIndexOfFrom@\192\176\193@\176\179\005\001\231@\144@\002\005\245\225\000\000\154\176\193@\176\179\005\001\236@\144@\002\005\245\225\000\000\155\176\193@\176\179\144\005\001\225@\144@\002\005\245\225\000\000\156\176\179\144\005\001\229@\144@\002\005\245\225\000\000\157@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160\144\224+lastIndexOfCA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181+lastIndexOf@@\160@\160@\160@@@\005\002\015@\160\160\176\001\004n-localeCompare@\192\176\193@\176\179\005\002\007@\144@\002\005\245\225\000\000\149\176\193@\176\179\005\002\012@\144@\002\005\245\225\000\000\150\176\179\144\005\001W@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153\144\224-localeCompareBA\t)\132\149\166\190\000\000\000\021\000\000\000\004\000\000\000\015\000\000\000\r\176\145B@\181-localeCompare@@\160@\160@@@\005\002(@\160\160\176\001\004o&match_@\192\176\193@\176\179\005\002 @\144@\002\005\245\225\000\000\141\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\000\142\176\179\144\005\001Y\160\176\179\144\005\002\012\160\176\179\144\005\001a\160\176\179\005\0029@\144@\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144@\144@\002\005\245\225\000\000\145@\144@\002\005\245\225\000\000\146@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\144\224%matchBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145BC\181%match@@\160@\160@@@\005\002T@\160\160\176\001\004p)normalize@\192\176\193@\176\179\005\002L@\144@\002\005\245\225\000\000\138\176\179\005\002O@\144@\002\005\245\225\000\000\139@\002\005\245\225\000\000\140\144\224)normalizeAA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181)normalize@@\160@@@\005\002f@\160\160\176\001\004q/normalizeByForm@\192\176\193@\176\179\005\002^@\144@\002\005\245\225\000\000\133\176\193@\176\179\005\002c@\144@\002\005\245\225\000\000\134\176\179\005\002f@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136@\002\005\245\225\000\000\137\144\224)normalizeBA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181)normalize@@\160@\160@@@\005\002~@\160\160\176\001\004r&repeat@\192\176\193@\176\179\005\002v@\144@\002\005\245\225\000\000\128\176\193@\176\179\144\005\002k@\144@\002\005\245\225\000\000\129\176\179\005\002\127@\144@\002\005\245\225\000\000\130@\002\005\245\225\000\000\131@\002\005\245\225\000\000\132\144\224&repeatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&repeat@@\160@\160@@@\005\002\151@\160\160\176\001\004s'replace@\192\176\193@\176\179\005\002\143@\144@\002\005\245\225\000\001\255y\176\193@\176\179\005\002\148@\144@\002\005\245\225\000\001\255z\176\193@\176\179\005\002\153@\144@\002\005\245\225\000\001\255{\176\179\005\002\156@\144@\002\005\245\225\000\001\255|@\002\005\245\225\000\001\255}@\002\005\245\225\000\001\255~@\002\005\245\225\000\001\255\127\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\181@\160\160\176\001\004t+replaceByRe@\192\176\193@\176\179\005\002\173@\144@\002\005\245\225\000\001\255r\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255s\176\193@\176\179\005\002\188@\144@\002\005\245\225\000\001\255t\176\179\005\002\191@\144@\002\005\245\225\000\001\255u@\002\005\245\225\000\001\255v@\002\005\245\225\000\001\255w@\002\005\245\225\000\001\255x\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\216@\160\160\176\001\004u0unsafeReplaceBy0@\192\176\193@\176\179\005\002\208@\144@\002\005\245\225\000\001\255e\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255f\176\193@\176\193@\176\179\005\002\225@\144@\002\005\245\225\000\001\255g\176\193@\176\179\144\005\002\214@\144@\002\005\245\225\000\001\255h\176\193@\176\179\005\002\236@\144@\002\005\245\225\000\001\255i\176\179\005\002\239@\144@\002\005\245\225\000\001\255j@\002\005\245\225\000\001\255k@\002\005\245\225\000\001\255l@\002\005\245\225\000\001\255m\176\179\005\002\242@\144@\002\005\245\225\000\001\255n@\002\005\245\225\000\001\255o@\002\005\245\225\000\001\255p@\002\005\245\225\000\001\255q\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148CA@@\181'replace@@\160@\160@\160@@@\005\003\011@\160\160\176\001\004v0unsafeReplaceBy1@\192\176\193@\176\179\005\003\003@\144@\002\005\245\225\000\001\255V\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255W\176\193@\176\193@\176\179\005\003\020@\144@\002\005\245\225\000\001\255X\176\193@\176\179\005\003\025@\144@\002\005\245\225\000\001\255Y\176\193@\176\179\144\005\003\014@\144@\002\005\245\225\000\001\255Z\176\193@\176\179\005\003$@\144@\002\005\245\225\000\001\255[\176\179\005\003'@\144@\002\005\245\225\000\001\255\\@\002\005\245\225\000\001\255]@\002\005\245\225\000\001\255^@\002\005\245\225\000\001\255_@\002\005\245\225\000\001\255`\176\179\005\003*@\144@\002\005\245\225\000\001\255a@\002\005\245\225\000\001\255b@\002\005\245\225\000\001\255c@\002\005\245\225\000\001\255d\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148DA@@\181'replace@@\160@\160@\160@@@\005\003C@\160\160\176\001\004w0unsafeReplaceBy2@\192\176\193@\176\179\005\003;@\144@\002\005\245\225\000\001\255E\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255F\176\193@\176\193@\176\179\005\003L@\144@\002\005\245\225\000\001\255G\176\193@\176\179\005\003Q@\144@\002\005\245\225\000\001\255H\176\193@\176\179\005\003V@\144@\002\005\245\225\000\001\255I\176\193@\176\179\144\005\003K@\144@\002\005\245\225\000\001\255J\176\193@\176\179\005\003a@\144@\002\005\245\225\000\001\255K\176\179\005\003d@\144@\002\005\245\225\000\001\255L@\002\005\245\225\000\001\255M@\002\005\245\225\000\001\255N@\002\005\245\225\000\001\255O@\002\005\245\225\000\001\255P@\002\005\245\225\000\001\255Q\176\179\005\003g@\144@\002\005\245\225\000\001\255R@\002\005\245\225\000\001\255S@\002\005\245\225\000\001\255T@\002\005\245\225\000\001\255U\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148EA@@\181'replace@@\160@\160@\160@@@\005\003\128@\160\160\176\001\004x0unsafeReplaceBy3@\192\176\193@\176\179\005\003x@\144@\002\005\245\225\000\001\2552\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\2553\176\193@\176\193@\176\179\005\003\137@\144@\002\005\245\225\000\001\2554\176\193@\176\179\005\003\142@\144@\002\005\245\225\000\001\2555\176\193@\176\179\005\003\147@\144@\002\005\245\225\000\001\2556\176\193@\176\179\005\003\152@\144@\002\005\245\225\000\001\2557\176\193@\176\179\144\005\003\141@\144@\002\005\245\225\000\001\2558\176\193@\176\179\005\003\163@\144@\002\005\245\225\000\001\2559\176\179\005\003\166@\144@\002\005\245\225\000\001\255:@\002\005\245\225\000\001\255;@\002\005\245\225\000\001\255<@\002\005\245\225\000\001\255=@\002\005\245\225\000\001\255>@\002\005\245\225\000\001\255?@\002\005\245\225\000\001\255@\176\179\005\003\169@\144@\002\005\245\225\000\001\255A@\002\005\245\225\000\001\255B@\002\005\245\225\000\001\255C@\002\005\245\225\000\001\255D\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148FA@@\181'replace@@\160@\160@\160@@@\005\003\194@\160\160\176\001\004y&search@\192\176\193@\176\179\005\003\186@\144@\002\005\245\225\000\001\255-\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255.\176\179\144\005\003\183@\144@\002\005\245\225\000\001\255/@\002\005\245\225\000\001\2550@\002\005\245\225\000\001\2551\144\224&searchBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&search@@\160@\160@@@\005\003\224@\160\160\176\001\004z%slice@\192\176\193@\176\179\005\003\216@\144@\002\005\245\225\000\001\255&\176\193\144$from\176\179\144\005\003\207@\144@\002\005\245\225\000\001\255'\176\193\144#to_\176\179\144\005\003\215@\144@\002\005\245\225\000\001\255(\176\179\005\003\235@\144@\002\005\245\225\000\001\255)@\002\005\245\225\000\001\255*@\002\005\245\225\000\001\255+@\002\005\245\225\000\001\255,\144\224%sliceCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181%slice@@\160@\160@\160@@@\005\004\004@\160\160\176\001\004{*sliceToEnd@\192\176\193@\176\179\005\003\252@\144@\002\005\245\225\000\001\255!\176\193\144$from\176\179\144\005\003\243@\144@\002\005\245\225\000\001\255\"\176\179\005\004\007@\144@\002\005\245\225\000\001\255#@\002\005\245\225\000\001\255$@\002\005\245\225\000\001\255%\144\224%sliceBA\t)\132\149\166\190\000\000\000\021\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181%slice@@\160@\160@@@\005\004\031@\160\160\176\001\004|%split@\192\176\193@\176\179\005\004\023@\144@\002\005\245\225\000\001\255\027\176\193@\176\179\005\004\028@\144@\002\005\245\225\000\001\255\028\176\179\144\005\003\250\160\176\179\005\004#@\144@\002\005\245\225\000\001\255\029@\144@\002\005\245\225\000\001\255\030@\002\005\245\225\000\001\255\031@\002\005\245\225\000\001\255 \144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004<@\160\160\176\001\004}+splitAtMost@\192\176\193@\176\179\005\0044@\144@\002\005\245\225\000\001\255\019\176\193@\176\179\005\0049@\144@\002\005\245\225\000\001\255\020\176\193\144%limit\176\179\144\005\0040@\144@\002\005\245\225\000\001\255\021\176\179\144\005\004\031\160\176\179\005\004H@\144@\002\005\245\225\000\001\255\022@\144@\002\005\245\225\000\001\255\023@\002\005\245\225\000\001\255\024@\002\005\245\225\000\001\255\025@\002\005\245\225\000\001\255\026\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004b@\160\160\176\001\004~)splitByRe@\192\176\193@\176\179\005\004Z@\144@\002\005\245\225\000\001\255\012\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\r\176\179\144\005\004B\160\176\179\144\005\003\151\160\176\179\005\004o@\144@\002\005\245\225\000\001\255\014@\144@\002\005\245\225\000\001\255\015@\144@\002\005\245\225\000\001\255\016@\002\005\245\225\000\001\255\017@\002\005\245\225\000\001\255\018\144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004\137@\160\160\176\001\004\127/splitByReAtMost@\192\176\193@\176\179\005\004\129@\144@\002\005\245\225\000\001\255\003\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\004\176\193\144%limit\176\179\144\005\004\130@\144@\002\005\245\225\000\001\255\005\176\179\144\005\004q\160\176\179\144\005\003\198\160\176\179\005\004\158@\144@\002\005\245\225\000\001\255\006@\144@\002\005\245\225\000\001\255\007@\144@\002\005\245\225\000\001\255\b@\002\005\245\225\000\001\255\t@\002\005\245\225\000\001\255\n@\002\005\245\225\000\001\255\011\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004\185@\160\160\176\001\004\128*startsWith@\192\176\193@\176\179\005\004\177@\144@\002\005\245\225\000\001\254\254\176\193@\176\179\005\004\182@\144@\002\005\245\225\000\001\254\255\176\179\144\005\003\144@\144@\002\005\245\225\000\001\255\000@\002\005\245\225\000\001\255\001@\002\005\245\225\000\001\255\002\144\224*startsWithBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*startsWith@@\160@\160@@@\005\004\210@\160\160\176\001\004\129.startsWithFrom@\192\176\193@\176\179\005\004\202@\144@\002\005\245\225\000\001\254\247\176\193@\176\179\005\004\207@\144@\002\005\245\225\000\001\254\248\176\193@\176\179\144\005\004\196@\144@\002\005\245\225\000\001\254\249\176\179\144\005\003\175@\144@\002\005\245\225\000\001\254\250@\002\005\245\225\000\001\254\251@\002\005\245\225\000\001\254\252@\002\005\245\225\000\001\254\253\144\224*startsWithCA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181*startsWith@@\160@\160@\160@@@\005\004\242@\160\160\176\001\004\130&substr@\192\176\193@\176\179\005\004\234@\144@\002\005\245\225\000\001\254\242\176\193\144$from\176\179\144\005\004\225@\144@\002\005\245\225\000\001\254\243\176\179\005\004\245@\144@\002\005\245\225\000\001\254\244@\002\005\245\225\000\001\254\245@\002\005\245\225\000\001\254\246\144\224&substrBA\t*\132\149\166\190\000\000\000\022\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181&substr@@\160@\160@@@\005\005\r@\160\160\176\001\004\131,substrAtMost@\192\176\193@\176\179\005\005\005@\144@\002\005\245\225\000\001\254\235\176\193\144$from\176\179\144\005\004\252@\144@\002\005\245\225\000\001\254\236\176\193\144&length\176\179\144\005\005\004@\144@\002\005\245\225\000\001\254\237\176\179\005\005\024@\144@\002\005\245\225\000\001\254\238@\002\005\245\225\000\001\254\239@\002\005\245\225\000\001\254\240@\002\005\245\225\000\001\254\241\144\224&substrCA\t.\132\149\166\190\000\000\000\026\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181&substr@@\160@\160@\160@@@\005\0051@\160\160\176\001\004\132)substring@\192\176\193@\176\179\005\005)@\144@\002\005\245\225\000\001\254\228\176\193\144$from\176\179\144\005\005 @\144@\002\005\245\225\000\001\254\229\176\193\144#to_\176\179\144\005\005(@\144@\002\005\245\225\000\001\254\230\176\179\005\005<@\144@\002\005\245\225\000\001\254\231@\002\005\245\225\000\001\254\232@\002\005\245\225\000\001\254\233@\002\005\245\225\000\001\254\234\144\224)substringCA\t1\132\149\166\190\000\000\000\029\000\000\000\n\000\000\000 \000\000\000\031\176\144\160\160AA\160\160A@\160\160A@@@\181)substring@@\160@\160@\160@@@\005\005U@\160\160\176\001\004\133.substringToEnd@\192\176\193@\176\179\005\005M@\144@\002\005\245\225\000\001\254\223\176\193\144$from\176\179\144\005\005D@\144@\002\005\245\225\000\001\254\224\176\179\005\005X@\144@\002\005\245\225\000\001\254\225@\002\005\245\225\000\001\254\226@\002\005\245\225\000\001\254\227\144\224)substringBA\t-\132\149\166\190\000\000\000\025\000\000\000\b\000\000\000\026\000\000\000\025\176\144\160\160AA\160\160A@@@\181)substring@@\160@\160@@@\005\005p@\160\160\176\001\004\134+toLowerCase@\192\176\193@\176\179\005\005h@\144@\002\005\245\225\000\001\254\220\176\179\005\005k@\144@\002\005\245\225\000\001\254\221@\002\005\245\225\000\001\254\222\144\224+toLowerCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toLowerCase@@\160@@@\005\005\130@\160\160\176\001\004\1351toLocaleLowerCase@\192\176\193@\176\179\005\005z@\144@\002\005\245\225\000\001\254\217\176\179\005\005}@\144@\002\005\245\225\000\001\254\218@\002\005\245\225\000\001\254\219\144\2241toLocaleLowerCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleLowerCase@@\160@@@\005\005\148@\160\160\176\001\004\136+toUpperCase@\192\176\193@\176\179\005\005\140@\144@\002\005\245\225\000\001\254\214\176\179\005\005\143@\144@\002\005\245\225\000\001\254\215@\002\005\245\225\000\001\254\216\144\224+toUpperCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toUpperCase@@\160@@@\005\005\166@\160\160\176\001\004\1371toLocaleUpperCase@\192\176\193@\176\179\005\005\158@\144@\002\005\245\225\000\001\254\211\176\179\005\005\161@\144@\002\005\245\225\000\001\254\212@\002\005\245\225\000\001\254\213\144\2241toLocaleUpperCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleUpperCase@@\160@@@\005\005\184@\160\160\176\001\004\138$trim@\192\176\193@\176\179\005\005\176@\144@\002\005\245\225\000\001\254\208\176\179\005\005\179@\144@\002\005\245\225\000\001\254\209@\002\005\245\225\000\001\254\210\144\224$trimAA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145A@\181$trim@@\160@@@\005\005\202@\160\160\176\001\004\139&anchor@\192\176\193@\176\179\005\005\194@\144@\002\005\245\225\000\001\254\203\176\193@\176\179\005\005\199@\144@\002\005\245\225\000\001\254\204\176\179\005\005\202@\144@\002\005\245\225\000\001\254\205@\002\005\245\225\000\001\254\206@\002\005\245\225\000\001\254\207\144\224&anchorBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&anchor@@\160@\160@@@\005\005\226@\160\160\176\001\004\140$link@\192\176\193@\176\179\005\005\218@\144@\002\005\245\225\000\001\254\198\176\193@\176\179\005\005\223@\144@\002\005\245\225\000\001\254\199\176\179\005\005\226@\144@\002\005\245\225\000\001\254\200@\002\005\245\225\000\001\254\201@\002\005\245\225\000\001\254\202\144\224$linkBA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181$link@@\160@\160@@@\005\005\250@\160\160\176\001\004\141/castToArrayLike@\192\176\193@\176\179\005\005\242@\144@\002\005\245\225\000\001\254\194\176\179\177\144\176@)Js_array2A*array_like\000\255\160\176\179\005\005\253@\144@\002\005\245\225\000\001\254\195@\144@\002\005\245\225\000\001\254\196@\002\005\245\225\000\001\254\197\144\224)%identityAA \160@@@\005\006\021@@\160\160*Js_string2\1440\146#\242\226\1584\145\226N-\139\129m\"o\169\160\160%Js_re\1440c\r\158s\143R\211\142\216\025\193\227\221',\168\160\160)Js_array2\1440\210T\206\242K\020R\133\13934h\179,\196r\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakmap *) "\132\149\166\190\000\000\000\154\000\000\000!\000\000\000v\000\000\000m\192*Js_weakmap\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!k\002\005\245\225\000\000\254\160\176\144\144!v\002\005\245\225\000\000\253@B@A@\160G\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakmap\1440\001(;\181(\t\025\137\"\199\191\226\b[\028F\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakset *) "\132\149\166\190\000\000\000\139\000\000\000\027\000\000\000f\000\000\000]\192*Js_weakset\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakset\1440\157\245\162m3PL\1309\223>\168\227\229\184W\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", @@ -10681,6 +10681,7 @@ val path_int64: Path.t val path_lazy_t: Path.t val path_extension_constructor: Path.t val path_floatarray: Path.t +val path_promise: Path.t val path_match_failure: Path.t val path_assert_failure : Path.t @@ -10767,6 +10768,8 @@ and ident_floatarray = ident_create "floatarray" and ident_unknown = ident_create "unknown" +and ident_promise = ident_create "promise" + type test = | For_sure_yes | For_sure_no @@ -10806,6 +10809,8 @@ and path_unkonwn = Pident ident_unknown and path_extension_constructor = Pident ident_extension_constructor and path_floatarray = Pident ident_floatarray +and path_promise = Pident ident_promise + let type_int = newgenty (Tconstr(path_int, [], ref Mnil)) and type_char = newgenty (Tconstr(path_char, [], ref Mnil)) and type_bytes = newgenty (Tconstr(path_bytes, [], ref Mnil)) @@ -10946,6 +10951,12 @@ let common_initial_env add_type add_extension empty_env = type_params = [tvar]; type_arity = 1; type_variance = [Variance.covariant]} + and decl_promise = + let tvar = newgenvar() in + {decl_abstr with + type_params = [tvar]; + type_arity = 1; + type_variance = [Variance.covariant]} in let add_extension id l = @@ -10987,7 +10998,8 @@ let common_initial_env add_type add_extension empty_env = add_type ident_int decl_abstr_imm ( add_type ident_extension_constructor decl_abstr ( add_type ident_floatarray decl_abstr ( - empty_env))))))))))))))))))))))) + add_type ident_promise decl_promise ( + empty_env)))))))))))))))))))))))) let build_initial_env add_type add_exception empty_env = let common = common_initial_env add_type add_exception empty_env in @@ -40805,6 +40817,7 @@ and type_expect ?in_function ?recarg env sexp ty_expected = let rec extractPromise t = match t.desc with | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) + | Tconstr (Pident {name = "promise"}, [t1], _) -> Some t1 | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 @@ -85850,7 +85863,7 @@ val module_data : end = struct #1 "builtin_cmj_datasets.ml" -(* 36afc4d4582ed9cc168039f5d3f28592 *) +(* a32a8631aa0bfcd37a4d742e9ad8aada *) let module_names : string array = Obj.magic ( "Js" (* 23 *), "Arg" (* 217 *), @@ -86061,7 +86074,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *)"\132\149\166\190\000\000\000\022\000\000\000\007\000\000\000\021\000\000\000\020\160\144\176*fromString\144\160\160A@@@A", (* Belt_Range *)"\132\149\166\190\000\000\000\160\000\000\0004\000\000\000\166\000\000\000\156\160\b\000\000(\000\176$some\144\160\160C@@@\176%every\144\160\160C@@@\176%someU\144\160\160C@@@\176&everyU\144\160\160C@@@\176&someBy\144\160\160D@@@\176'everyBy\144\160\160D@@@\176'forEach\144\160\160C@@@\176'someByU\144\160\160D@@@\176(everyByU\144\160\160D@@@\176(forEachU\144\160\160C@@@A", (* Js_console *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", -(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\018\001\011\018\192\004\002\000R\001\011T\001\011l@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\n\186\001\n\186\192\004%\000O\001\n\248\001\011\016@@\004\003\208B@@@@A", +(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\241\001\011\241\192\004\002\000R\001\012?\001\012]@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\011\135\001\011\135\192\004%\000O\001\011\209\001\011\239@@\004\003\208B@@@@A", (* Js_string2 *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakmap *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakset *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index 5850147b7b..8cce202957 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -154244,6 +154244,7 @@ val path_int64: Path.t val path_lazy_t: Path.t val path_extension_constructor: Path.t val path_floatarray: Path.t +val path_promise: Path.t val path_match_failure: Path.t val path_assert_failure : Path.t @@ -154330,6 +154331,8 @@ and ident_floatarray = ident_create "floatarray" and ident_unknown = ident_create "unknown" +and ident_promise = ident_create "promise" + type test = | For_sure_yes | For_sure_no @@ -154369,6 +154372,8 @@ and path_unkonwn = Pident ident_unknown and path_extension_constructor = Pident ident_extension_constructor and path_floatarray = Pident ident_floatarray +and path_promise = Pident ident_promise + let type_int = newgenty (Tconstr(path_int, [], ref Mnil)) and type_char = newgenty (Tconstr(path_char, [], ref Mnil)) and type_bytes = newgenty (Tconstr(path_bytes, [], ref Mnil)) @@ -154509,6 +154514,12 @@ let common_initial_env add_type add_extension empty_env = type_params = [tvar]; type_arity = 1; type_variance = [Variance.covariant]} + and decl_promise = + let tvar = newgenvar() in + {decl_abstr with + type_params = [tvar]; + type_arity = 1; + type_variance = [Variance.covariant]} in let add_extension id l = @@ -154550,7 +154561,8 @@ let common_initial_env add_type add_extension empty_env = add_type ident_int decl_abstr_imm ( add_type ident_extension_constructor decl_abstr ( add_type ident_floatarray decl_abstr ( - empty_env))))))))))))))))))))))) + add_type ident_promise decl_promise ( + empty_env)))))))))))))))))))))))) let build_initial_env add_type add_exception empty_env = let common = common_initial_env add_type add_exception empty_env in @@ -180879,7 +180891,7 @@ val module_data : end = struct #1 "builtin_cmi_datasets.ml" -(* 481298ddf6a6c65d9542177270f4c5ed *) +(* 8d68a02b2c67ceea3dd9487a69b39b92 *) let module_names : string array = Obj.magic ( "Js" (* 6126 *), "Arg" (* 3634 *), @@ -180955,7 +180967,7 @@ let module_names : string array = Obj.magic ( "Belt_Float" (* 903 *), "Belt_Range" (* 1850 *), "Js_console" (* 3442 *), -"Js_promise" (* 2756 *), +"Js_promise" (* 2830 *), "Js_string2" (* 9269 *), "Js_weakmap" (* 174 *), "Js_weakset" (* 159 *), @@ -181081,7 +181093,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *) "\132\149\166\190\000\000\003s\000\000\000\206\000\000\002\213\000\000\002\186\192*Belt_Float\160\160\176\001\003\242%toInt@\192\176\193@\176\179\144\176D%float@@\144@\002\005\245\225\000\000\252\176\179\144\176A#int@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224+%intoffloatAA \160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\003\243'fromInt@\192\176\193@\176\179\144\004\021@\144@\002\005\245\225\000\000\249\176\179\144\004\031@\144@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224)%identityAA\004\023\160@@@\004\022@\160\160\176\001\003\244*fromString@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\245\176\179\144\176J&option@\160\176\179\144\004:@\144@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\004.@\160\160\176\001\003\245(toString@\192\176\193@\176\179\144\004F@\144@\002\005\245\225\000\000\242\176\179\144\004\028@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004B@\160\160\176\001\003\246!+@\192\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\237\176\193@\176\179\144\004`@\144@\002\005\245\225\000\000\238\176\179\144\004d@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241\144\224)%addfloatBA\004\\\160@\160@@@\004\\@\160\160\176\001\003\247!-@\192\176\193@\176\179\144\004t@\144@\002\005\245\225\000\000\232\176\193@\176\179\144\004z@\144@\002\005\245\225\000\000\233\176\179\144\004~@\144@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224)%subfloatBA\004v\160@\160@@@\004v@\160\160\176\001\003\248!*@\192\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\227\176\193@\176\179\144\004\148@\144@\002\005\245\225\000\000\228\176\179\144\004\152@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\002\005\245\225\000\000\231\144\224)%mulfloatBA\004\144\160@\160@@@\004\144@\160\160\176\001\003\249!/@\192\176\193@\176\179\144\004\168@\144@\002\005\245\225\000\000\222\176\193@\176\179\144\004\174@\144@\002\005\245\225\000\000\223\176\179\144\004\178@\144@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224)%divfloatBA\004\170\160@\160@@@\004\170@@\160\160*Belt_Float\1440\220\t\225\167\143TL\234\185\023\004\026t\228\210\161\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Belt_Range *) "\132\149\166\190\000\000\007&\000\000\001\179\000\000\005\214\000\000\005\182\192*Belt_Range\160\160\176\001\004b(forEachU@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\245\176\193@\176\179\144\004\b@\144@\002\005\245\225\000\000\246\176\193@\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\179\144\004\026@\144@\002\005\245\225\000\000\247\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\144@\002\005\245\225\000\000\250\176\179\144\004\007@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004c'forEach@\192\176\193@\176\179\144\0043@\144@\002\005\245\225\000\000\236\176\193@\176\179\144\0049@\144@\002\005\245\225\000\000\237\176\193@\176\193@\176\179\144\004A@\144@\002\005\245\225\000\000\238\176\179\144\004'@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\176\179\144\004+@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\004$@\160\160\176\001\004d&everyU@\192\176\193@\176\179\144\004T@\144@\002\005\245\225\000\000\226\176\193@\176\179\144\004Z@\144@\002\005\245\225\000\000\227\176\193@\176\179\177\177\144\176@\004RA\004Q@&arity1\000\255\160\176\193@\176\179\144\004j@\144@\002\005\245\225\000\000\228\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231\176\179\144\004\007@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233@\002\005\245\225\000\000\234@\002\005\245\225\000\000\235@\004P@\160\160\176\001\004e%every@\192\176\193@\176\179\144\004\128@\144@\002\005\245\225\000\000\217\176\193@\176\179\144\004\134@\144@\002\005\245\225\000\000\218\176\193@\176\193@\176\179\144\004\142@\144@\002\005\245\225\000\000\219\176\179\144\004$@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\221\176\179\144\004(@\144@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223@\002\005\245\225\000\000\224@\002\005\245\225\000\000\225@\004q@\160\160\176\001\004f(everyByU@\192\176\193@\176\179\144\004\161@\144@\002\005\245\225\000\000\205\176\193@\176\179\144\004\167@\144@\002\005\245\225\000\000\206\176\193\144$step\176\179\144\004\175@\144@\002\005\245\225\000\000\207\176\193@\176\179\177\177\144\176@\004\167A\004\166@&arity1\000\255\160\176\193@\176\179\144\004\191@\144@\002\005\245\225\000\000\208\176\179\144\004U@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\144@\002\005\245\225\000\000\211\176\179\144\004Z@\144@\002\005\245\225\000\000\212@\002\005\245\225\000\000\213@\002\005\245\225\000\000\214@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\004\163@\160\160\176\001\004g'everyBy@\192\176\193@\176\179\144\004\211@\144@\002\005\245\225\000\000\194\176\193@\176\179\144\004\217@\144@\002\005\245\225\000\000\195\176\193\144$step\176\179\144\004\225@\144@\002\005\245\225\000\000\196\176\193@\176\193@\176\179\144\004\233@\144@\002\005\245\225\000\000\197\176\179\144\004\127@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\199\176\179\144\004\131@\144@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202@\002\005\245\225\000\000\203@\002\005\245\225\000\000\204@\004\204@\160\160\176\001\004h%someU@\192\176\193@\176\179\144\004\252@\144@\002\005\245\225\000\000\184\176\193@\176\179\144\005\001\002@\144@\002\005\245\225\000\000\185\176\193@\176\179\177\177\144\176@\004\250A\004\249@&arity1\000\255\160\176\193@\176\179\144\005\001\018@\144@\002\005\245\225\000\000\186\176\179\144\004\168@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\144@\002\005\245\225\000\000\189\176\179\144\004\173@\144@\002\005\245\225\000\000\190@\002\005\245\225\000\000\191@\002\005\245\225\000\000\192@\002\005\245\225\000\000\193@\004\246@\160\160\176\001\004i$some@\192\176\193@\176\179\144\005\001&@\144@\002\005\245\225\000\000\175\176\193@\176\179\144\005\001,@\144@\002\005\245\225\000\000\176\176\193@\176\193@\176\179\144\005\0014@\144@\002\005\245\225\000\000\177\176\179\144\004\202@\144@\002\005\245\225\000\000\178@\002\005\245\225\000\000\179\176\179\144\004\206@\144@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\005\001\023@\160\160\176\001\004j'someByU@\192\176\193@\176\179\144\005\001G@\144@\002\005\245\225\000\000\163\176\193@\176\179\144\005\001M@\144@\002\005\245\225\000\000\164\176\193\144$step\176\179\144\005\001U@\144@\002\005\245\225\000\000\165\176\193@\176\179\177\177\144\176@\005\001MA\005\001L@&arity1\000\255\160\176\193@\176\179\144\005\001e@\144@\002\005\245\225\000\000\166\176\179\144\004\251@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\168@\144@\002\005\245\225\000\000\169\176\179\144\005\001\000@\144@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174@\005\001I@\160\160\176\001\004k&someBy@\192\176\193@\176\179\144\005\001y@\144@\002\005\245\225\000\000\152\176\193@\176\179\144\005\001\127@\144@\002\005\245\225\000\000\153\176\193\144$step\176\179\144\005\001\135@\144@\002\005\245\225\000\000\154\176\193@\176\193@\176\179\144\005\001\143@\144@\002\005\245\225\000\000\155\176\179\144\005\001%@\144@\002\005\245\225\000\000\156@\002\005\245\225\000\000\157\176\179\144\005\001)@\144@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\001r@@\160\160*Belt_Range\1440\192@X\13491\017\252j\198\193OH\002\2472\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_console *) "\132\149\166\190\000\000\r^\000\000\002\157\000\000\tu\000\000\b\204\192*Js_console\160\160\176\001\004\001#log@\192\176\193@\176\144\144!a\002\005\245\225\000\000\252\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\253@\002\005\245\225\000\000\254\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@@\160'console@\160@@@\176\192&_none_A@\000\255\004\002A@\160\160\176\001\004\002$log2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\247\176\193@\176\144\144!b\002\005\245\225\000\000\248\176\179\144\004\031@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250@\002\005\245\225\000\000\251\144\224#logBA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145BE\196#log@@\160'console@\160@\160@@@\004\030@\160\160\176\001\004\003$log3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\240\176\193@\176\144\144!b\002\005\245\225\000\000\241\176\193@\176\144\144!c\002\005\245\225\000\000\242\176\179\144\004@@\144@\002\005\245\225\000\000\243@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246\144\224#logCA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145CE\196#log@@\160'console@\160@\160@\160@@@\004@@\160\160\176\001\004\004$log4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\231\176\193@\176\144\144!b\002\005\245\225\000\000\232\176\193@\176\144\144!c\002\005\245\225\000\000\233\176\193@\176\144\144!d\002\005\245\225\000\000\234\176\179\144\004h@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224#logDA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145DE\196#log@@\160'console@\160@\160@\160@\160@@@\004i@\160\160\176\001\004\005'logMany@\192\176\193@\176\179\144\176H%array@\160\176\144\144!a\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\134@\144@\002\005\245\225\000\000\229@\002\005\245\225\000\000\230\144\224#logAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145AE\196#log@A\160'console@\160@@@\004\132@\160\160\176\001\004\006$info@\192\176\193@\176\144\144!a\002\005\245\225\000\000\224\176\179\144\004\154@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@@\160'console@\160@@@\004\152@\160\160\176\001\004\007%info2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\219\176\193@\176\144\144!b\002\005\245\225\000\000\220\176\179\144\004\180@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224$infoBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$info@@\160'console@\160@\160@@@\004\179@\160\160\176\001\004\b%info3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\212\176\193@\176\144\144!b\002\005\245\225\000\000\213\176\193@\176\144\144!c\002\005\245\225\000\000\214\176\179\144\004\213@\144@\002\005\245\225\000\000\215@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224$infoCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$info@@\160'console@\160@\160@\160@@@\004\213@\160\160\176\001\004\t%info4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\203\176\193@\176\144\144!b\002\005\245\225\000\000\204\176\193@\176\144\144!c\002\005\245\225\000\000\205\176\193@\176\144\144!d\002\005\245\225\000\000\206\176\179\144\004\253@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211\144\224$infoDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$info@@\160'console@\160@\160@\160@\160@@@\004\254@\160\160\176\001\004\n(infoMany@\192\176\193@\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\199@\144@\002\005\245\225\000\000\200\176\179\144\005\001\025@\144@\002\005\245\225\000\000\201@\002\005\245\225\000\000\202\144\224$infoAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$info@A\160'console@\160@@@\005\001\023@\160\160\176\001\004\011$warn@\192\176\193@\176\144\144!a\002\005\245\225\000\000\196\176\179\144\005\001-@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\198\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@@\160'console@\160@@@\005\001+@\160\160\176\001\004\012%warn2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\191\176\193@\176\144\144!b\002\005\245\225\000\000\192\176\179\144\005\001G@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195\144\224$warnBA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196$warn@@\160'console@\160@\160@@@\005\001F@\160\160\176\001\004\r%warn3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\184\176\193@\176\144\144!b\002\005\245\225\000\000\185\176\193@\176\144\144!c\002\005\245\225\000\000\186\176\179\144\005\001h@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189@\002\005\245\225\000\000\190\144\224$warnCA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196$warn@@\160'console@\160@\160@\160@@@\005\001h@\160\160\176\001\004\014%warn4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\175\176\193@\176\144\144!b\002\005\245\225\000\000\176\176\193@\176\144\144!c\002\005\245\225\000\000\177\176\193@\176\144\144!d\002\005\245\225\000\000\178\176\179\144\005\001\144@\144@\002\005\245\225\000\000\179@\002\005\245\225\000\000\180@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224$warnDA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196$warn@@\160'console@\160@\160@\160@\160@@@\005\001\145@\160\160\176\001\004\015(warnMany@\192\176\193@\176\179\144\005\001(\160\176\144\144!a\002\005\245\225\000\000\171@\144@\002\005\245\225\000\000\172\176\179\144\005\001\172@\144@\002\005\245\225\000\000\173@\002\005\245\225\000\000\174\144\224$warnAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$warn@A\160'console@\160@@@\005\001\170@\160\160\176\001\004\016%error@\192\176\193@\176\144\144!a\002\005\245\225\000\000\168\176\179\144\005\001\192@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@@\160'console@\160@@@\005\001\190@\160\160\176\001\004\017&error2@\192\176\193@\176\144\144!a\002\005\245\225\000\000\163\176\193@\176\144\144!b\002\005\245\225\000\000\164\176\179\144\005\001\218@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224%errorBA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145BE\196%error@@\160'console@\160@\160@@@\005\001\217@\160\160\176\001\004\018&error3@\192\176\193@\176\144\144!a\002\005\245\225\000\000\156\176\193@\176\144\144!b\002\005\245\225\000\000\157\176\193@\176\144\144!c\002\005\245\225\000\000\158\176\179\144\005\001\251@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162\144\224%errorCA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145CE\196%error@@\160'console@\160@\160@\160@@@\005\001\251@\160\160\176\001\004\019&error4@\192\176\193@\176\144\144!a\002\005\245\225\000\000\147\176\193@\176\144\144!b\002\005\245\225\000\000\148\176\193@\176\144\144!c\002\005\245\225\000\000\149\176\193@\176\144\144!d\002\005\245\225\000\000\150\176\179\144\005\002#@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\144\224%errorDA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145DE\196%error@@\160'console@\160@\160@\160@\160@@@\005\002$@\160\160\176\001\004\020)errorMany@\192\176\193@\176\179\144\005\001\187\160\176\144\144!a\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144\176\179\144\005\002?@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224%errorAA\t+\132\149\166\190\000\000\000\023\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196%error@A\160'console@\160@@@\005\002=@\160\160\176\001\004\021%trace@\192\176\193@\176\179\144\005\002O@\144@\002\005\245\225\000\000\140\176\179\144\005\002S@\144@\002\005\245\225\000\000\141@\002\005\245\225\000\000\142\144\224%traceAA\t/\132\149\166\190\000\000\000\027\000\000\000\b\000\000\000\026\000\000\000\024\176\144\160\160@A@E\196%trace@@\160'console@\160@@@\005\002Q@\160\160\176\001\004\022)timeStart@\192\176\193@\176\179\144\176M&string@@\144@\002\005\245\225\000\000\137\176\179\144\005\002i@\144@\002\005\245\225\000\000\138@\002\005\245\225\000\000\139\144\224$timeAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196$time@@\160'console@\160@@@\005\002g@\160\160\176\001\004\023'timeEnd@\192\176\193@\176\179\144\004\022@\144@\002\005\245\225\000\000\134\176\179\144\005\002}@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136\144\224'timeEndAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145AE\196'timeEnd@@\160'console@\160@@@\005\002{@@\160\160*Js_console\1440L`\184fJ:\215\143\159\251<\002\0161\210\129\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", -(* Js_promise *) "\132\149\166\190\000\000\n\176\000\000\002d\000\000\b-\000\000\007\210\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160A@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\241@\002\005\245\225\000\000\242@\144@\002\005\245\225\000\000\243\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\244\176\179\144\004\027@\144@\002\005\245\225\000\000\245@\002\005\245\225\000\000\246@\144@\002\005\245\225\000\000\247\176\179\144\004 @\144@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\176\179\144\004T\160\004,@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\238\176\179\004\021\160\004\007@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004f@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0044@\144@\002\005\245\225\000\000\234\176\179\004)\160\176\144\144!a\002\005\245\225\000\000\235@\144@\002\005\245\225\000\000\236@\002\005\245\225\000\000\237\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004~@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\004C\160\176\144\144!a\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\228@\144@\002\005\245\225\000\000\229\176\179\004L\160\176\179\144\004\018\160\004\r@\144@\002\005\245\225\000\000\231@\144@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\162@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\004d\160\176\144\144\"a0\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\221\160\176\179\004m\160\176\144\144\"a1\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220@\002\005\245\225\000\000\222\176\179\004u\160\176\146\160\004\020\160\004\012@\002\005\245\225\000\000\225@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\202@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\004\140\160\176\144\144\"a0\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\212\160\176\179\004\149\160\176\144\144\"a1\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\004\158\160\176\144\144\"a2\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\213\176\179\004\166\160\176\146\160\004\029\160\004\021\160\004\r@\002\005\245\225\000\000\217@\144@\002\005\245\225\000\000\218@\002\005\245\225\000\000\219\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\252@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\004\190\160\176\144\144\"a0\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\201\160\176\179\004\199\160\176\144\144\"a1\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\004\208\160\176\144\144\"a2\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\004\217\160\176\144\144\"a3\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198@\002\005\245\225\000\000\202\176\179\004\225\160\176\146\160\004&\160\004\030\160\004\022\160\004\014@\002\005\245\225\000\000\207@\144@\002\005\245\225\000\000\208@\002\005\245\225\000\000\209\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\0018@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\004\250\160\176\144\144\"a0\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\188\160\176\179\005\001\003\160\176\144\144\"a1\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\005\001\012\160\176\144\144\"a2\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\005\001\021\160\176\144\144\"a3\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\005\001\030\160\176\144\144\"a4\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184@\002\005\245\225\000\000\189\176\179\005\001&\160\176\146\160\004/\160\004'\160\004\031\160\004\023\160\004\015@\002\005\245\225\000\000\195@\144@\002\005\245\225\000\000\196@\002\005\245\225\000\000\197\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001~@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\005\001@\160\176\144\144\"a0\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\173\160\176\179\005\001I\160\176\144\144\"a1\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\005\001R\160\176\144\144\"a2\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\005\001[\160\176\144\144\"a3\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\005\001d\160\176\144\144\"a4\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\005\001m\160\176\144\144\"a5\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168@\002\005\245\225\000\000\174\176\179\005\001u\160\176\146\160\0048\160\0040\160\004(\160\004 \160\004\024\160\004\016@\002\005\245\225\000\000\181@\144@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\206@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001P\160\176\179\005\001\145\160\176\144\144!a\002\005\245\225\000\000\165@\144@\002\005\245\225\000\000\163@\144@\002\005\245\225\000\000\164\176\179\005\001\154\160\004\t@\144@\002\005\245\225\000\000\166@\002\005\245\225\000\000\167\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\157\176\179\005\001\174\160\176\004\005\002\005\245\225\000\000\159@\144@\002\005\245\225\000\000\155@\002\005\245\225\000\000\156\176\193@\176\179\005\001\181\160\004\012@\144@\002\005\245\225\000\000\158\176\179\005\001\185\160\004\011@\144@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\002\005\245\225\000\000\162@\005\002\005@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002\011@\144@\002\005\245\225\000\000\147\176\179\005\001\202\160\176\004!\002\005\245\225\000\000\151@\144@\002\005\245\225\000\000\148@\002\005\245\225\000\000\149\176\193@\176\179\005\001\209\160\004\007@\144@\002\005\245\225\000\000\150\176\179\005\001\213\160\004\011@\144@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\002\005\245\225\000\000\154@\005\002!@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\144\176\179\005\001\228\160\004\007@\144@\002\005\245\225\000\000\145@\002\005\245\225\000\000\146\144\224)%identityAA \160@@@\005\0025@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\005\001\244\160\176\144\144!a\002\005\245\225\000\000\142@\144@\002\005\245\225\000\000\141\004\005@\002\005\245\225\000\000\143\144\224&?awaitAA\004\020\160@@@\005\002H@@\160\160*Js_promise\1440'i\255\135\213\144\168\240\001pr\b{\245\206\200\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", +(* Js_promise *) "\132\149\166\190\000\000\n\250\000\000\002\147\000\000\b\147\000\000\b7\192*Js_promise\160\177\176\001\004p!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\253@A@A\144\176\179\144\176Q'promise@\160\004\011@\144@\002\005\245\225\000\000\254\160Y@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\177\176\001\004q%error@\b\000\000,\000@@@A@@@\004\t@@\004\006A\160\160\176\001\004r$make@\192\176\193@\176\193\144'resolve\176\179\177\177\144\176@\"JsA\"Fn@&arity1\000\255\160\176\193@\176\144\144!a\002\005\245\225\000\000\250\176\179\144\176F$unit@@\144@\002\005\245\225\000\000\240@\002\005\245\225\000\000\241@\144@\002\005\245\225\000\000\242\176\193\144&reject\176\179\177\177\144\176@\004\027A\004\026@&arity1\000\255\160\176\193@\176\179\144\176G#exn@@\144@\002\005\245\225\000\000\243\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\002\005\245\225\000\000\245@\144@\002\005\245\225\000\000\246\176\179\144\004 @\144@\002\005\245\225\000\000\247@\002\005\245\225\000\000\248@\002\005\245\225\000\000\249\176\179\144\004P\160\004,@\144@\002\005\245\225\000\000\251@\002\005\245\225\000\000\252\144\224'PromiseAA\t)\132\149\166\190\000\000\000\021\000\000\000\007\000\000\000\022\000\000\000\021\176\144\160\160\148BA@@\198'Promise@@@\160@@@\004R@\160\160\176\001\004s'resolve@\192\176\193@\176\144\144!a\002\005\245\225\000\000\237\176\179\144\004e\160\004\b@\144@\002\005\245\225\000\000\238@\002\005\245\225\000\000\239\144\224'resolveAA\t-\132\149\166\190\000\000\000\025\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196'resolve@@\160'Promise@\160@@@\004g@\160\160\176\001\004t&reject@\192\176\193@\176\179\144\0045@\144@\002\005\245\225\000\000\233\176\179\144\004z\160\176\144\144!a\002\005\245\225\000\000\234@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&rejectAA\t,\132\149\166\190\000\000\000\024\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196&reject@@\160'Promise@\160@@@\004\128@\160\160\176\001\004u#all@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\149\160\176\144\144!a\002\005\245\225\000\000\229@\144@\002\005\245\225\000\000\227@\144@\002\005\245\225\000\000\228\176\179\144\004\159\160\176\179\144\004\020\160\004\014@\144@\002\005\245\225\000\000\230@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\166@\160\160\176\001\004v$all2@\192\176\193@\176\146\160\176\179\144\004\184\160\176\144\144\"a0\002\005\245\225\000\000\223@\144@\002\005\245\225\000\000\220\160\176\179\144\004\194\160\176\144\144\"a1\002\005\245\225\000\000\222@\144@\002\005\245\225\000\000\219@\002\005\245\225\000\000\221\176\179\144\004\203\160\176\146\160\004\022\160\004\r@\002\005\245\225\000\000\224@\144@\002\005\245\225\000\000\225@\002\005\245\225\000\000\226\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\004\209@\160\160\176\001\004w$all3@\192\176\193@\176\146\160\176\179\144\004\227\160\176\144\144\"a0\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\211\160\176\179\144\004\237\160\176\144\144\"a1\002\005\245\225\000\000\214@\144@\002\005\245\225\000\000\210\160\176\179\144\004\247\160\176\144\144\"a2\002\005\245\225\000\000\213@\144@\002\005\245\225\000\000\209@\002\005\245\225\000\000\212\176\179\144\005\001\000\160\176\146\160\004 \160\004\023\160\004\014@\002\005\245\225\000\000\216@\144@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\007@\160\160\176\001\004x$all4@\192\176\193@\176\146\160\176\179\144\005\001\025\160\176\144\144\"a0\002\005\245\225\000\000\205@\144@\002\005\245\225\000\000\200\160\176\179\144\005\001#\160\176\144\144\"a1\002\005\245\225\000\000\204@\144@\002\005\245\225\000\000\199\160\176\179\144\005\001-\160\176\144\144\"a2\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\198\160\176\179\144\005\0017\160\176\144\144\"a3\002\005\245\225\000\000\202@\144@\002\005\245\225\000\000\197@\002\005\245\225\000\000\201\176\179\144\005\001@\160\176\146\160\004*\160\004!\160\004\024\160\004\015@\002\005\245\225\000\000\206@\144@\002\005\245\225\000\000\207@\002\005\245\225\000\000\208\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001H@\160\160\176\001\004y$all5@\192\176\193@\176\146\160\176\179\144\005\001Z\160\176\144\144\"a0\002\005\245\225\000\000\193@\144@\002\005\245\225\000\000\187\160\176\179\144\005\001d\160\176\144\144\"a1\002\005\245\225\000\000\192@\144@\002\005\245\225\000\000\186\160\176\179\144\005\001n\160\176\144\144\"a2\002\005\245\225\000\000\191@\144@\002\005\245\225\000\000\185\160\176\179\144\005\001x\160\176\144\144\"a3\002\005\245\225\000\000\190@\144@\002\005\245\225\000\000\184\160\176\179\144\005\001\130\160\176\144\144\"a4\002\005\245\225\000\000\189@\144@\002\005\245\225\000\000\183@\002\005\245\225\000\000\188\176\179\144\005\001\139\160\176\146\160\0044\160\004+\160\004\"\160\004\025\160\004\016@\002\005\245\225\000\000\194@\144@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\148@\160\160\176\001\004z$all6@\192\176\193@\176\146\160\176\179\144\005\001\166\160\176\144\144\"a0\002\005\245\225\000\000\179@\144@\002\005\245\225\000\000\172\160\176\179\144\005\001\176\160\176\144\144\"a1\002\005\245\225\000\000\178@\144@\002\005\245\225\000\000\171\160\176\179\144\005\001\186\160\176\144\144\"a2\002\005\245\225\000\000\177@\144@\002\005\245\225\000\000\170\160\176\179\144\005\001\196\160\176\144\144\"a3\002\005\245\225\000\000\176@\144@\002\005\245\225\000\000\169\160\176\179\144\005\001\206\160\176\144\144\"a4\002\005\245\225\000\000\175@\144@\002\005\245\225\000\000\168\160\176\179\144\005\001\216\160\176\144\144\"a5\002\005\245\225\000\000\174@\144@\002\005\245\225\000\000\167@\002\005\245\225\000\000\173\176\179\144\005\001\225\160\176\146\160\004>\160\0045\160\004,\160\004#\160\004\026\160\004\017@\002\005\245\225\000\000\180@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182\144\224#allAA\t)\132\149\166\190\000\000\000\021\000\000\000\006\000\000\000\019\000\000\000\018\176\145A@\196#all@@\160'Promise@\160@@@\005\001\235@\160\160\176\001\004{$race@\192\176\193@\176\179\144\005\001k\160\176\179\144\005\001\254\160\176\144\144!a\002\005\245\225\000\000\164@\144@\002\005\245\225\000\000\162@\144@\002\005\245\225\000\000\163\176\179\144\005\002\b\160\004\n@\144@\002\005\245\225\000\000\165@\002\005\245\225\000\000\166\144\224$raceAA\t*\132\149\166\190\000\000\000\022\000\000\000\006\000\000\000\020\000\000\000\018\176\145A@\196$race@@\160'Promise@\160@@@\005\002\n@\160\160\176\001\004|%then_@\192\176\193@\176\193@\176\144@\002\005\245\225\000\000\156\176\179\144\005\002\029\160\176\004\006\002\005\245\225\000\000\158@\144@\002\005\245\225\000\000\154@\002\005\245\225\000\000\155\176\193@\176\179\144\005\002%\160\004\014@\144@\002\005\245\225\000\000\157\176\179\144\005\002*\160\004\r@\144@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160@\002\005\245\225\000\000\161@\005\002'@\160\160\176\001\004}%catch@\192\176\193@\176\193@\176\179\144\005\002-@\144@\002\005\245\225\000\000\146\176\179\144\005\002<\160\176\004%\002\005\245\225\000\000\150@\144@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\176\193@\176\179\144\005\002D\160\004\b@\144@\002\005\245\225\000\000\149\176\179\144\005\002I\160\004\r@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153@\005\002F@\160\160\176\001\004~,unsafe_async@\192\176\193@\176\144\144!a\002\005\245\225\000\000\143\176\179\144\005\002Y\160\004\b@\144@\002\005\245\225\000\000\144@\002\005\245\225\000\000\145\144\224)%identityAA \160@@@\005\002[@\160\160\176\001\004\127,unsafe_await@\192\176\193@\176\179\144\005\002j\160\176\144\144!a\002\005\245\225\000\000\141@\144@\002\005\245\225\000\000\140\004\005@\002\005\245\225\000\000\142\144\224&?awaitAA\004\021\160@@@\005\002o@@\160\160*Js_promise\1440\0141\140\179\b+\200\207\131\168\131u\021\178\185\250\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_string2 *) "\132\149\166\190\000\000$!\000\000\006<\000\000\024\016\000\000\022g\192*Js_string2\160\177\176\001\004Y!t@\b\000\000,\000@@@A\144\176\179\144\176M&string@@\144@\002\005\245\225\000\000\254@@\176\192&_none_A@\000\255\004\002A@@\160@@A\160\160\176\001\004Z$make@\192\176\193@\176\144\144!a\002\005\245\225\000\000\251\176\179\144\004\028@\144@\002\005\245\225\000\000\252@\002\005\245\225\000\000\253\144\224&StringAA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\196&String@@@\160@@@\004\024@\160\160\176\001\004[,fromCharCode@\192\176\193@\176\179\144\176A#int@@\144@\002\005\245\225\000\000\248\176\179\004\022@\144@\002\005\245\225\000\000\249@\002\005\245\225\000\000\250\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@@@\160@@@\004-@\160\160\176\001\004\\0fromCharCodeMany@\192\176\193@\176\179\144\176H%array@\160\176\179\144\004\027@\144@\002\005\245\225\000\000\244@\144@\002\005\245\225\000\000\245\176\179\0040@\144@\002\005\245\225\000\000\246@\002\005\245\225\000\000\247\144\2243String.fromCharCodeAA\t0\132\149\166\190\000\000\000\028\000\000\000\004\000\000\000\017\000\000\000\015\176\145A@\1963String.fromCharCode@A@\160@@@\004G@\160\160\176\001\004]-fromCodePoint@\192\176\193@\176\179\144\004/@\144@\002\005\245\225\000\000\241\176\179\004C@\144@\002\005\245\225\000\000\242@\002\005\245\225\000\000\243\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@@@\160@@@\004Z@\160\160\176\001\004^1fromCodePointMany@\192\176\193@\176\179\144\004-\160\176\179\144\004F@\144@\002\005\245\225\000\000\237@\144@\002\005\245\225\000\000\238\176\179\004[@\144@\002\005\245\225\000\000\239@\002\005\245\225\000\000\240\144\2244String.fromCodePointAA\t1\132\149\166\190\000\000\000\029\000\000\000\004\000\000\000\018\000\000\000\015\176\145A@\1964String.fromCodePoint@A@\160@@@\004r@\160\160\176\001\004_&length@\192\176\193@\176\179\004j@\144@\002\005\245\225\000\000\234\176\179\144\004]@\144@\002\005\245\225\000\000\235@\002\005\245\225\000\000\236\144\224&lengthAA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\012\000\000\000\011\176\145A@\168&length@\160@@@\004\133@\160\160\176\001\004`#get@\192\176\193@\176\179\004}@\144@\002\005\245\225\000\000\229\176\193@\176\179\144\004r@\144@\002\005\245\225\000\000\230\176\179\004\134@\144@\002\005\245\225\000\000\231@\002\005\245\225\000\000\232@\002\005\245\225\000\000\233\144\224 BA:\132\149\166\190\000\000\000\006\000\000\000\003\000\000\000\b\000\000\000\b\176\145B@\153@\160@\160@@@\004\158@\160\160\176\001\004a&charAt@\192\176\193@\176\179\004\150@\144@\002\005\245\225\000\000\224\176\193@\176\179\144\004\139@\144@\002\005\245\225\000\000\225\176\179\004\159@\144@\002\005\245\225\000\000\226@\002\005\245\225\000\000\227@\002\005\245\225\000\000\228\144\224&charAtBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&charAt@@\160@\160@@@\004\183@\160\160\176\001\004b*charCodeAt@\192\176\193@\176\179\004\175@\144@\002\005\245\225\000\000\219\176\193@\176\179\144\004\164@\144@\002\005\245\225\000\000\220\176\179\144\176D%float@@\144@\002\005\245\225\000\000\221@\002\005\245\225\000\000\222@\002\005\245\225\000\000\223\144\224*charCodeAtBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*charCodeAt@@\160@\160@@@\004\211@\160\160\176\001\004c+codePointAt@\192\176\193@\176\179\004\203@\144@\002\005\245\225\000\000\213\176\193@\176\179\144\004\192@\144@\002\005\245\225\000\000\214\176\179\144\176J&option@\160\176\179\144\004\202@\144@\002\005\245\225\000\000\215@\144@\002\005\245\225\000\000\216@\002\005\245\225\000\000\217@\002\005\245\225\000\000\218\144\224+codePointAtBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+codePointAt@@\160@\160@@@\004\244@\160\160\176\001\004d&concat@\192\176\193@\176\179\004\236@\144@\002\005\245\225\000\000\208\176\193@\176\179\004\241@\144@\002\005\245\225\000\000\209\176\179\004\244@\144@\002\005\245\225\000\000\210@\002\005\245\225\000\000\211@\002\005\245\225\000\000\212\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concat@@\160@\160@@@\005\001\012@\160\160\176\001\004e*concatMany@\192\176\193@\176\179\005\001\004@\144@\002\005\245\225\000\000\202\176\193@\176\179\144\004\228\160\176\179\005\001\r@\144@\002\005\245\225\000\000\203@\144@\002\005\245\225\000\000\204\176\179\005\001\017@\144@\002\005\245\225\000\000\205@\002\005\245\225\000\000\206@\002\005\245\225\000\000\207\144\224&concatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&concatA@\160@\160@@@\005\001)@\160\160\176\001\004f(endsWith@\192\176\193@\176\179\005\001!@\144@\002\005\245\225\000\000\197\176\193@\176\179\005\001&@\144@\002\005\245\225\000\000\198\176\179\144\176E$bool@@\144@\002\005\245\225\000\000\199@\002\005\245\225\000\000\200@\002\005\245\225\000\000\201\144\224(endsWithBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(endsWith@@\160@\160@@@\005\001D@\160\160\176\001\004g,endsWithFrom@\192\176\193@\176\179\005\001<@\144@\002\005\245\225\000\000\190\176\193@\176\179\005\001A@\144@\002\005\245\225\000\000\191\176\193@\176\179\144\005\0016@\144@\002\005\245\225\000\000\192\176\179\144\004!@\144@\002\005\245\225\000\000\193@\002\005\245\225\000\000\194@\002\005\245\225\000\000\195@\002\005\245\225\000\000\196\144\224(endsWithCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(endsWith@@\160@\160@\160@@@\005\001d@\160\160\176\001\004h(includes@\192\176\193@\176\179\005\001\\@\144@\002\005\245\225\000\000\185\176\193@\176\179\005\001a@\144@\002\005\245\225\000\000\186\176\179\144\004;@\144@\002\005\245\225\000\000\187@\002\005\245\225\000\000\188@\002\005\245\225\000\000\189\144\224(includesBA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181(includes@@\160@\160@@@\005\001}@\160\160\176\001\004i,includesFrom@\192\176\193@\176\179\005\001u@\144@\002\005\245\225\000\000\178\176\193@\176\179\005\001z@\144@\002\005\245\225\000\000\179\176\193@\176\179\144\005\001o@\144@\002\005\245\225\000\000\180\176\179\144\004Z@\144@\002\005\245\225\000\000\181@\002\005\245\225\000\000\182@\002\005\245\225\000\000\183@\002\005\245\225\000\000\184\144\224(includesCA\t$\132\149\166\190\000\000\000\016\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181(includes@@\160@\160@\160@@@\005\001\157@\160\160\176\001\004j'indexOf@\192\176\193@\176\179\005\001\149@\144@\002\005\245\225\000\000\173\176\193@\176\179\005\001\154@\144@\002\005\245\225\000\000\174\176\179\144\005\001\141@\144@\002\005\245\225\000\000\175@\002\005\245\225\000\000\176@\002\005\245\225\000\000\177\144\224'indexOfBA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181'indexOf@@\160@\160@@@\005\001\182@\160\160\176\001\004k+indexOfFrom@\192\176\193@\176\179\005\001\174@\144@\002\005\245\225\000\000\166\176\193@\176\179\005\001\179@\144@\002\005\245\225\000\000\167\176\193@\176\179\144\005\001\168@\144@\002\005\245\225\000\000\168\176\179\144\005\001\172@\144@\002\005\245\225\000\000\169@\002\005\245\225\000\000\170@\002\005\245\225\000\000\171@\002\005\245\225\000\000\172\144\224'indexOfCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'indexOf@@\160@\160@\160@@@\005\001\214@\160\160\176\001\004l+lastIndexOf@\192\176\193@\176\179\005\001\206@\144@\002\005\245\225\000\000\161\176\193@\176\179\005\001\211@\144@\002\005\245\225\000\000\162\176\179\144\005\001\198@\144@\002\005\245\225\000\000\163@\002\005\245\225\000\000\164@\002\005\245\225\000\000\165\144\224+lastIndexOfBA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181+lastIndexOf@@\160@\160@@@\005\001\239@\160\160\176\001\004m/lastIndexOfFrom@\192\176\193@\176\179\005\001\231@\144@\002\005\245\225\000\000\154\176\193@\176\179\005\001\236@\144@\002\005\245\225\000\000\155\176\193@\176\179\144\005\001\225@\144@\002\005\245\225\000\000\156\176\179\144\005\001\229@\144@\002\005\245\225\000\000\157@\002\005\245\225\000\000\158@\002\005\245\225\000\000\159@\002\005\245\225\000\000\160\144\224+lastIndexOfCA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181+lastIndexOf@@\160@\160@\160@@@\005\002\015@\160\160\176\001\004n-localeCompare@\192\176\193@\176\179\005\002\007@\144@\002\005\245\225\000\000\149\176\193@\176\179\005\002\012@\144@\002\005\245\225\000\000\150\176\179\144\005\001W@\144@\002\005\245\225\000\000\151@\002\005\245\225\000\000\152@\002\005\245\225\000\000\153\144\224-localeCompareBA\t)\132\149\166\190\000\000\000\021\000\000\000\004\000\000\000\015\000\000\000\r\176\145B@\181-localeCompare@@\160@\160@@@\005\002(@\160\160\176\001\004o&match_@\192\176\193@\176\179\005\002 @\144@\002\005\245\225\000\000\141\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\000\142\176\179\144\005\001Y\160\176\179\144\005\002\012\160\176\179\144\005\001a\160\176\179\005\0029@\144@\002\005\245\225\000\000\143@\144@\002\005\245\225\000\000\144@\144@\002\005\245\225\000\000\145@\144@\002\005\245\225\000\000\146@\002\005\245\225\000\000\147@\002\005\245\225\000\000\148\144\224%matchBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145BC\181%match@@\160@\160@@@\005\002T@\160\160\176\001\004p)normalize@\192\176\193@\176\179\005\002L@\144@\002\005\245\225\000\000\138\176\179\005\002O@\144@\002\005\245\225\000\000\139@\002\005\245\225\000\000\140\144\224)normalizeAA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181)normalize@@\160@@@\005\002f@\160\160\176\001\004q/normalizeByForm@\192\176\193@\176\179\005\002^@\144@\002\005\245\225\000\000\133\176\193@\176\179\005\002c@\144@\002\005\245\225\000\000\134\176\179\005\002f@\144@\002\005\245\225\000\000\135@\002\005\245\225\000\000\136@\002\005\245\225\000\000\137\144\224)normalizeBA\t%\132\149\166\190\000\000\000\017\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181)normalize@@\160@\160@@@\005\002~@\160\160\176\001\004r&repeat@\192\176\193@\176\179\005\002v@\144@\002\005\245\225\000\000\128\176\193@\176\179\144\005\002k@\144@\002\005\245\225\000\000\129\176\179\005\002\127@\144@\002\005\245\225\000\000\130@\002\005\245\225\000\000\131@\002\005\245\225\000\000\132\144\224&repeatBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&repeat@@\160@\160@@@\005\002\151@\160\160\176\001\004s'replace@\192\176\193@\176\179\005\002\143@\144@\002\005\245\225\000\001\255y\176\193@\176\179\005\002\148@\144@\002\005\245\225\000\001\255z\176\193@\176\179\005\002\153@\144@\002\005\245\225\000\001\255{\176\179\005\002\156@\144@\002\005\245\225\000\001\255|@\002\005\245\225\000\001\255}@\002\005\245\225\000\001\255~@\002\005\245\225\000\001\255\127\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\181@\160\160\176\001\004t+replaceByRe@\192\176\193@\176\179\005\002\173@\144@\002\005\245\225\000\001\255r\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255s\176\193@\176\179\005\002\188@\144@\002\005\245\225\000\001\255t\176\179\005\002\191@\144@\002\005\245\225\000\001\255u@\002\005\245\225\000\001\255v@\002\005\245\225\000\001\255w@\002\005\245\225\000\001\255x\144\224'replaceCA\t#\132\149\166\190\000\000\000\015\000\000\000\004\000\000\000\r\000\000\000\012\176\145C@\181'replace@@\160@\160@\160@@@\005\002\216@\160\160\176\001\004u0unsafeReplaceBy0@\192\176\193@\176\179\005\002\208@\144@\002\005\245\225\000\001\255e\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255f\176\193@\176\193@\176\179\005\002\225@\144@\002\005\245\225\000\001\255g\176\193@\176\179\144\005\002\214@\144@\002\005\245\225\000\001\255h\176\193@\176\179\005\002\236@\144@\002\005\245\225\000\001\255i\176\179\005\002\239@\144@\002\005\245\225\000\001\255j@\002\005\245\225\000\001\255k@\002\005\245\225\000\001\255l@\002\005\245\225\000\001\255m\176\179\005\002\242@\144@\002\005\245\225\000\001\255n@\002\005\245\225\000\001\255o@\002\005\245\225\000\001\255p@\002\005\245\225\000\001\255q\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148CA@@\181'replace@@\160@\160@\160@@@\005\003\011@\160\160\176\001\004v0unsafeReplaceBy1@\192\176\193@\176\179\005\003\003@\144@\002\005\245\225\000\001\255V\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255W\176\193@\176\193@\176\179\005\003\020@\144@\002\005\245\225\000\001\255X\176\193@\176\179\005\003\025@\144@\002\005\245\225\000\001\255Y\176\193@\176\179\144\005\003\014@\144@\002\005\245\225\000\001\255Z\176\193@\176\179\005\003$@\144@\002\005\245\225\000\001\255[\176\179\005\003'@\144@\002\005\245\225\000\001\255\\@\002\005\245\225\000\001\255]@\002\005\245\225\000\001\255^@\002\005\245\225\000\001\255_@\002\005\245\225\000\001\255`\176\179\005\003*@\144@\002\005\245\225\000\001\255a@\002\005\245\225\000\001\255b@\002\005\245\225\000\001\255c@\002\005\245\225\000\001\255d\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148DA@@\181'replace@@\160@\160@\160@@@\005\003C@\160\160\176\001\004w0unsafeReplaceBy2@\192\176\193@\176\179\005\003;@\144@\002\005\245\225\000\001\255E\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255F\176\193@\176\193@\176\179\005\003L@\144@\002\005\245\225\000\001\255G\176\193@\176\179\005\003Q@\144@\002\005\245\225\000\001\255H\176\193@\176\179\005\003V@\144@\002\005\245\225\000\001\255I\176\193@\176\179\144\005\003K@\144@\002\005\245\225\000\001\255J\176\193@\176\179\005\003a@\144@\002\005\245\225\000\001\255K\176\179\005\003d@\144@\002\005\245\225\000\001\255L@\002\005\245\225\000\001\255M@\002\005\245\225\000\001\255N@\002\005\245\225\000\001\255O@\002\005\245\225\000\001\255P@\002\005\245\225\000\001\255Q\176\179\005\003g@\144@\002\005\245\225\000\001\255R@\002\005\245\225\000\001\255S@\002\005\245\225\000\001\255T@\002\005\245\225\000\001\255U\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148EA@@\181'replace@@\160@\160@\160@@@\005\003\128@\160\160\176\001\004x0unsafeReplaceBy3@\192\176\193@\176\179\005\003x@\144@\002\005\245\225\000\001\2552\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\2553\176\193@\176\193@\176\179\005\003\137@\144@\002\005\245\225\000\001\2554\176\193@\176\179\005\003\142@\144@\002\005\245\225\000\001\2555\176\193@\176\179\005\003\147@\144@\002\005\245\225\000\001\2556\176\193@\176\179\005\003\152@\144@\002\005\245\225\000\001\2557\176\193@\176\179\144\005\003\141@\144@\002\005\245\225\000\001\2558\176\193@\176\179\005\003\163@\144@\002\005\245\225\000\001\2559\176\179\005\003\166@\144@\002\005\245\225\000\001\255:@\002\005\245\225\000\001\255;@\002\005\245\225\000\001\255<@\002\005\245\225\000\001\255=@\002\005\245\225\000\001\255>@\002\005\245\225\000\001\255?@\002\005\245\225\000\001\255@\176\179\005\003\169@\144@\002\005\245\225\000\001\255A@\002\005\245\225\000\001\255B@\002\005\245\225\000\001\255C@\002\005\245\225\000\001\255D\144\224'replaceCA\t0\132\149\166\190\000\000\000\028\000\000\000\011\000\000\000!\000\000\000 \176\144\160\160AA\160\160AA\160\160\148FA@@\181'replace@@\160@\160@\160@@@\005\003\194@\160\160\176\001\004y&search@\192\176\193@\176\179\005\003\186@\144@\002\005\245\225\000\001\255-\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255.\176\179\144\005\003\183@\144@\002\005\245\225\000\001\255/@\002\005\245\225\000\001\2550@\002\005\245\225\000\001\2551\144\224&searchBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&search@@\160@\160@@@\005\003\224@\160\160\176\001\004z%slice@\192\176\193@\176\179\005\003\216@\144@\002\005\245\225\000\001\255&\176\193\144$from\176\179\144\005\003\207@\144@\002\005\245\225\000\001\255'\176\193\144#to_\176\179\144\005\003\215@\144@\002\005\245\225\000\001\255(\176\179\005\003\235@\144@\002\005\245\225\000\001\255)@\002\005\245\225\000\001\255*@\002\005\245\225\000\001\255+@\002\005\245\225\000\001\255,\144\224%sliceCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181%slice@@\160@\160@\160@@@\005\004\004@\160\160\176\001\004{*sliceToEnd@\192\176\193@\176\179\005\003\252@\144@\002\005\245\225\000\001\255!\176\193\144$from\176\179\144\005\003\243@\144@\002\005\245\225\000\001\255\"\176\179\005\004\007@\144@\002\005\245\225\000\001\255#@\002\005\245\225\000\001\255$@\002\005\245\225\000\001\255%\144\224%sliceBA\t)\132\149\166\190\000\000\000\021\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181%slice@@\160@\160@@@\005\004\031@\160\160\176\001\004|%split@\192\176\193@\176\179\005\004\023@\144@\002\005\245\225\000\001\255\027\176\193@\176\179\005\004\028@\144@\002\005\245\225\000\001\255\028\176\179\144\005\003\250\160\176\179\005\004#@\144@\002\005\245\225\000\001\255\029@\144@\002\005\245\225\000\001\255\030@\002\005\245\225\000\001\255\031@\002\005\245\225\000\001\255 \144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004<@\160\160\176\001\004}+splitAtMost@\192\176\193@\176\179\005\0044@\144@\002\005\245\225\000\001\255\019\176\193@\176\179\005\0049@\144@\002\005\245\225\000\001\255\020\176\193\144%limit\176\179\144\005\0040@\144@\002\005\245\225\000\001\255\021\176\179\144\005\004\031\160\176\179\005\004H@\144@\002\005\245\225\000\001\255\022@\144@\002\005\245\225\000\001\255\023@\002\005\245\225\000\001\255\024@\002\005\245\225\000\001\255\025@\002\005\245\225\000\001\255\026\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004b@\160\160\176\001\004~)splitByRe@\192\176\193@\176\179\005\004Z@\144@\002\005\245\225\000\001\255\012\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\r\176\179\144\005\004B\160\176\179\144\005\003\151\160\176\179\005\004o@\144@\002\005\245\225\000\001\255\014@\144@\002\005\245\225\000\001\255\015@\144@\002\005\245\225\000\001\255\016@\002\005\245\225\000\001\255\017@\002\005\245\225\000\001\255\018\144\224%splitBA\t!\132\149\166\190\000\000\000\r\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181%split@@\160@\160@@@\005\004\137@\160\160\176\001\004\127/splitByReAtMost@\192\176\193@\176\179\005\004\129@\144@\002\005\245\225\000\001\255\003\176\193@\176\179\177\144\176@%Js_reA!t\000\255@\144@\002\005\245\225\000\001\255\004\176\193\144%limit\176\179\144\005\004\130@\144@\002\005\245\225\000\001\255\005\176\179\144\005\004q\160\176\179\144\005\003\198\160\176\179\005\004\158@\144@\002\005\245\225\000\001\255\006@\144@\002\005\245\225\000\001\255\007@\144@\002\005\245\225\000\001\255\b@\002\005\245\225\000\001\255\t@\002\005\245\225\000\001\255\n@\002\005\245\225\000\001\255\011\144\224%splitCA\t-\132\149\166\190\000\000\000\025\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160AA\160\160A@@@\181%split@@\160@\160@\160@@@\005\004\185@\160\160\176\001\004\128*startsWith@\192\176\193@\176\179\005\004\177@\144@\002\005\245\225\000\001\254\254\176\193@\176\179\005\004\182@\144@\002\005\245\225\000\001\254\255\176\179\144\005\003\144@\144@\002\005\245\225\000\001\255\000@\002\005\245\225\000\001\255\001@\002\005\245\225\000\001\255\002\144\224*startsWithBA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145B@\181*startsWith@@\160@\160@@@\005\004\210@\160\160\176\001\004\129.startsWithFrom@\192\176\193@\176\179\005\004\202@\144@\002\005\245\225\000\001\254\247\176\193@\176\179\005\004\207@\144@\002\005\245\225\000\001\254\248\176\193@\176\179\144\005\004\196@\144@\002\005\245\225\000\001\254\249\176\179\144\005\003\175@\144@\002\005\245\225\000\001\254\250@\002\005\245\225\000\001\254\251@\002\005\245\225\000\001\254\252@\002\005\245\225\000\001\254\253\144\224*startsWithCA\t&\132\149\166\190\000\000\000\018\000\000\000\004\000\000\000\014\000\000\000\r\176\145C@\181*startsWith@@\160@\160@\160@@@\005\004\242@\160\160\176\001\004\130&substr@\192\176\193@\176\179\005\004\234@\144@\002\005\245\225\000\001\254\242\176\193\144$from\176\179\144\005\004\225@\144@\002\005\245\225\000\001\254\243\176\179\005\004\245@\144@\002\005\245\225\000\001\254\244@\002\005\245\225\000\001\254\245@\002\005\245\225\000\001\254\246\144\224&substrBA\t*\132\149\166\190\000\000\000\022\000\000\000\b\000\000\000\025\000\000\000\024\176\144\160\160AA\160\160A@@@\181&substr@@\160@\160@@@\005\005\r@\160\160\176\001\004\131,substrAtMost@\192\176\193@\176\179\005\005\005@\144@\002\005\245\225\000\001\254\235\176\193\144$from\176\179\144\005\004\252@\144@\002\005\245\225\000\001\254\236\176\193\144&length\176\179\144\005\005\004@\144@\002\005\245\225\000\001\254\237\176\179\005\005\024@\144@\002\005\245\225\000\001\254\238@\002\005\245\225\000\001\254\239@\002\005\245\225\000\001\254\240@\002\005\245\225\000\001\254\241\144\224&substrCA\t.\132\149\166\190\000\000\000\026\000\000\000\n\000\000\000\031\000\000\000\030\176\144\160\160AA\160\160A@\160\160A@@@\181&substr@@\160@\160@\160@@@\005\0051@\160\160\176\001\004\132)substring@\192\176\193@\176\179\005\005)@\144@\002\005\245\225\000\001\254\228\176\193\144$from\176\179\144\005\005 @\144@\002\005\245\225\000\001\254\229\176\193\144#to_\176\179\144\005\005(@\144@\002\005\245\225\000\001\254\230\176\179\005\005<@\144@\002\005\245\225\000\001\254\231@\002\005\245\225\000\001\254\232@\002\005\245\225\000\001\254\233@\002\005\245\225\000\001\254\234\144\224)substringCA\t1\132\149\166\190\000\000\000\029\000\000\000\n\000\000\000 \000\000\000\031\176\144\160\160AA\160\160A@\160\160A@@@\181)substring@@\160@\160@\160@@@\005\005U@\160\160\176\001\004\133.substringToEnd@\192\176\193@\176\179\005\005M@\144@\002\005\245\225\000\001\254\223\176\193\144$from\176\179\144\005\005D@\144@\002\005\245\225\000\001\254\224\176\179\005\005X@\144@\002\005\245\225\000\001\254\225@\002\005\245\225\000\001\254\226@\002\005\245\225\000\001\254\227\144\224)substringBA\t-\132\149\166\190\000\000\000\025\000\000\000\b\000\000\000\026\000\000\000\025\176\144\160\160AA\160\160A@@@\181)substring@@\160@\160@@@\005\005p@\160\160\176\001\004\134+toLowerCase@\192\176\193@\176\179\005\005h@\144@\002\005\245\225\000\001\254\220\176\179\005\005k@\144@\002\005\245\225\000\001\254\221@\002\005\245\225\000\001\254\222\144\224+toLowerCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toLowerCase@@\160@@@\005\005\130@\160\160\176\001\004\1351toLocaleLowerCase@\192\176\193@\176\179\005\005z@\144@\002\005\245\225\000\001\254\217\176\179\005\005}@\144@\002\005\245\225\000\001\254\218@\002\005\245\225\000\001\254\219\144\2241toLocaleLowerCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleLowerCase@@\160@@@\005\005\148@\160\160\176\001\004\136+toUpperCase@\192\176\193@\176\179\005\005\140@\144@\002\005\245\225\000\001\254\214\176\179\005\005\143@\144@\002\005\245\225\000\001\254\215@\002\005\245\225\000\001\254\216\144\224+toUpperCaseAA\t'\132\149\166\190\000\000\000\019\000\000\000\004\000\000\000\014\000\000\000\r\176\145A@\181+toUpperCase@@\160@@@\005\005\166@\160\160\176\001\004\1371toLocaleUpperCase@\192\176\193@\176\179\005\005\158@\144@\002\005\245\225\000\001\254\211\176\179\005\005\161@\144@\002\005\245\225\000\001\254\212@\002\005\245\225\000\001\254\213\144\2241toLocaleUpperCaseAA\t-\132\149\166\190\000\000\000\025\000\000\000\004\000\000\000\016\000\000\000\014\176\145A@\1811toLocaleUpperCase@@\160@@@\005\005\184@\160\160\176\001\004\138$trim@\192\176\193@\176\179\005\005\176@\144@\002\005\245\225\000\001\254\208\176\179\005\005\179@\144@\002\005\245\225\000\001\254\209@\002\005\245\225\000\001\254\210\144\224$trimAA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145A@\181$trim@@\160@@@\005\005\202@\160\160\176\001\004\139&anchor@\192\176\193@\176\179\005\005\194@\144@\002\005\245\225\000\001\254\203\176\193@\176\179\005\005\199@\144@\002\005\245\225\000\001\254\204\176\179\005\005\202@\144@\002\005\245\225\000\001\254\205@\002\005\245\225\000\001\254\206@\002\005\245\225\000\001\254\207\144\224&anchorBA\t\"\132\149\166\190\000\000\000\014\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181&anchor@@\160@\160@@@\005\005\226@\160\160\176\001\004\140$link@\192\176\193@\176\179\005\005\218@\144@\002\005\245\225\000\001\254\198\176\193@\176\179\005\005\223@\144@\002\005\245\225\000\001\254\199\176\179\005\005\226@\144@\002\005\245\225\000\001\254\200@\002\005\245\225\000\001\254\201@\002\005\245\225\000\001\254\202\144\224$linkBA\t \132\149\166\190\000\000\000\012\000\000\000\004\000\000\000\r\000\000\000\012\176\145B@\181$link@@\160@\160@@@\005\005\250@\160\160\176\001\004\141/castToArrayLike@\192\176\193@\176\179\005\005\242@\144@\002\005\245\225\000\001\254\194\176\179\177\144\176@)Js_array2A*array_like\000\255\160\176\179\005\005\253@\144@\002\005\245\225\000\001\254\195@\144@\002\005\245\225\000\001\254\196@\002\005\245\225\000\001\254\197\144\224)%identityAA \160@@@\005\006\021@@\160\160*Js_string2\1440\146#\242\226\1584\145\226N-\139\129m\"o\169\160\160%Js_re\1440c\r\158s\143R\211\142\216\025\193\227\221',\168\160\160)Js_array2\1440\210T\206\242K\020R\133\13934h\179,\196r\160\160\"Js\1440\239\222\000\199?G8\016E&t\181G\170+\\\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakmap *) "\132\149\166\190\000\000\000\154\000\000\000!\000\000\000v\000\000\000m\192*Js_weakmap\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!k\002\005\245\225\000\000\254\160\176\144\144!v\002\005\245\225\000\000\253@B@A@\160G\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakmap\1440\001(;\181(\t\025\137\"\199\191\226\b[\028F\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", (* Js_weakset *) "\132\149\166\190\000\000\000\139\000\000\000\027\000\000\000f\000\000\000]\192*Js_weakset\160\177\176\001\003\235!t@\b\000\000,\000\160\176\144\144!a\002\005\245\225\000\000\254@A@A@\160G@@\176\192&_none_A@\000\255\004\002A@@\160@@A@\160\160*Js_weakset\1440\157\245\162m3PL\1309\223>\168\227\229\184W\160\160.Belt_internals\1440\209\1437\131\146\141\028\234\145\r\221\188X\184\197\189@@", @@ -217192,6 +217204,7 @@ and type_expect ?in_function ?recarg env sexp ty_expected = let rec extractPromise t = match t.desc with | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) + | Tconstr (Pident {name = "promise"}, [t1], _) -> Some t1 | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 @@ -240643,7 +240656,7 @@ let translateConstr ~config ~paramsTranslation ~(path : Path.t) ~typeEnv = | [ "Js"; "null_undefined" ] ), [ paramTranslation ] ) -> { paramTranslation with type_ = Nullable paramTranslation.type_ } - | [ "Js"; "Promise"; "t" ], [ paramTranslation ] -> + | ([ "Js"; "Promise"; "t" ] | ["promise"]), [ paramTranslation ] -> { paramTranslation with type_ = Promise paramTranslation.type_ } | ( [ "Js"; "Internal"; "fn" ], [ { dependencies = argsDependencies; type_ = Tuple ts }; ret ] ) -> @@ -248363,7 +248376,7 @@ val module_data : end = struct #1 "builtin_cmj_datasets.ml" -(* 36afc4d4582ed9cc168039f5d3f28592 *) +(* a32a8631aa0bfcd37a4d742e9ad8aada *) let module_names : string array = Obj.magic ( "Js" (* 23 *), "Arg" (* 217 *), @@ -248574,7 +248587,7 @@ let module_data : string array = Obj.magic ( (* Belt_Float *)"\132\149\166\190\000\000\000\022\000\000\000\007\000\000\000\021\000\000\000\020\160\144\176*fromString\144\160\160A@@@A", (* Belt_Range *)"\132\149\166\190\000\000\000\160\000\000\0004\000\000\000\166\000\000\000\156\160\b\000\000(\000\176$some\144\160\160C@@@\176%every\144\160\160C@@@\176%someU\144\160\160C@@@\176&everyU\144\160\160C@@@\176&someBy\144\160\160D@@@\176'everyBy\144\160\160D@@@\176'forEach\144\160\160C@@@\176'someByU\144\160\160D@@@\176(everyByU\144\160\160D@@@\176(forEachU\144\160\160C@@@A", (* Js_console *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", -(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\018\001\011\018\192\004\002\000R\001\011T\001\011l@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\n\186\001\n\186\192\004%\000O\001\n\248\001\011\016@@\004\003\208B@@@@A", +(* Js_promise *)"\132\149\166\190\000\000\000\252\000\000\000J\000\000\000\243\000\000\000\232\160\160\176%catch\144\160\160B@@\144\148\192B\160\176\001\003\253$arg1@\160\176\001\003\254#obj@@\151\176\180%catch\160\160AA\160\160AA@\181%catch@@\160\144\004\014\160\151\176\b\000\000\004\016A\160\144\004\023@\176\1924others/js_promise.ml\000Q\001\011\241\001\011\241\192\004\002\000R\001\012?\001\012]@@\004\004\208B@@@@\176%then_\144\160\160B@@\144\148\192B\160\176\001\003\248$arg1@\160\176\001\003\249\004%@@\151\176\180$then\160\160AA\160\160AA@\181$then@@\160\144\004\r\160\151\176\b\000\000\004\016A\160\144\004\022@\176\192\004$\000N\001\011\135\001\011\135\192\004%\000O\001\011\209\001\011\239@@\004\003\208B@@@@A", (* Js_string2 *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakmap *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", (* Js_weakset *)"\132\149\166\190\000\000\000\003\000\000\000\001\000\000\000\003\000\000\000\003\160\128A", From 84a1f67cb51aa97d6105b48cf5edf2a50b457816 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Fri, 9 Sep 2022 08:25:54 +0200 Subject: [PATCH 2/4] Move checking type invariant to separate function. --- jscomp/ml/typecore.ml | 53 ++++++++-------- lib/4.06.1/unstable/js_compiler.ml | 61 ++++++++++--------- lib/4.06.1/unstable/js_playground_compiler.ml | 61 ++++++++++--------- lib/4.06.1/whole_compiler.ml | 61 ++++++++++--------- 4 files changed, 121 insertions(+), 115 deletions(-) diff --git a/jscomp/ml/typecore.ml b/jscomp/ml/typecore.ml index cb6400ec4c..99f84d661a 100644 --- a/jscomp/ml/typecore.ml +++ b/jscomp/ml/typecore.ml @@ -1864,37 +1864,40 @@ and type_expect ?in_function ?recarg env sexp ty_expected = type_expect_ ?in_function ?recarg env sexp ty_expected ) in - let () = - let rec extractPromise t = - match t.desc with - | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) - | Tconstr (Pident {name = "promise"}, [t1], _) - -> + checkTypeInvariant exp; + Cmt_format.set_saved_types + (Cmt_format.Partial_expression exp :: previous_saved_types); + exp + +and checkTypeInvariant exp = + let rec extractPromise t = + match t.desc with + | Tconstr + (Pdot (Pdot (Pident { name = "Js" }, "Promise", _), "t", _), [ t1 ], _) + | Tconstr (Pident { name = "promise" }, [ t1 ], _) -> Some t1 - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 - | _ -> None - in - let rec findNestedPromise t = - match t.desc with - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 - | Tconstr (_, ts, _) -> ( + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 + | _ -> None + in + let rec findNestedPromise t = + match t.desc with + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 + | Tconstr (_, ts, _) -> ( match extractPromise t with | Some t1 -> ( - match extractPromise t1 with - | Some _t2 -> - let nestedType = Format.asprintf "%a" Printtyp.type_expr t in - Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) - | None -> ts |> List.iter findNestedPromise) + match extractPromise t1 with + | Some _t2 -> + let nestedType = Format.asprintf "%a" Printtyp.type_expr t in + Location.prerr_warning exp.exp_loc + (Bs_nested_promise nestedType) + | None -> ts |> List.iter findNestedPromise) | None -> ts |> List.iter findNestedPromise) - | Tarrow (_, t1, t2, _) -> + | Tarrow (_, t1, t2, _) -> findNestedPromise t1; findNestedPromise t2 - | _ -> () - in findNestedPromise exp.exp_type - in - Cmt_format.set_saved_types - (Cmt_format.Partial_expression exp :: previous_saved_types); - exp + | _ -> () + in + findNestedPromise exp.exp_type and type_expect_ ?in_function ?(recarg=Rejected) env sexp ty_expected = let loc = sexp.pexp_loc in diff --git a/lib/4.06.1/unstable/js_compiler.ml b/lib/4.06.1/unstable/js_compiler.ml index 51ae669ec3..62ca628edb 100644 --- a/lib/4.06.1/unstable/js_compiler.ml +++ b/lib/4.06.1/unstable/js_compiler.ml @@ -40813,38 +40813,39 @@ and type_expect ?in_function ?recarg env sexp ty_expected = type_expect_ ?in_function ?recarg env sexp ty_expected ) in - let () = - let rec extractPromise t = - match t.desc with - | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) - | Tconstr (Pident {name = "promise"}, [t1], _) - -> - Some t1 - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 - | _ -> None - in - let rec findNestedPromise t = - match t.desc with - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 - | Tconstr (_, ts, _) -> ( - match extractPromise t with - | Some t1 -> ( - match extractPromise t1 with - | Some _t2 -> - let nestedType = Format.asprintf "%a" Printtyp.type_expr t in - Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) - | None -> ts |> List.iter findNestedPromise) - | None -> ts |> List.iter findNestedPromise) - | Tarrow (_, t1, t2, _) -> - findNestedPromise t1; - findNestedPromise t2 - | _ -> () - in findNestedPromise exp.exp_type - in - Cmt_format.set_saved_types - (Cmt_format.Partial_expression exp :: previous_saved_types); + checkTypeInvariant exp; + Cmt_format.set_saved_types + (Cmt_format.Partial_expression exp :: previous_saved_types); exp +and checkTypeInvariant exp = +let rec extractPromise t = + match t.desc with + | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) + | Tconstr (Pident {name = "promise"}, [t1], _) + -> + Some t1 + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 + | _ -> None +in +let rec findNestedPromise t = + match t.desc with + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 + | Tconstr (_, ts, _) -> ( + match extractPromise t with + | Some t1 -> ( + match extractPromise t1 with + | Some _t2 -> + let nestedType = Format.asprintf "%a" Printtyp.type_expr t in + Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) + | None -> ts |> List.iter findNestedPromise) + | None -> ts |> List.iter findNestedPromise) + | Tarrow (_, t1, t2, _) -> + findNestedPromise t1; + findNestedPromise t2 + | _ -> () + in findNestedPromise exp.exp_type + and type_expect_ ?in_function ?(recarg=Rejected) env sexp ty_expected = let loc = sexp.pexp_loc in (* Record the expression type before unifying it with the expected type *) diff --git a/lib/4.06.1/unstable/js_playground_compiler.ml b/lib/4.06.1/unstable/js_playground_compiler.ml index 0e0cacbc01..46cf7c4c0b 100644 --- a/lib/4.06.1/unstable/js_playground_compiler.ml +++ b/lib/4.06.1/unstable/js_playground_compiler.ml @@ -40813,38 +40813,39 @@ and type_expect ?in_function ?recarg env sexp ty_expected = type_expect_ ?in_function ?recarg env sexp ty_expected ) in - let () = - let rec extractPromise t = - match t.desc with - | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) - | Tconstr (Pident {name = "promise"}, [t1], _) - -> - Some t1 - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 - | _ -> None - in - let rec findNestedPromise t = - match t.desc with - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 - | Tconstr (_, ts, _) -> ( - match extractPromise t with - | Some t1 -> ( - match extractPromise t1 with - | Some _t2 -> - let nestedType = Format.asprintf "%a" Printtyp.type_expr t in - Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) - | None -> ts |> List.iter findNestedPromise) - | None -> ts |> List.iter findNestedPromise) - | Tarrow (_, t1, t2, _) -> - findNestedPromise t1; - findNestedPromise t2 - | _ -> () - in findNestedPromise exp.exp_type - in - Cmt_format.set_saved_types - (Cmt_format.Partial_expression exp :: previous_saved_types); + checkTypeInvariant exp; + Cmt_format.set_saved_types + (Cmt_format.Partial_expression exp :: previous_saved_types); exp +and checkTypeInvariant exp = +let rec extractPromise t = + match t.desc with + | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) + | Tconstr (Pident {name = "promise"}, [t1], _) + -> + Some t1 + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 + | _ -> None +in +let rec findNestedPromise t = + match t.desc with + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 + | Tconstr (_, ts, _) -> ( + match extractPromise t with + | Some t1 -> ( + match extractPromise t1 with + | Some _t2 -> + let nestedType = Format.asprintf "%a" Printtyp.type_expr t in + Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) + | None -> ts |> List.iter findNestedPromise) + | None -> ts |> List.iter findNestedPromise) + | Tarrow (_, t1, t2, _) -> + findNestedPromise t1; + findNestedPromise t2 + | _ -> () + in findNestedPromise exp.exp_type + and type_expect_ ?in_function ?(recarg=Rejected) env sexp ty_expected = let loc = sexp.pexp_loc in (* Record the expression type before unifying it with the expected type *) diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index 8cce202957..c80ba8d2d7 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -217200,38 +217200,39 @@ and type_expect ?in_function ?recarg env sexp ty_expected = type_expect_ ?in_function ?recarg env sexp ty_expected ) in - let () = - let rec extractPromise t = - match t.desc with - | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) - | Tconstr (Pident {name = "promise"}, [t1], _) - -> - Some t1 - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 - | _ -> None - in - let rec findNestedPromise t = - match t.desc with - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 - | Tconstr (_, ts, _) -> ( - match extractPromise t with - | Some t1 -> ( - match extractPromise t1 with - | Some _t2 -> - let nestedType = Format.asprintf "%a" Printtyp.type_expr t in - Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) - | None -> ts |> List.iter findNestedPromise) - | None -> ts |> List.iter findNestedPromise) - | Tarrow (_, t1, t2, _) -> - findNestedPromise t1; - findNestedPromise t2 - | _ -> () - in findNestedPromise exp.exp_type - in - Cmt_format.set_saved_types - (Cmt_format.Partial_expression exp :: previous_saved_types); + checkTypeInvariant exp; + Cmt_format.set_saved_types + (Cmt_format.Partial_expression exp :: previous_saved_types); exp +and checkTypeInvariant exp = +let rec extractPromise t = + match t.desc with + | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) + | Tconstr (Pident {name = "promise"}, [t1], _) + -> + Some t1 + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 + | _ -> None +in +let rec findNestedPromise t = + match t.desc with + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 + | Tconstr (_, ts, _) -> ( + match extractPromise t with + | Some t1 -> ( + match extractPromise t1 with + | Some _t2 -> + let nestedType = Format.asprintf "%a" Printtyp.type_expr t in + Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) + | None -> ts |> List.iter findNestedPromise) + | None -> ts |> List.iter findNestedPromise) + | Tarrow (_, t1, t2, _) -> + findNestedPromise t1; + findNestedPromise t2 + | _ -> () + in findNestedPromise exp.exp_type + and type_expect_ ?in_function ?(recarg=Rejected) env sexp ty_expected = let loc = sexp.pexp_loc in (* Record the expression type before unifying it with the expected type *) From c5129afabac1f07685f7588244291aab9d68592c Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Fri, 9 Sep 2022 08:31:38 +0200 Subject: [PATCH 3/4] Audit type invariant check for nested promises. Fixes https://github.com/rescript-lang/rescript-compiler/issues/5567 --- CHANGELOG.md | 2 ++ jscomp/ml/typecore.ml | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa5330e015..ff67d3b318 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ - Add support for for `async`/`await` https://github.com/rescript-lang/rescript-compiler/pull/5537 +- Make `promise` a built-in type https://github.com/rescript-lang/rescript-compiler/pull/5650 + - Initial support for JSX V4 including genType, still work in progress. - :boom: when V4 is activated, at most one component is allowed for each module. diff --git a/jscomp/ml/typecore.ml b/jscomp/ml/typecore.ml index 99f84d661a..c0e36b5bd3 100644 --- a/jscomp/ml/typecore.ml +++ b/jscomp/ml/typecore.ml @@ -1869,16 +1869,20 @@ and type_expect ?in_function ?recarg env sexp ty_expected = (Cmt_format.Partial_expression exp :: previous_saved_types); exp -and checkTypeInvariant exp = +(* NOTE: the type invariant check should have no side effects and be efficient *) +and checkTypeInvariant exp : unit = let rec extractPromise t = match t.desc with | Tconstr (Pdot (Pdot (Pident { name = "Js" }, "Promise", _), "t", _), [ t1 ], _) | Tconstr (Pident { name = "promise" }, [ t1 ], _) -> + (* Improvement: check for type aliases, if it can be done efficiently *) Some t1 | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 | _ -> None in + (* Only traverse arguments of a type constructors and function types. + This should guarantee that the traversal finished quickly. *) let rec findNestedPromise t = match t.desc with | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 From bbdedba1c7f8120f6654665e6a9336a3a466dc6f Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Fri, 9 Sep 2022 08:32:42 +0200 Subject: [PATCH 4/4] Mark async/await as experimental. --- CHANGELOG.md | 2 +- lib/4.06.1/unstable/js_compiler.ml | 60 ++++++++++--------- lib/4.06.1/unstable/js_playground_compiler.ml | 60 ++++++++++--------- lib/4.06.1/whole_compiler.ml | 60 ++++++++++--------- 4 files changed, 100 insertions(+), 82 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff67d3b318..f1a11a327a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ #### :rocket: New Feature -- Add support for for `async`/`await` https://github.com/rescript-lang/rescript-compiler/pull/5537 +- Experimental support for for `async`/`await` https://github.com/rescript-lang/rescript-compiler/pull/5537 - Make `promise` a built-in type https://github.com/rescript-lang/rescript-compiler/pull/5650 diff --git a/lib/4.06.1/unstable/js_compiler.ml b/lib/4.06.1/unstable/js_compiler.ml index 62ca628edb..715ee6ca62 100644 --- a/lib/4.06.1/unstable/js_compiler.ml +++ b/lib/4.06.1/unstable/js_compiler.ml @@ -40818,33 +40818,39 @@ and type_expect ?in_function ?recarg env sexp ty_expected = (Cmt_format.Partial_expression exp :: previous_saved_types); exp -and checkTypeInvariant exp = -let rec extractPromise t = - match t.desc with - | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) - | Tconstr (Pident {name = "promise"}, [t1], _) - -> - Some t1 - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 - | _ -> None -in -let rec findNestedPromise t = - match t.desc with - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 - | Tconstr (_, ts, _) -> ( - match extractPromise t with - | Some t1 -> ( - match extractPromise t1 with - | Some _t2 -> - let nestedType = Format.asprintf "%a" Printtyp.type_expr t in - Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) - | None -> ts |> List.iter findNestedPromise) - | None -> ts |> List.iter findNestedPromise) - | Tarrow (_, t1, t2, _) -> - findNestedPromise t1; - findNestedPromise t2 - | _ -> () - in findNestedPromise exp.exp_type +(* NOTE: the type invariant check should have no side effects and be efficient *) +and checkTypeInvariant exp : unit = + let rec extractPromise t = + match t.desc with + | Tconstr + (Pdot (Pdot (Pident { name = "Js" }, "Promise", _), "t", _), [ t1 ], _) + | Tconstr (Pident { name = "promise" }, [ t1 ], _) -> + (* Improvement: check for type aliases, if it can be done efficiently *) + Some t1 + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 + | _ -> None + in + (* Only traverse arguments of a type constructors and function types. + This should guarantee that the traversal finished quickly. *) + let rec findNestedPromise t = + match t.desc with + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 + | Tconstr (_, ts, _) -> ( + match extractPromise t with + | Some t1 -> ( + match extractPromise t1 with + | Some _t2 -> + let nestedType = Format.asprintf "%a" Printtyp.type_expr t in + Location.prerr_warning exp.exp_loc + (Bs_nested_promise nestedType) + | None -> ts |> List.iter findNestedPromise) + | None -> ts |> List.iter findNestedPromise) + | Tarrow (_, t1, t2, _) -> + findNestedPromise t1; + findNestedPromise t2 + | _ -> () + in + findNestedPromise exp.exp_type and type_expect_ ?in_function ?(recarg=Rejected) env sexp ty_expected = let loc = sexp.pexp_loc in diff --git a/lib/4.06.1/unstable/js_playground_compiler.ml b/lib/4.06.1/unstable/js_playground_compiler.ml index 46cf7c4c0b..7564e76ba7 100644 --- a/lib/4.06.1/unstable/js_playground_compiler.ml +++ b/lib/4.06.1/unstable/js_playground_compiler.ml @@ -40818,33 +40818,39 @@ and type_expect ?in_function ?recarg env sexp ty_expected = (Cmt_format.Partial_expression exp :: previous_saved_types); exp -and checkTypeInvariant exp = -let rec extractPromise t = - match t.desc with - | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) - | Tconstr (Pident {name = "promise"}, [t1], _) - -> - Some t1 - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 - | _ -> None -in -let rec findNestedPromise t = - match t.desc with - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 - | Tconstr (_, ts, _) -> ( - match extractPromise t with - | Some t1 -> ( - match extractPromise t1 with - | Some _t2 -> - let nestedType = Format.asprintf "%a" Printtyp.type_expr t in - Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) - | None -> ts |> List.iter findNestedPromise) - | None -> ts |> List.iter findNestedPromise) - | Tarrow (_, t1, t2, _) -> - findNestedPromise t1; - findNestedPromise t2 - | _ -> () - in findNestedPromise exp.exp_type +(* NOTE: the type invariant check should have no side effects and be efficient *) +and checkTypeInvariant exp : unit = + let rec extractPromise t = + match t.desc with + | Tconstr + (Pdot (Pdot (Pident { name = "Js" }, "Promise", _), "t", _), [ t1 ], _) + | Tconstr (Pident { name = "promise" }, [ t1 ], _) -> + (* Improvement: check for type aliases, if it can be done efficiently *) + Some t1 + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 + | _ -> None + in + (* Only traverse arguments of a type constructors and function types. + This should guarantee that the traversal finished quickly. *) + let rec findNestedPromise t = + match t.desc with + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 + | Tconstr (_, ts, _) -> ( + match extractPromise t with + | Some t1 -> ( + match extractPromise t1 with + | Some _t2 -> + let nestedType = Format.asprintf "%a" Printtyp.type_expr t in + Location.prerr_warning exp.exp_loc + (Bs_nested_promise nestedType) + | None -> ts |> List.iter findNestedPromise) + | None -> ts |> List.iter findNestedPromise) + | Tarrow (_, t1, t2, _) -> + findNestedPromise t1; + findNestedPromise t2 + | _ -> () + in + findNestedPromise exp.exp_type and type_expect_ ?in_function ?(recarg=Rejected) env sexp ty_expected = let loc = sexp.pexp_loc in diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index c80ba8d2d7..2d654fd7ff 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -217205,33 +217205,39 @@ and type_expect ?in_function ?recarg env sexp ty_expected = (Cmt_format.Partial_expression exp :: previous_saved_types); exp -and checkTypeInvariant exp = -let rec extractPromise t = - match t.desc with - | Tconstr (Pdot (Pdot (Pident {name = "Js"}, "Promise", _), "t", _), [t1], _) - | Tconstr (Pident {name = "promise"}, [t1], _) - -> - Some t1 - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 - | _ -> None -in -let rec findNestedPromise t = - match t.desc with - | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 - | Tconstr (_, ts, _) -> ( - match extractPromise t with - | Some t1 -> ( - match extractPromise t1 with - | Some _t2 -> - let nestedType = Format.asprintf "%a" Printtyp.type_expr t in - Location.prerr_warning exp.exp_loc (Bs_nested_promise nestedType) - | None -> ts |> List.iter findNestedPromise) - | None -> ts |> List.iter findNestedPromise) - | Tarrow (_, t1, t2, _) -> - findNestedPromise t1; - findNestedPromise t2 - | _ -> () - in findNestedPromise exp.exp_type +(* NOTE: the type invariant check should have no side effects and be efficient *) +and checkTypeInvariant exp : unit = + let rec extractPromise t = + match t.desc with + | Tconstr + (Pdot (Pdot (Pident { name = "Js" }, "Promise", _), "t", _), [ t1 ], _) + | Tconstr (Pident { name = "promise" }, [ t1 ], _) -> + (* Improvement: check for type aliases, if it can be done efficiently *) + Some t1 + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractPromise t1 + | _ -> None + in + (* Only traverse arguments of a type constructors and function types. + This should guarantee that the traversal finished quickly. *) + let rec findNestedPromise t = + match t.desc with + | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> findNestedPromise t1 + | Tconstr (_, ts, _) -> ( + match extractPromise t with + | Some t1 -> ( + match extractPromise t1 with + | Some _t2 -> + let nestedType = Format.asprintf "%a" Printtyp.type_expr t in + Location.prerr_warning exp.exp_loc + (Bs_nested_promise nestedType) + | None -> ts |> List.iter findNestedPromise) + | None -> ts |> List.iter findNestedPromise) + | Tarrow (_, t1, t2, _) -> + findNestedPromise t1; + findNestedPromise t2 + | _ -> () + in + findNestedPromise exp.exp_type and type_expect_ ?in_function ?(recarg=Rejected) env sexp ty_expected = let loc = sexp.pexp_loc in