UNPKG

@settlemint/solidity-zeto

Version:

Smart contract set to build Zero Knowledge tokens in SettleMint

1 lines 142 kB
{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"__ZetoFungible_init","inputs":[{"name":"_depositVerifier","type":"address","internalType":"contract Groth16Verifier_CheckHashesValue"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_deposit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"utxo","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_withdrawWithNullifiers","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"nullifiers","type":"uint256[]","internalType":"uint256[]"},{"name":"output","type":"uint256","internalType":"uint256"},{"name":"root","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"utxo","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getArbiter","inputs":[],"outputs":[{"name":"","type":"uint256[2]","internalType":"uint256[2]"}],"stateMutability":"view"},{"type":"function","name":"getRoot","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_verifier","type":"address","internalType":"contract Groth16Verifier_AnonEncNullifierNonRepudiation"},{"name":"_depositVerifier","type":"address","internalType":"contract Groth16Verifier_CheckHashesValue"},{"name":"_withdrawVerifier","type":"address","internalType":"contract Groth16Verifier_CheckNullifierValue"},{"name":"_batchVerifier","type":"address","internalType":"contract Groth16Verifier_AnonEncNullifierNonRepudiationBatch"},{"name":"_batchWithdrawVerifier","type":"address","internalType":"contract Groth16Verifier_CheckNullifierValueBatch"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lockProof","inputs":[{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"delegate","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"utxos","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setArbiter","inputs":[{"name":"_arbiter","type":"uint256[2]","internalType":"uint256[2]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20","inputs":[{"name":"_erc20","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"nullifiers","type":"uint256[]","internalType":"uint256[]"},{"name":"outputs","type":"uint256[]","internalType":"uint256[]"},{"name":"root","type":"uint256","internalType":"uint256"},{"name":"encryptionNonce","type":"uint256","internalType":"uint256"},{"name":"ecdhPublicKey","type":"uint256[2]","internalType":"uint256[2]"},{"name":"encryptedValuesForReceiver","type":"uint256[]","internalType":"uint256[]"},{"name":"encryptedValuesForAuthority","type":"uint256[]","internalType":"uint256[]"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"nullifiers","type":"uint256[]","internalType":"uint256[]"},{"name":"output","type":"uint256","internalType":"uint256"},{"name":"root","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UTXOMint","inputs":[{"name":"outputs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"submitter","type":"address","indexed":true,"internalType":"address"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"UTXOTransferNonRepudiation","inputs":[{"name":"inputs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"outputs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"encryptionNonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ecdhPublicKey","type":"uint256[2]","indexed":false,"internalType":"uint256[2]"},{"name":"encryptedValuesForReceiver","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"encryptedValuesForAuthority","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"submitter","type":"address","indexed":true,"internalType":"address"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"IdentityNotRegistered","inputs":[{"name":"addr","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UTXOAlreadyOwned","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXOAlreadySpent","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXOArrayTooLarge","inputs":[{"name":"maxAllowed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXODuplicate","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXONotMinted","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXORootNotFound","inputs":[{"name":"root","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"WithdrawArrayTooLarge","inputs":[{"name":"maxAllowed","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a08060405234602957306080526133b9908161002e823960805181818161068301526118500152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806304b10b9f1461014457806312c0fed21461013f5780634f1ef2861461013a57806352d1902d146101355780635ca1e16514610130578063715018a61461012b578063732952411461012657806383f0ef49146101215780638bb2513b1461011c5780638da5cb5b146101175780639b2e8b52146101125780639e2a71941461010d5780639fcc50af14610108578063ad3cb1cc14610103578063c29a6fda146100fe578063cc2a9a5b146100f9578063cffe00f9146100f4578063f2fde38b146100ef5763f756356a146100ea575f80fd5b610f8b565b610f5e565b610ef9565b610c35565b610bcd565b610b57565b610aef565b610ad5565b610a4e565b6109fc565b610999565b610922565b6108cf565b6107ab565b6106fb565b61065c565b6105d7565b61041e565b61030a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761019957604052565b610149565b906101ac6040519283610176565b565b67ffffffffffffffff81116101995760051b60200190565b9080601f830112156102235781356101dd816101ae565b926101eb6040519485610176565b81845260208085019260051b82010192831161022357602001905b8282106102135750505090565b8135815260209182019101610206565b5f80fd5b8060a31215610223576040519061023f604083610176565b819060c411610223576084905b60c4821061025957505090565b813581526020918201910161024c565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc6101009101126102235761010490565b60031961010091011261022357600490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261022357604490565b9181601f840112156102235782359167ffffffffffffffff8311610223576020838186019501011161022357565b34610223576102206003193601126102235760043567ffffffffffffffff81116102235761033c9036906004016101c6565b60243567ffffffffffffffff81116102235761035c9036906004016101c6565b90604435916064359161036e36610227565b60c43567ffffffffffffffff81116102235761038e9036906004016101c6565b60e43567ffffffffffffffff8111610223576103ae9036906004016101c6565b906103b836610269565b92610204359667ffffffffffffffff8811610223576103fc986103e26103ea9936906004016102dc565b9890976114ad565b60405190151581529081906020820190565b0390f35b73ffffffffffffffffffffffffffffffffffffffff81160361022357565b34610223576101206003193601126102235761058261043c3661029a565b610542610104359161044d83610400565b6104b460c061045d61010061019e565b8335815292602081013560208501526104a061049360408301803560408801526104878160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e08201526040516104dd816104cf602082019485612ad6565b03601f198101835282610176565b51902073ffffffffffffffffffffffffffffffffffffffff610523610509835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b16158015610584575b610535906117ac565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b5061053561059c610509835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff163314905061052c565b67ffffffffffffffff811161019957601f01601f191660200190565b6040600319360112610223576004356105ef81610400565b6024359067ffffffffffffffff821161022357366023830112156102235781600401359061061c826105bb565b9161062a6040519384610176565b8083523660248286010111610223576020815f92602461058297018387013784010152611837565b5f91031261022357565b34610223575f6003193601126102235773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106d35760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610223575f600319360112610223576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af480156107a6576103fc915f91610777575b506040519081529081906020820190565b610799915060203d60201161079f575b6107918183610176565b8101906119e2565b5f610766565b503d610787565b611213565b34610223575f600319360112610223576107c3612b02565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b610180600319820112610223576004359160243567ffffffffffffffff81116102235782610897916004016101c6565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261022357608490565b346102235761058261091d6109086108e636610867565b926108f781979596929397516113b7565b908761090283611156565b526121da565b95908095610917848984612331565b50611b3d565b61299b565b346102235760406003193601126102235736602312156102235760405161094a604082610176565b8036604411610223576004905b604482106109895782610968612b02565b5f5b6002811061097457005b6001906020835193019281603a01550161096a565b8135815260209182019101610957565b346102235760406003193601126102235760043567ffffffffffffffff8111610223576109ca9036906004016101c6565b6024359067ffffffffffffffff8211610223576109ee6105829236906004016102dc565b916109f7612b02565b612b93565b34610223575f60031936011261022357602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346102235761016060031936011261022357602435600435610a6f366102ac565b906101443567ffffffffffffffff8111610223578392610a96610a9e9236906004016102dc565b9490936120d1565b6040805190610aad8183610176565b60018252601f1901366020830137805115610ad057610582936020820152612b93565b611129565b3461022357610582610ae636610867565b93929092611b3d565b346102235760206003193601126102235773ffffffffffffffffffffffffffffffffffffffff600435610b2181610400565b610b29612e95565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b34610223575f600319360112610223576040805190610b768183610176565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b346102235760206003193601126102235773ffffffffffffffffffffffffffffffffffffffff600435610bff81610400565b610c07612b02565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b346102235760c060031936011261022357600435610c5281610400565b60243590610c5f82610400565b604435610c6b81610400565b606435610c7781610400565b60843590610c8482610400565b60a43592610c9184610400565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff610cd760ff60408a901c16159867ffffffffffffffff1690565b1680159081610eca575b6001149081610ec0575b159081610eb7575b50610e8f57610d749587610d6b60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610e1457611dd2565b610d7a57005b610de57fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b610e8a680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b611dd2565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610cf3565b303b159150610ceb565b889150610ce1565b905f905b60028210610ee357505050565b6020806001928551815201930191019091610ed6565b34610223575f600319360112610223576040808051610f188282610176565b369037805190603a5f835b60028210610f48576103fc8486610f3a8282610176565b815192838093810192610ed2565b6001602081928554815201930191019091610f23565b3461022357602060031936011261022357610582600435610f7e81610400565b610f86612b02565b611fa5565b346102235761014060031936011261022357610582600435602435610faf366102ac565b916120d1565b15610fbc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b1561102157565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605760248201527f436970686572205465787420666f7220417574686f72697479206d757374206860448201527f6176652061206c656e677468206f6620313620666f72206e6f206d6f7265207460648201527f68616e203220696e70757473206f72206f7574707574730000000000000000006084820152fd5b604051906104806110dc8184610176565b368337565b604051906111806110dc8184610176565b6040519061110160e083610176565b60e0368337565b604051906102e06110dc8184610176565b6040908151916110dc8184610176565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805115610ad05760200190565b8051821015610ad05760209160051b010190565b906024811015610ad05760051b0190565b90816020910312610223575180151581036102235790565b905f905b600282106111b157505050565b60408082818660019537019301910190916111a4565b909493926040906111e761010094836105808601998637838501906111a0565b60c0830137015f905b602482106111fd57505050565b60208060019285518152019301910190916111f0565b6040513d5f823e3d90fd5b1561122557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b1561128a57565b60c46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606c60248201527f436970686572205465787420666f7220417574686f72697479206d757374206860448201527f6176652061206c656e677468206f66203634207769746820696e707574206f7260648201527f206f757470757473206e756d626572206d6f7265207468616e203220616e642060848201527f6c657373207468616e203130000000000000000000000000000000000000000060a4820152fd5b90608c811015610ad05760051b0190565b9094939260409061138b61010094836112808601998637838501906111a0565b60c0830137015f905b608c82106113a157505050565b6020806001928551815201930191019091611394565b906113c1826101ae565b6113ce6040519182610176565b828152601f196113de82946101ae565b0190602036910137565b90602080835192838152019201905f5b8181106114055750505090565b82518452602093840193909201916001016113f8565b601f8260209493601f1993818652868601375f8582860101520116010190565b969461148161149c9561147161148e956114636114aa9d9b98966101008e81815201906113e8565b8c810360208e0152906113e8565b9360408b015260608a0190610ed2565b87820360a08901526113e8565b9085820360c08701526113e8565b9260e081850391015261141b565b90565b9386866114c683999a94879e989d999c9d9796976121da565b9d878f9592986114da6114df91888c612331565b610fb5565b600289511180156117a1575b156116cd57611507956115016040875114611283565b89612849565b906115106110e1565b915f5b608c81106116ae57505061159f9160209161155f61154660395473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f1438cd2200000000000000000000000000000000000000000000000000000000845260c081019060408101906004860161136b565b03915afa80156107a6576115ba915f9161167f575b5061121e565b6115c4898361299b565b6115ce87516113b7565b986115d987516113b7565b945f5b895181101561160557808c6115fe826115f76001958f611163565b5192611163565b52016115dc565b50929598919497509295985f5b8a5181101561163a57806116286001928d611163565b51611633828c611163565b5201611612565b50611677949699507f2de65d88bad801ae25960ccc943b3a24033838692a43078533014e938562b02b979192939598604051978897339b8961143b565b0390a2600190565b6116a1915060203d6020116116a7575b6116998183610176565b810190611188565b5f6115b4565b503d61168f565b806116bb60019284611163565b516116c6828761135a565b5201611513565b6116e4956116de601087511461101a565b89612680565b906116ed6110cb565b915f5b602481106117825750506117639160209161172361154660385473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f881453ac00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016111c7565b03915afa80156107a65761177d915f9161167f575061121e565b6115ba565b8061178f60019284611163565b5161179a8287611177565b52016116f0565b5060028651116114eb565b156117b357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168030149081156119a0575b506106d357611888612b02565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f948161197f575b5061191e577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403611952576101ac9293506130b9565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b61199991955060203d60201161079f576107918183610176565b935f6118d6565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f61187b565b90816020910312610223575190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b906007811015610ad05760051b0190565b90949392604090611a4f61010094836101e08601998637838501906111a0565b60c0830137015f905b60078210611a6557505050565b6020806001928551815201930191019091611a58565b906017811015610ad05760051b0190565b90949392604090611aac61010094836103e08601998637838501906111a0565b60c0830137015f905b60178210611ac257505050565b6020806001928551815201930191019091611ab5565b15611adf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4661696c656420746f207472616e7366657220455243323020746f6b656e73006044820152fd5b9392909160028351115f14611d03576017835111611cd657611b5f9285612dde565b90611b68611108565b915f5b60178110611cb7575050611bde91602091611b9e61154660375473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fa0c2a19a00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611a8c565b03915afa80156107a6575f92611c00611c66926020948691611ca0575061121e565b611c2261154660355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101929092529093849283919082906044820190565b03925af180156107a6576101ac915f91611c81575b50611ad8565b611c9a915060203d6020116116a7576116998183610176565b5f611c7b565b6116a19150853d87116116a7576116998183610176565b80611cc460019284611163565b51611ccf8287611a7b565b5201611b6b565b7f71798fb5000000000000000000000000000000000000000000000000000000005f52601760045260245ffd5b611d0d9285612d0a565b90611d166110f2565b915f5b60078110611db3575050611d8c91602091611d4c61154660365473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fc894e75700000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611a2f565b03915afa80156107a6575f92611dae611c66926020948691611ca0575061121e565b611c00565b80611dc060019284611163565b51611dcb8287611a1e565b5201611d19565b611dfc90959395929192611de4612e95565b611dec612e95565b611df4612e95565b610f86612e95565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__92833b15610223575f604494604051958680927f9e43b81300000000000000000000000000000000000000000000000000000000825260016004830152604060248301525af49384156107a6576101ac9673ffffffffffffffffffffffffffffffffffffffff80948193611f5498611f95575b50611e8d612e95565b611e95612e95565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655167fffffffffffffffffffffffff0000000000000000000000000000000000000000603754161760375573ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006039541617603955565b5f611f9f91610176565b5f611e84565b73ffffffffffffffffffffffffffffffffffffffff1680156120665773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b906002811015610ad05760051b0190565b60406101ac946120c5610100949897958361014086019a8637838501906111a0565b60c08301370190610ed2565b9161214c916020916120e1611119565b85815291602083015261210c61154660345473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016120a3565b03915afa80156107a6575f9261216e611c66926020948691611ca0575061121e565b61219061154660355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092529093849283919082906064820190565b9190918051908351600a8311801561225c575b61222f5760026114aa9311908115612224575b501561221857612212600a8092612eec565b93612eec565b61221260028092612eec565b60029150115f612200565b7f9ebbc98e000000000000000000000000000000000000000000000000000000005f52600a60045260245ffd5b50600a81116121ed565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161229357565b6119f1565b908160a0910312610223576040519060a0820182811067ffffffffffffffff8211176101995760405280519060038210156102235760809183526020810151602084015260408101516040840152606081015160608401520151608082015290565b6003111561230457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9061233e91939293612f55565b5f9291925b8351811015612447576123568185611163565b511561243f578015158061241a575b6123e157600161239961239461238d61237e8589611163565b515f52603360205260405f2090565b5460ff1690565b151590565b146123a8576001905b01612343565b6123b561191b9185611163565b517f41a06d28000000000000000000000000000000000000000000000000000000005f52600452602490565b6123ee61191b9185611163565b517fdd574831000000000000000000000000000000000000000000000000000000005f52600452602490565b506124258185611163565b5161243861243283612266565b86611163565b5114612365565b6001906123a2565b50915073__$a9045d4c56ee07180ebebc7f688ffab42f$__905f5b83518110156125a2576124758185611163565b511561259a578015158061257b575b6123e1576124df60a06124a061249a8488611163565b51613010565b604051809381927fe170cf6e00000000000000000000000000000000000000000000000000000000835260048301919060206040840193600181520152565b0381875af49081156107a6575f9161254d575b50516124fd816122fa565b612506816122fa565b612514576001905b01612462565b61252161191b9185611163565b517f79e1da47000000000000000000000000000000000000000000000000000000005f52600452602490565b61256e915060a03d8111612574575b6125668183610176565b810190612298565b5f6124f2565b503d61255c565b506125868185611163565b5161259361243283612266565b5114612484565b60019061250e565b50929150602060405180927f92f5b06c00000000000000000000000000000000000000000000000000000000825281806125eb8760048301919060206040840193600181520152565b03915af49081156107a6575f91612634575b50156126095750600190565b7f4acd7ab8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61264d915060203d6020116116a7576116998183610176565b5f6125fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122935760010190565b96959190929694939461269360246113b7565b965f965f5b600281106128215750505f5b86518110156126d557806126ba60019289611163565b516126ce6126c78b612653565b9a8c611163565b52016126a4565b50919397909294505f5b855181101561271057806126f560019288611163565b516127096127028a612653565b998b611163565b52016126df565b5091935091955f5b8451811015612749578061272e60019287611163565b5161274261273b89612653565b988a611163565b5201612718565b5090919561276061275986612653565b9587611163565b525f5b83518110156127a6578061277960019286611163565b5161279f575f955b61279860ff61278f83612653565b98169189611163565b5201612763565b8195612781565b509150935f5b82518110156127dd57806127c260019285611163565b516127d66127cf87612653565b9688611163565b52016127ac565b509390506127f46127ed83612653565b9284611163565b52603a546128046127ed83612653565b52603b5461281d909161281681612653565b5083611163565b5290565b8061282e60019284612092565b5161284261283b8c612653565b9b8d611163565b5201612698565b96959190929694939461285c608c6113b7565b965f965f5b6002811061297a5750505f5b8651811015612897578061288360019289611163565b516128906126c78b612653565b520161286d565b50919397909294505f5b85518110156128cb57806128b760019288611163565b516128c46127028a612653565b52016128a1565b5091935091955f5b84518110156128fd57806128e960019287611163565b516128f661273b89612653565b52016128d3565b5090919561290d61275986612653565b525f5b835181101561294a578061292660019286611163565b51612943575f955b61293c60ff61278f83612653565b5201612910565b819561292e565b509150935f5b82518110156127dd578061296660019285611163565b516129736127cf87612653565b5201612950565b8061298760019284612092565b5161299461283b8c612653565b5201612861565b9190915f5b8151811015612a0257806129b660019284611163565b516129c2575b016129a0565b6129fd6129d261237e8386611163565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6129bc565b50505f5b8251811015612ad157612a198184611163565b51612a27575b600101612a06565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__90612a478185611163565b51612a528286611163565b51833b15610223576040517fc1d29f010000000000000000000000000000000000000000000000000000000081526001600482015260248101929092526044820152915f90839060649082905af49182156107a657600192612ab7575b509050612a1f565b80612ac55f612acb93610176565b80610652565b5f612aaf565b509050565b905f825b60088210612aec575050506101000190565b6020806001928551815201930191019091612ada565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303612b4257565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b91612b856114aa94926040855260408501906113e8565b92602081850391015261141b565b9091925f9373__$a9045d4c56ee07180ebebc7f688ffab42f$__945b8351811015612ccd57612bc28185611163565b51908115612cc457612bd860a06124a084613010565b03818b5af49081156107a6575f91612ca6575b5051612bf6816122fa565b612bff816122fa565b612c7957863b15610223576040517fc1d29f01000000000000000000000000000000000000000000000000000000008152600160048201526024810183905260448101929092525f826064818a5af49182156107a657600192612c65575b505b01612baf565b80612ac55f612c7393610176565b5f612c5d565b7f79e1da47000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b612cbe915060a03d8111612574576125668183610176565b5f612beb565b60019150612c5f565b509093507f7ff08e0ca1fce6b202b83128811e4f6ceda54930aa074cd365bf68f95c20ce199192612d05604051928392339684612b6e565b0390a2565b9092612d1660076113b7565b936001918293612d2587611156565b52825f815b612da8575b5050612d44612d3d85612653565b9487611163565b525f825b612d5d575b5050508061281661281d92612653565b8151811015612da357908282612d74829484611163565b51612d9c575f955b612d9360ff612d8a83612653565b9816918a611163565b52019091612d48565b8195612d7c565b612d4d565b8351811015612dd95780612dbd839286611163565b51612dd1612dca89612653565b988b611163565b520181612d2a565b612d2f565b9092612dea60176113b7565b936001918293612df987611156565b52825f815b612e66575b5050612e11612d3d85612653565b525f825b612e29575050508061281661281d92612653565b8151811015612da357908282612e40829484611163565b51612e5f575f955b612e5660ff612d8a83612653565b52019091612e15565b8195612e48565b8351811015612e905780612e7b839286611163565b51612e88612dca89612653565b520181612dfe565b612e03565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615612ec457565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9181835114612f5157612efe826113b7565b905f5b8451811015612f295780612f1760019287611163565b51612f228286611163565b5201612f01565b5092919091515b818110612f3c57505090565b805f612f4a60019386611163565b5201612f30565b9050565b9190612f6183516113b7565b90612f6c81516113b7565b905f5b8551811015612f975780612f8560019288611163565b51612f908287611163565b5201612f6f565b5091929093505f5b8251811015612fc75780612fb560019285611163565b51612fc08288611163565b5201612f9f565b50919050612fd48161322e565b50612fde8361322e565b509190565b919060608301925f905b60038210612ffa57505050565b6020806001928551815201930191019091612fed565b604051606081019080821067ffffffffffffffff83111761019957613076926020926040528082528282015260016040820152604051809381927f25cc70e800000000000000000000000000000000000000000000000000000000835260048301612fe3565b038173__$abc2523fb3bac9ceee4baf18a48b86000d$__5af49081156107a6575f916130a0575090565b6114aa915060203d60201161079f576107918183610176565b90813b156131a85773ffffffffffffffffffffffffffffffffffffffff8216807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a280511561317757613174916131ea565b50565b50503461318057565b7fb398979f000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff827f4c9c8ce3000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b5f806114aa93602081519101845af43d15613226573d9161320a836105bb565b926132186040519485610176565b83523d5f602085013e613246565b606091613246565b6114aa60016020835160051b840101602084016132df565b90613283575080511561325b57805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806132d6575b613294575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561328c565b919060408382031061337e5782519282818095602084015b85811061331d5750508251815184528152613311926132df565b60206101ac93016132df565b91509150805185600114613358577f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b821161336b575b602001849186916132f7565b602090950180518651825286529461335f565b50505056fea26469706673582212205c82bcd78e25775dbf3a11fc2129db1e54a0eaf52752b079adc950b23447360564736f6c634300081b0033","sourceMap":"2655:10024:40:-:0;;;;;;;1171:4:70;1163:13;;2655:10024:40;;;;;;1163:13:70;2655:10024:40;;;;;;;;;;;;;;","linkReferences":{"node_modules/@iden3/contracts/lib/Poseidon.sol":{"PoseidonUnit3L":[{"start":12456,"length":20}]},"node_modules/@iden3/contracts/lib/SmtLib.sol":{"SmtLib":[{"start":1902,"length":20},{"start":7724,"length":20},{"start":9338,"length":20},{"start":10839,"length":20},{"start":11208,"length":20}]}}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806304b10b9f1461014457806312c0fed21461013f5780634f1ef2861461013a57806352d1902d146101355780635ca1e16514610130578063715018a61461012b578063732952411461012657806383f0ef49146101215780638bb2513b1461011c5780638da5cb5b146101175780639b2e8b52146101125780639e2a71941461010d5780639fcc50af14610108578063ad3cb1cc14610103578063c29a6fda146100fe578063cc2a9a5b146100f9578063cffe00f9146100f4578063f2fde38b146100ef5763f756356a146100ea575f80fd5b610f8b565b610f5e565b610ef9565b610c35565b610bcd565b610b57565b610aef565b610ad5565b610a4e565b6109fc565b610999565b610922565b6108cf565b6107ab565b6106fb565b61065c565b6105d7565b61041e565b61030a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761019957604052565b610149565b906101ac6040519283610176565b565b67ffffffffffffffff81116101995760051b60200190565b9080601f830112156102235781356101dd816101ae565b926101eb6040519485610176565b81845260208085019260051b82010192831161022357602001905b8282106102135750505090565b8135815260209182019101610206565b5f80fd5b8060a31215610223576040519061023f604083610176565b819060c411610223576084905b60c4821061025957505090565b813581526020918201910161024c565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc6101009101126102235761010490565b60031961010091011261022357600490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261022357604490565b9181601f840112156102235782359167ffffffffffffffff8311610223576020838186019501011161022357565b34610223576102206003193601126102235760043567ffffffffffffffff81116102235761033c9036906004016101c6565b60243567ffffffffffffffff81116102235761035c9036906004016101c6565b90604435916064359161036e36610227565b60c43567ffffffffffffffff81116102235761038e9036906004016101c6565b60e43567ffffffffffffffff8111610223576103ae9036906004016101c6565b906103b836610269565b92610204359667ffffffffffffffff8811610223576103fc986103e26103ea9936906004016102dc565b9890976114ad565b60405190151581529081906020820190565b0390f35b73ffffffffffffffffffffffffffffffffffffffff81160361022357565b34610223576101206003193601126102235761058261043c3661029a565b610542610104359161044d83610400565b6104b460c061045d61010061019e565b8335815292602081013560208501526104a061049360408301803560408801526104878160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e08201526040516104dd816104cf602082019485612ad6565b03601f198101835282610176565b51902073ffffffffffffffffffffffffffffffffffffffff610523610509835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b16158015610584575b610535906117ac565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b5061053561059c610509835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff163314905061052c565b67ffffffffffffffff811161019957601f01601f191660200190565b6040600319360112610223576004356105ef81610400565b6024359067ffffffffffffffff821161022357366023830112156102235781600401359061061c826105bb565b9161062a6040519384610176565b8083523660248286010111610223576020815f92602461058297018387013784010152611837565b5f91031261022357565b34610223575f6003193601126102235773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106d35760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610223575f600319360112610223576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af480156107a6576103fc915f91610777575b506040519081529081906020820190565b610799915060203d60201161079f575b6107918183610176565b8101906119e2565b5f610766565b503d610787565b611213565b34610223575f600319360112610223576107c3612b02565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b610180600319820112610223576004359160243567ffffffffffffffff81116102235782610897916004016101c6565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261022357608490565b346102235761058261091d6109086108e636610867565b926108f781979596929397516113b7565b908761090283611156565b526121da565b95908095610917848984612331565b50611b3d565b61299b565b346102235760406003193601126102235736602312156102235760405161094a604082610176565b8036604411610223576004905b604482106109895782610968612b02565b5f5b6002811061097457005b6001906020835193019281603a01550161096a565b8135815260209182019101610957565b346102235760406003193601126102235760043567ffffffffffffffff8111610223576109ca9036906004016101c6565b6024359067ffffffffffffffff8211610223576109ee6105829236906004016102dc565b916109f7612b02565b612b93565b34610223575f60031936011261022357602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346102235761016060031936011261022357602435600435610a6f366102ac565b906101443567ffffffffffffffff8111610223578392610a96610a9e9236906004016102dc565b9490936120d1565b6040805190610aad8183610176565b60018252601f1901366020830137805115610ad057610582936020820152612b93565b611129565b3461022357610582610ae636610867565b93929092611b3d565b346102235760206003193601126102235773ffffffffffffffffffffffffffffffffffffffff600435610b2181610400565b610b29612e95565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b34610223575f600319360112610223576040805190610b768183610176565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b346102235760206003193601126102235773ffffffffffffffffffffffffffffffffffffffff600435610bff81610400565b610c07612b02565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b346102235760c060031936011261022357600435610c5281610400565b60243590610c5f82610400565b604435610c6b81610400565b606435610c7781610400565b60843590610c8482610400565b60a43592610c9184610400565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff610cd760ff60408a901c16159867ffffffffffffffff1690565b1680159081610eca575b6001149081610ec0575b159081610eb7575b50610e8f57610d749587610d6b60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610e1457611dd2565b610d7a57005b610de57fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b610e8a680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b611dd2565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610cf3565b303b159150610ceb565b889150610ce1565b905f905b60028210610ee357505050565b6020806001928551815201930191019091610ed6565b34610223575f600319360112610223576040808051610f188282610176565b369037805190603a5f835b60028210610f48576103fc8486610f3a8282610176565b815192838093810192610ed2565b6001602081928554815201930191019091610f23565b3461022357602060031936011261022357610582600435610f7e81610400565b610f86612b02565b611fa5565b346102235761014060031936011261022357610582600435602435610faf366102ac565b916120d1565b15610fbc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b1561102157565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605760248201527f436970686572205465787420666f7220417574686f72697479206d757374206860448201527f6176652061206c656e677468206f6620313620666f72206e6f206d6f7265207460648201527f68616e203220696e70757473206f72206f7574707574730000000000000000006084820152fd5b604051906104806110dc8184610176565b368337565b604051906111806110dc8184610176565b6040519061110160e083610176565b60e0368337565b604051906102e06110dc8184610176565b6040908151916110dc8184610176565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805115610ad05760200190565b8051821015610ad05760209160051b010190565b906024811015610ad05760051b0190565b90816020910312610223575180151581036102235790565b905f905b600282106111b157505050565b60408082818660019537019301910190916111a4565b909493926040906111e761010094836105808601998637838501906111a0565b60c0830137015f905b602482106111fd57505050565b60208060019285518152019301910190916111f0565b6040513d5f823e3d90fd5b1561122557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b1561128a57565b60c46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606c60248201527f436970686572205465787420666f7220417574686f72697479206d757374206860448201527f6176652061206c656e677468206f66203634207769746820696e707574206f7260648201527f206f757470757473206e756d626572206d6f7265207468616e203220616e642060848201527f6c657373207468616e203130000000000000000000000000000000000000000060a4820152fd5b90608c811015610ad05760051b0190565b9094939260409061138b61010094836112808601998637838501906111a0565b60c0830137015f905b608c82106113a157505050565b6020806001928551815201930191019091611394565b906113c1826101ae565b6113ce6040519182610176565b828152601f196113de82946101ae565b0190602036910137565b90602080835192838152019201905f5b8181106114055750505090565b82518452602093840193909201916001016113f8565b601f8260209493601f1993818652868601375f8582860101520116010190565b969461148161149c9561147161148e956114636114aa9d9b98966101008e81815201906113e8565b8c810360208e0152906113e8565b9360408b015260608a0190610ed2565b87820360a08901526113e8565b9085820360c08701526113e8565b9260e081850391015261141b565b90565b9386866114c683999a94879e989d999c9d9796976121da565b9d878f9592986114da6114df91888c612331565b610fb5565b600289511180156117a1575b156116cd57611507956115016040875114611283565b89612849565b906115106110e1565b915f5b608c81106116ae57505061159f9160209161155f61154660395473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f1438cd2200000000000000000000000000000000000000000000000000000000845260c081019060408101906004860161136b565b03915afa80156107a6576115ba915f9161167f575b5061121e565b6115c4898361299b565b6115ce87516113b7565b986115d987516113b7565b945f5b895181101561160557808c6115fe826115f76001958f611163565b5192611163565b52016115dc565b50929598919497509295985f5b8a5181101561163a57806116286001928d611163565b51611633828c611163565b5201611612565b50611677949699507f2de65d88bad801ae25960ccc943b3a24033838692a43078533014e938562b02b979192939598604051978897339b8961143b565b0390a2600190565b6116a1915060203d6020116116a7575b6116998183610176565b810190611188565b5f6115b4565b503d61168f565b806116bb60019284611163565b516116c6828761135a565b5201611513565b6116e4956116de601087511461101a565b89612680565b906116ed6110cb565b915f5b602481106117825750506117639160209161172361154660385473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f881453ac00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016111c7565b03915afa80156107a65761177d915f9161167f575061121e565b6115ba565b8061178f60019284611163565b5161179a8287611177565b52016116f0565b5060028651116114eb565b156117b357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168030149081156119a0575b506106d357611888612b02565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f948161197f575b5061191e577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403611952576101ac9293506130b9565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b61199991955060203d60201161079f576107918183610176565b935f6118d6565b905073fffffffffffffffffffffffffffffffff