123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991(*****************************************************************************)(* *)(* Open Source License *)(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)(* Copyright (c) 2019-2022 Nomadic Labs <contact@nomadic-labs.com> *)(* Copyright (c) 2020 Metastate AG <hello@metastate.dev> *)(* Copyright (c) 2022 DaiLambda, Inc. <contact@dailambda.jp> *)(* *)(* Permission is hereby granted, free of charge, to any person obtaining a *)(* copy of this software and associated documentation files (the "Software"),*)(* to deal in the Software without restriction, including without limitation *)(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *)(* and/or sell copies of the Software, and to permit persons to whom the *)(* Software is furnished to do so, subject to the following conditions: *)(* *)(* The above copyright notice and this permission notice shall be included *)(* in all copies or substantial portions of the Software. *)(* *)(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*)(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *)(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*)(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *)(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *)(* DEALINGS IN THE SOFTWARE. *)(* *)(*****************************************************************************)moduleS=Saturation_reprmoduleS_syntax=S.Syntax(* This file is planned to be automatically generated. *)(* If you want to update the following functions, update the gas model instead. *)(* model N_IAbs_int *)(* Allocates [size] bytes. *)letcost_N_IAbs_intsize=S.safe_int(20+(sizelsr1))(* model N_IAdd_bls12_381_fr *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IAdd_bls12_381_fr=S.safe_int30(* model N_IAdd_bls12_381_g1 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IAdd_bls12_381_g1=S.safe_int900(* model N_IAdd_bls12_381_g2 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IAdd_bls12_381_g2=S.safe_int2_470(* Allocates [max size1 size2] *)letcost_linear_op_intsize1size2=letopenS_syntaxinletv0=S.safe_int(Compare.Int.maxsize1size2)inS.safe_int35+(v0lsr1)(* model N_IAdd_int *)(* Approximating 0.078154 x term *)letcost_N_IAdd_int=cost_linear_op_int(* model N_IAdd_nat *)(* Approximating 0.077807 x term *)letcost_N_IAdd_nat=cost_linear_op_int(* model N_IAdd_seconds_to_timestamp *)(* Approximating 0.078056 x term *)letcost_N_IAdd_seconds_to_timestamp=cost_linear_op_int(* model N_IAdd_tez *)letcost_N_IAdd_tez=S.safe_int20(* model N_IAdd_timestamp_to_seconds *)(* Approximating 0.077771 x term *)letcost_N_IAdd_timestamp_to_seconds=cost_linear_op_int(* model N_IAddress *)letcost_N_IAddress=S.safe_int10(* model N_IAmount *)letcost_N_IAmount=S.safe_int10(* model N_IAnd *)letcost_N_IAnd=S.safe_int10(* model N_IAnd_int_nat *)(* Allocates [min size1 size2] *)letcost_N_IAnd_int_natsize1size2=letopenS_syntaxinletv0=S.safe_int(Compare.Int.minsize1size2)inS.safe_int35+(v0lsr1)(* model N_IAnd_nat *)(* Allocates [min size1 size2] *)letcost_N_IAnd_natsize1size2=letopenS_syntaxinletv0=S.safe_int(Compare.Int.minsize1size2)inS.safe_int35+(v0lsr1)(* model N_IAnd_bytes *)(* Allocates [min size1 size2] *)(* fun size1 -> fun size2 -> (34.8914840649 + (0.398826813115 * (min size1 size2))) *)letcost_N_IAnd_bytessize1size2=letopenS_syntaxinletv0=S.safe_int(Compare.Int.minsize1size2)inS.safe_int35+(v0lsr1)(* model N_IBalance *)letcost_N_IBalance=S.safe_int10(* model N_IBlake2b *)(* Approximating 1.120804 x term *)letcost_N_IBlake2bsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int430+v0+(v0lsr3)(* model N_IBytes_size *)letcost_N_IBytes_size=S.safe_int10(* model N_IByte_nat *)(* fun size -> (73.6648173983 + (2.97857716538 * size)) *)letcost_N_IBytes_natsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int75+(v0lsl1)+v0(* model N_INat_bytes *)(* fun size -> (41.2414840649 + (2.47956362254 * size)) *)letcost_N_INat_bytessize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int45+(v0lsl1)+(v0lsr1)(* model N_IBytes_int *)(* fun size -> (87.7348173983 + (3.04617929025 * size)) *)letcost_N_IBytes_intsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int90+(v0lsl1)+v0(* model N_IInt_bytes *)(* fun size -> (17.8814840649 + (2.57086493257 * size)) *)letcost_N_IInt_bytessize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int20+(v0lsl1)+(v0lsr1)(* model N_ICar *)letcost_N_ICar=S.safe_int10(* model N_ICdr *)letcost_N_ICdr=S.safe_int10(* model N_IChainId *)letcost_N_IChainId=S.safe_int15(* model N_ICheck_signature_ed25519 *)(* Approximating 1.123507 x term *)letcost_N_ICheck_signature_ed25519size=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int65_800+(v0+(v0lsr3))(* model N_ICheck_signature_p256 *)(* Approximating 1.111539 x term *)letcost_N_ICheck_signature_p256size=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int990_000+(v0+(v0lsr3))(* model N_ICheck_signature_secp256k1 *)(* Approximating 1.125404 x term *)letcost_N_ICheck_signature_secp256k1size=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int51_600+(v0+(v0lsr3))(* model N_ICheck_signature_bls *)(* fun size -> (1566529.36815 + (2.94695684559 * size)) *)letcost_N_ICheck_signature_blssize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int1_570_000+(v0lsl1)+v0(* model N_IComb *)(* Approximating 3.531001 x term *)(* Note: size >= 2, so the cost is never 0 *)letcost_N_ICombsize=letopenS_syntaxinletv0=S.safe_intsizein(S.safe_int3*v0)+(v0lsr1)+(v0lsr5)(* model N_IComb_get *)(* Approximating 0.573180 x term *)letcost_N_IComb_getsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int20+(v0lsr1)+(v0lsr4)(* model N_IComb_set *)(* Approximating 1.287531 x term *)letcost_N_IComb_setsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int20+(v0+(v0lsr2)+(v0lsr5))(* Model N_ICompare *)(* Approximating 0.024413 x term *)letcost_N_IComparesize1size2=letopenS_syntaxinletv0=S.safe_int(Compare.Int.minsize1size2)inS.safe_int35+((v0lsr6)+(v0lsr7))(* model N_IConcat_bytes_pair *)(* Allocates [size1 + size2] *)letcost_N_IConcat_bytes_pairsize1size2=letopenS_syntaxinletv0=S.safe_intsize1+S.safe_intsize2inS.safe_int45+(v0lsr1)(* model N_IConcat_string_pair *)(* Allocates [size1 + size2] *)letcost_N_IConcat_string_pairsize1size2=letopenS_syntaxinletv0=S.safe_intsize1+S.safe_intsize2inS.safe_int45+(v0lsr1)(* model N_ICons_list *)letcost_N_ICons_list=S.safe_int10(* model N_ICons_none *)letcost_N_ICons_none=S.safe_int10(* model N_ICons_pair *)letcost_N_ICons_pair=S.safe_int10(* model N_ICons_some *)letcost_N_ICons_some=S.safe_int10(* model N_IConst *)letcost_N_IConst=S.safe_int10(* model N_IContract *)letcost_N_IContract=S.safe_int30(* model N_ICreate_contract *)letcost_N_ICreate_contract=S.safe_int60(* model N_IDiff_timestamps *)(* Approximating 0.077922 x term *)letcost_N_IDiff_timestamps=cost_linear_op_int(* model N_IDig *)(* Approximating 6.750442 x term *)letcost_N_IDigsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int30+((S.safe_int6*v0)+(v0lsr1)+(v0lsr2))(* model N_IDip *)letcost_N_IDip=S.safe_int10(* model N_IDipN *)(* Approximating 4.05787663635 x term *)letcost_N_IDipNsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int15+(S.safe_int4*v0)(* model N_IView *)letcost_N_IView=S.safe_int1460(* model N_IDrop *)letcost_N_IDrop=S.safe_int10(* model N_IDropN *)(* Approximating 2.713108 x term *)letcost_N_IDropNsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int30+(S.safe_int2*v0)+(v0lsr1)+(v0lsr3)(* model N_IDug *)(* Approximating 6.718396 x term *)letcost_N_IDugsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int35+((S.safe_int6*v0)+(v0lsr1)+(v0lsr2))(* model N_IDup *)letcost_N_IDup=S.safe_int10(* model N_IDupN *)(* Approximating 1.222263 x term *)letcost_N_IDupNsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int20+v0+(v0lsr2)letcost_div_intsize1size2=(* Allocates at most [size1] bytes *)letq=size1-size2inletopenS_syntaxinletv1=S.safe_intsize1inifCompare.Int.(q<0)thenS.safe_int105+(v1lsr1)elseletv0=S.safe_intq*S.safe_intsize2inS.safe_int105+(v0lsr10)+(v0lsr11)+(v0lsr13)+(v1lsr1)(* model N_IEdiv_int *)(* Approximating 0.001591 x term *)letcost_N_IEdiv_int=cost_div_int(* model N_IEdiv_nat *)(* Approximating 0.001605 x term *)letcost_N_IEdiv_nat=cost_div_int(* model N_IEdiv_tez *)letcost_N_IEdiv_tez=S.safe_int80(* model N_IEmpty_big_map *)letcost_N_IEmpty_big_map=S.safe_int300(* model N_IEmpty_map *)letcost_N_IEmpty_map=S.safe_int300(* model N_IEmpty_set *)letcost_N_IEmpty_set=S.safe_int300(* model N_IEq *)letcost_N_IEq=S.safe_int10(* model N_IExec *)letcost_N_IExec=S.safe_int10(* model N_IFailwith *)(* let cost_N_IFailwith = S.safe_int 105 *)(* model N_IGe *)letcost_N_IGe=S.safe_int10(* model N_IGt *)letcost_N_IGt=S.safe_int10(* model N_IHalt *)letcost_N_IHalt=S.safe_int15(* model N_IHash_key *)letcost_N_IHash_key=S.safe_int605(* model N_IIf *)letcost_N_IIf=S.safe_int10(* model N_IIf_cons *)letcost_N_IIf_cons=S.safe_int10(* model N_IIf_left *)letcost_N_IIf_left=S.safe_int10(* model N_IIf_none *)letcost_N_IIf_none=S.safe_int10(* model N_IOpt_map *)letcost_N_IOpt_map=S.safe_int10(* model N_IImplicit_account *)letcost_N_IImplicit_account=S.safe_int10(* model N_IInt_bls12_381_z_fr *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IInt_bls12_381_z_fr=S.safe_int115(* model N_IInt_nat *)letcost_N_IInt_nat=S.safe_int10(* model N_IIs_nat *)letcost_N_IIs_nat=S.safe_int10(* model N_IKeccak *)(* Approximating 8.276352 x term *)letcost_N_IKeccaksize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int1350+((S.safe_int8*v0)+(v0lsr2))(* model N_ILambda *)letcost_N_ILambda=S.safe_int10(* model N_ILe *)letcost_N_ILe=S.safe_int10(* model N_ILeft *)letcost_N_ILeft=S.safe_int10(* model N_ILevel *)letcost_N_ILevel=S.safe_int10(* model N_IList_iter *)letcost_N_IList_iter=S.safe_int20(* model N_IList_map *)letcost_N_IList_map=S.safe_int20(* model N_IList_size *)letcost_N_IList_size=S.safe_int10(* model N_ILoop *)letcost_N_ILoop=S.safe_int10(* model N_ILoop_left *)letcost_N_ILoop_left=S.safe_int10(* model N_ILsl_nat *)(* Allocates at most [size + 256] bytes *)letcost_N_ILsl_natsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int128+(v0lsr1)(* model N_ILsr_nat *)(* Allocates at most [size] bytes*)letcost_N_ILsr_natsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int45+(v0lsr1)(* model N_ILsl_bytes *)(* Allocates [size + shift / 8] bytes *)(* fun size1 -> fun size2 -> ((63.0681507316 + (0.667539714647 * size1)) + (0. * size2)) *)letcost_N_ILsl_bytessizeshift=letopenS_syntaxinletv1=S.safe_intsizeinletv0=S.safe_intshiftinS.safe_int65+(v1lsr1)+(v1lsr2)+(v0lsr4)(* model N_ILsr_bytes *)(* Allocates [max 0 (size - shift / 8)] bytes *)(* fun size1 -> fun size2 -> let q = (size1 - (size2 * 0.125)) in (53.9248173983 + (0.658785032381 * (if (0 < q) then q else 0))) *)letcost_N_ILsr_bytessizeshift=letq=size-(shiftlsr3)inletopenS.SyntaxinifCompare.Int.(q<0)thenS.safe_int55elseletv0=S.safe_intqinS.safe_int55+(v0lsr1)+(v0lsr2)(* model N_ILt *)letcost_N_ILt=S.safe_int10(* model N_IMap_get *)(* Approximating 0.048359 x term *)letcost_N_IMap_getsize1size2=letopenS_syntaxinletsize1=S.safe_intsize1inletsize2=S.safe_intsize2inletv0=size1*log2size2inS.safe_int45+(v0lsr5)+(v0lsr6)(* model N_IMap_get_and_update *)(* Approximating 0.145661 x term *)letcost_N_IMap_get_and_updatesize1size2=letopenS_syntaxinletsize1=S.safe_intsize1inletsize2=S.safe_intsize2inletv0=size1*log2size2inS.safe_int75+(v0lsr3)+(v0lsr6)(* model N_IMap_iter *)(* Approximating 7.621331 x term *)letcost_N_IMap_itersize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int50+(S.safe_int7*v0)+(v0lsr1)+(v0lsr3)(* model N_IMap_map *)(* Approximating 8.38965386732 x term *)letcost_N_IMap_mapsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int40+((S.safe_int8*v0)+(v0lsr1))(* model N_IMap_mem *)(* Approximating 0.048446 x term *)letcost_N_IMap_memsize1size2=letopenS_syntaxinletsize1=S.safe_intsize1inletsize2=S.safe_intsize2inletv0=size1*log2size2inS.safe_int45+(v0lsr5)+(v0lsr6)(* model N_IMap_size *)letcost_N_IMap_size=S.safe_int10(* model N_IMap_update *)(* Approximating 0.097072 x term *)letcost_N_IMap_updatesize1size2=letopenS_syntaxinletsize1=S.safe_intsize1inletsize2=S.safe_intsize2inletv0=size1*log2size2inS.safe_int55+(v0lsr4)+(v0lsr5)(* model N_IMul_bls12_381_fr *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IMul_bls12_381_fr=S.safe_int45(* model N_IMul_bls12_381_fr_z *)(* Approximating 1.059386 x term *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IMul_bls12_381_fr_zsize1=letopenS_syntaxinletv0=S.safe_intsize1inS.safe_int265+v0+(v0lsr4)(* model N_IMul_bls12_381_g1 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IMul_bls12_381_g1=S.safe_int103_000(* model N_IMul_bls12_381_g2 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IMul_bls12_381_g2=S.safe_int220_000(* model N_IMul_bls12_381_z_fr *)(* Approximating 1.068674 x term *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IMul_bls12_381_z_frsize1=letopenS_syntaxinletv0=S.safe_intsize1inS.safe_int265+v0+(v0lsr4)letcost_mulsize1size2=letopenS_syntaxinleta=S.add(S.safe_intsize1)(S.safe_intsize2)inletv0=a*log2ainS.safe_int55+(v0lsr1)+(v0lsr2)+(v0lsr4)(* model N_IMul_int *)(* Approximating 0.857931 x term *)letcost_N_IMul_int=cost_mul(* model N_IMul_nat *)(* Approximating 0.861823 x term *)letcost_N_IMul_nat=cost_mul(* model N_INeg_bls12_381_fr *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_INeg_bls12_381_fr=S.safe_int30(* model N_INeg_bls12_381_g1 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_INeg_bls12_381_g1=S.safe_int50(* model N_INeg_bls12_381_g2 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_INeg_bls12_381_g2=S.safe_int70(* model N_INeg *)(* Allocates [size] bytes *)letcost_N_INegsize=letopenS_syntaxinS.safe_int25+(S.safe_intsizelsr1)(* model N_INeq *)letcost_N_INeq=S.safe_int10(* model N_INil *)letcost_N_INil=S.safe_int10(* model N_INot *)letcost_N_INot=S.safe_int10(* model N_INot_int *)(* Allocates [size] bytes *)letcost_N_INot_intsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int25+(v0lsr1)(* model N_INot_bytes *)(* Allocates [size] bytes *)letcost_N_INot_bytessize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int30+(v0lsr1)(* model N_INow *)letcost_N_INow=S.safe_int10(* model N_IMin_block_time *)letcost_N_IMin_block_time=S.safe_int20(* model N_IOpen_chest *)(* 612000 + chest * 19 + time * 19050 *)letcost_N_IOpen_chesttimechest=letopenS_syntaxinletv0=S.safe_intchestinletv1=S.safe_inttimeinS.safe_int612_000+(S.safe_int19*v0)+(S.safe_int19050*v1)(* model N_IOr *)letcost_N_IOr=S.safe_int10(* model N_IOr_nat *)(* Approximating 0.075758 x term *)letcost_N_IOr_nat=cost_linear_op_int(* model N_IOr_bytes *)(* Allocates [max size1 size2] bytes *)(* fun size1 -> fun size2 -> (32.5381507316 + (0.232425212131 * (max size1 size2))) *)letcost_N_IOr_bytessize1size2=letopenS_syntaxinletv0=S.safe_int(Compare.Int.maxsize1size2)inS.safe_int35+(v0lsr1)(* model N_IPairing_check_bls12_381 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_N_IPairing_check_bls12_381size=S.add(S.safe_int450_000)(S.mul(S.safe_int342_500)(S.safe_intsize))(* model N_IRead_ticket *)letcost_N_IRead_ticket=S.safe_int10(* model N_IRight *)letcost_N_IRight=S.safe_int10(* model N_ISapling_empty_state *)letcost_N_ISapling_empty_state=S.safe_int300(* model N_ISelf_address *)letcost_N_ISelf_address=S.safe_int10(* model N_ISelf *)letcost_N_ISelf=S.safe_int10(* model N_ISender *)letcost_N_ISender=S.safe_int10(* model N_ISet_delegate *)letcost_N_ISet_delegate=S.safe_int60(* model N_ISet_iter *)(* Approximating 7.633555 x term *)letcost_N_ISet_itersize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int50+(S.safe_int7*v0)+(v0lsr1)+(v0lsr3)(* model N_ISet_size *)letcost_N_ISet_size=S.safe_int10(* model N_ISha256 *)(* Approximating 4.763264 x term *)letcost_N_ISha256size=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int600+((S.safe_int4*v0)+(v0lsr1)+(v0lsr2))(* model N_ISha3 *)(* Approximating 8.362339 x term *)letcost_N_ISha3=cost_N_IKeccak(* model N_ISha512 *)(* Approximating 3.074641 x term *)letcost_N_ISha512size=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int680+(S.safe_int3*v0)(* model N_ISlice_bytes *)(* Allocates [size] bytes *)letcost_N_ISlice_bytessize=letopenS_syntaxinS.safe_int25+(S.safe_intsizelsr1)(* model N_ISlice_string *)(* Allocates [size] bytes *)letcost_N_ISlice_stringsize=letopenS_syntaxinS.safe_int25+(S.safe_intsizelsr1)(* model N_ISource *)letcost_N_ISource=S.safe_int10(* model N_ISplit_ticket *)(* Allocates [max size1 size2] *)letcost_N_ISplit_ticketsize1size2=letopenS_syntaxinletv1=S.safe_int(Compare.Int.maxsize1size2)inS.safe_int40+(v1lsr1)(* model N_IString_size *)letcost_N_IString_size=S.safe_int15(* model N_ISub_int *)(* Approximating 0.077849 x term *)letcost_N_ISub_int=cost_linear_op_int(* model N_ISub_tez *)letcost_N_ISub_tez=S.safe_int15(* model N_ISub_tez_legacy *)letcost_N_ISub_tez_legacy=S.safe_int20(* model N_ISub_timestamp_seconds *)(* Approximating 0.077794 x term *)letcost_N_ISub_timestamp_seconds=cost_linear_op_int(* model N_ISwap *)letcost_N_ISwap=S.safe_int10(* model N_ITicket *)letcost_N_ITicket=S.safe_int10(* model N_ITotal_voting_power *)letcost_N_ITotal_voting_power=S.safe_int450(* model N_ITransfer_tokens *)letcost_N_ITransfer_tokens=S.safe_int60(* model N_IUncomb *)(* Approximating 3.944710 x term *)letcost_N_IUncombsize=letopenS_syntaxinletv0=S.safe_intsizeinS.safe_int25+(S.safe_int4*v0)(* model N_IUnpair *)letcost_N_IUnpair=S.safe_int10(* model N_IVoting_power *)letcost_N_IVoting_power=S.safe_int640(* model N_IXor *)letcost_N_IXor=S.safe_int15(* model N_IXor_nat *)(* Approximating 0.075601 x term *)letcost_N_IXor_nat=cost_linear_op_int(* model N_IXor_bytes *)(* Allocates [max size1 size2] bytes *)(* fun size1 -> fun size2 -> (38.5110342369 + (0.397946895815 * (max size1 size2))) *)letcost_N_IXor_bytessize1size2=letopenS_syntaxinletv0=S.safe_int(Compare.Int.maxsize1size2)inS.safe_int40+(v0lsr1)(* model N_KCons *)letcost_N_KCons=S.safe_int10(* model N_KList_exit_body *)letcost_N_KList_exit_body=S.safe_int10(* model N_KLoop_in *)letcost_N_KLoop_in=S.safe_int10(* model N_KLoop_in_left *)letcost_N_KLoop_in_left=S.safe_int10(* model N_KNil *)letcost_N_KNil=S.safe_int15(* model N_KReturn *)letcost_N_KReturn=S.safe_int10(* model N_KView_exit *)letcost_N_KView_exit=S.safe_int20(* model N_KMap_head *)letcost_N_KMap_head=S.safe_int20(* model N_KUndip *)letcost_N_KUndip=S.safe_int10(* model DECODING_BLS_FR *)(* when benchmarking, compile bls12-381 without ADX, see
https://gitlab.com/dannywillems/ocaml-bls12-381/-/blob/71d0b4d467fbfaa6452d702fcc408d7a70916a80/README.md#install
*)letcost_DECODING_BLS_FR=S.safe_int120(* model DECODING_BLS_G1 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_DECODING_BLS_G1=S.safe_int54_600(* model DECODING_BLS_G2 *)(* when benchmarking, compile bls12-381 without ADX *)letcost_DECODING_BLS_G2=S.safe_int69_000(* model B58CHECK_DECODING_CHAIN_ID *)letcost_B58CHECK_DECODING_CHAIN_ID=S.safe_int1_600(* model B58CHECK_DECODING_PUBLIC_KEY_HASH_ed25519 *)letcost_B58CHECK_DECODING_PUBLIC_KEY_HASH_ed25519=S.safe_int3_300(* model B58CHECK_DECODING_PUBLIC_KEY_HASH_p256 *)letcost_B58CHECK_DECODING_PUBLIC_KEY_HASH_p256=S.safe_int3_300(* model B58CHECK_DECODING_PUBLIC_KEY_HASH_secp256k1 *)letcost_B58CHECK_DECODING_PUBLIC_KEY_HASH_secp256k1=S.safe_int3_300(* model B58CHECK_DECODING_PUBLIC_KEY_HASH_bls *)letcost_B58CHECK_DECODING_PUBLIC_KEY_HASH_bls=S.safe_int3_600(* model B58CHECK_DECODING_PUBLIC_KEY_ed25519 *)letcost_B58CHECK_DECODING_PUBLIC_KEY_ed25519=S.safe_int4_200(* model B58CHECK_DECODING_PUBLIC_KEY_p256 *)letcost_B58CHECK_DECODING_PUBLIC_KEY_p256=S.safe_int325_000(* model B58CHECK_DECODING_PUBLIC_KEY_secp256k1 *)letcost_B58CHECK_DECODING_PUBLIC_KEY_secp256k1=S.safe_int9_000(* model B58CHECK_DECODING_PUBLIC_KEY_bls *)letcost_B58CHECK_DECODING_PUBLIC_KEY_bls=S.safe_int79_000(* model B58CHECK_DECODING_SIGNATURE_ed25519 *)letcost_B58CHECK_DECODING_SIGNATURE_ed25519=S.safe_int6_400(* model B58CHECK_DECODING_SIGNATURE_p256 *)letcost_B58CHECK_DECODING_SIGNATURE_p256=S.safe_int6_400(* model B58CHECK_DECODING_SIGNATURE_secp256k1 *)letcost_B58CHECK_DECODING_SIGNATURE_secp256k1=S.safe_int6_400(* model B58CHECK_DECODING_SIGNATURE_bls *)letcost_B58CHECK_DECODING_SIGNATURE_bls=S.safe_int6_400(* model ENCODING_BLS_FR *)letcost_ENCODING_BLS_FR=S.safe_int80(* model ENCODING_BLS_G1 *)letcost_ENCODING_BLS_G1=S.safe_int3200(* model ENCODING_BLS_G2 *)letcost_ENCODING_BLS_G2=S.safe_int3900(* model B58CHECK_ENCODING_CHAIN_ID *)letcost_B58CHECK_ENCODING_CHAIN_ID=S.safe_int1_800(* model B58CHECK_ENCODING_PUBLIC_KEY_HASH_ed25519 *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_HASH_ed25519=S.safe_int3_200(* model B58CHECK_ENCODING_PUBLIC_KEY_HASH_p256 *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_HASH_p256=S.safe_int3_200(* model B58CHECK_ENCODING_PUBLIC_KEY_HASH_secp256k1 *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_HASH_secp256k1=S.safe_int3_200(* model B58CHECK_ENCODING_PUBLIC_KEY_HASH_bls *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_HASH_bls=S.safe_int3_200(* model B58CHECK_ENCODING_PUBLIC_KEY_ed25519 *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_ed25519=S.safe_int4_500(* model B58CHECK_ENCODING_PUBLIC_KEY_p256 *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_p256=S.safe_int4_550(* model B58CHECK_ENCODING_PUBLIC_KEY_secp256k1 *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_secp256k1=S.safe_int4_950(* model B58CHECK_ENCODING_PUBLIC_KEY_bls *)letcost_B58CHECK_ENCODING_PUBLIC_KEY_bls=S.safe_int5_900(* model B58CHECK_ENCODING_SIGNATURE_ed25519 *)letcost_B58CHECK_ENCODING_SIGNATURE_ed25519=S.safe_int8_300(* model B58CHECK_ENCODING_SIGNATURE_p256 *)letcost_B58CHECK_ENCODING_SIGNATURE_p256=S.safe_int8_300(* model B58CHECK_ENCODING_SIGNATURE_secp256k1 *)letcost_B58CHECK_ENCODING_SIGNATURE_secp256k1=S.safe_int8_300(* model B58CHECK_ENCODING_SIGNATURE_bls *)letcost_B58CHECK_ENCODING_SIGNATURE_bls=S.safe_int8_300(* model DECODING_CHAIN_ID *)letcost_DECODING_CHAIN_ID=S.safe_int50(* model DECODING_PUBLIC_KEY_HASH_ed25519 *)letcost_DECODING_PUBLIC_KEY_HASH_ed25519=S.safe_int60(* model DECODING_PUBLIC_KEY_HASH_p256 *)letcost_DECODING_PUBLIC_KEY_HASH_p256=S.safe_int60(* model DECODING_PUBLIC_KEY_HASH_secp256k1 *)letcost_DECODING_PUBLIC_KEY_HASH_secp256k1=S.safe_int60(* model DECODING_PUBLIC_KEY_HASH_bls *)letcost_DECODING_PUBLIC_KEY_HASH_bls=S.safe_int60(* model DECODING_PUBLIC_KEY_ed25519 *)letcost_DECODING_PUBLIC_KEY_ed25519=S.safe_int60(* model DECODING_PUBLIC_KEY_p256 *)letcost_DECODING_PUBLIC_KEY_p256=S.safe_int18_800(* model DECODING_PUBLIC_KEY_secp256k1 *)letcost_DECODING_PUBLIC_KEY_secp256k1=S.safe_int4_900(* model DECODING_PUBLIC_KEY_bls *)letcost_DECODING_PUBLIC_KEY_bls=S.safe_int74_000(* model DECODING_SIGNATURE_ed25519 *)letcost_DECODING_SIGNATURE_ed25519=S.safe_int35(* model DECODING_SIGNATURE_p256 *)letcost_DECODING_SIGNATURE_p256=S.safe_int35(* model DECODING_SIGNATURE_secp256k1 *)letcost_DECODING_SIGNATURE_secp256k1=S.safe_int35(* model DECODING_SIGNATURE_bls *)letcost_DECODING_SIGNATURE_bls=S.safe_int40(* model DECODING_Chest_key *)letcost_DECODING_Chest_key=S.safe_int5900(* model DECODING_Chest *)(* Approximating 0.039349 x term *)letcost_DECODING_Chestbytes=letopenS_syntaxinletv0=S.safe_intbytesinS.safe_int7400+(v0lsr5)+(v0lsr7)(* model ENCODING_CHAIN_ID *)letcost_ENCODING_CHAIN_ID=S.safe_int50(* model ENCODING_PUBLIC_KEY_HASH_ed25519 *)letcost_ENCODING_PUBLIC_KEY_HASH_ed25519=S.safe_int70(* model ENCODING_PUBLIC_KEY_HASH_p256 *)letcost_ENCODING_PUBLIC_KEY_HASH_p256=S.safe_int70(* model ENCODING_PUBLIC_KEY_HASH_secp256k1 *)letcost_ENCODING_PUBLIC_KEY_HASH_secp256k1=S.safe_int70(* model ENCODING_PUBLIC_KEY_HASH_bls *)letcost_ENCODING_PUBLIC_KEY_HASH_bls=S.safe_int80(* model ENCODING_PUBLIC_KEY_ed25519 *)letcost_ENCODING_PUBLIC_KEY_ed25519=S.safe_int80(* model ENCODING_PUBLIC_KEY_p256 *)letcost_ENCODING_PUBLIC_KEY_p256=S.safe_int90(* model ENCODING_PUBLIC_KEY_secp256k1 *)letcost_ENCODING_PUBLIC_KEY_secp256k1=S.safe_int455(* model ENCODING_PUBLIC_KEY_bls *)letcost_ENCODING_PUBLIC_KEY_bls=S.safe_int90(* model ENCODING_SIGNATURE_ed25519 *)letcost_ENCODING_SIGNATURE_ed25519=S.safe_int45(* model ENCODING_SIGNATURE_p256 *)letcost_ENCODING_SIGNATURE_p256=S.safe_int45(* model ENCODING_SIGNATURE_secp256k1 *)letcost_ENCODING_SIGNATURE_secp256k1=S.safe_int45(* model ENCODING_SIGNATURE_bls *)letcost_ENCODING_SIGNATURE_bls=S.safe_int55(* model ENCODING_Chest_key *)letcost_ENCODING_Chest_key=S.safe_int10_000(* model ENCODING_Chest *)(* Approximating 0.120086 x term *)letcost_ENCODING_Chestplaintext_size=letopenS_syntaxinletv0=S.safe_intplaintext_sizeinS.safe_int12_200+(v0lsr3)(* model TIMESTAMP_READABLE_DECODING *)(* Approximating 0.045400 x term *)letcost_TIMESTAMP_READABLE_DECODINGbytes=letopenS_syntaxinletb=S.safe_intbytesinletv0=S.mul(S.sqrtb)binS.safe_int105+((v0lsr5)+(v0lsr6))(* model TIMESTAMP_READABLE_ENCODING *)letcost_TIMESTAMP_READABLE_ENCODING=S.safe_int820(* model CHECK_PRINTABLE *)letcost_CHECK_PRINTABLEsize=letopenS_syntaxinS.safe_int14+(S.safe_int10*S.safe_intsize)(* model IEmit *)letcost_N_IEmit=S.safe_int30