{"matchId":"56615148","creationMatch":"exact_match","runtimeMatch":"exact_match","verifiedAt":"2026-10-20T17:03:05Z","creationBytecode":{"onchainBytecode":"0x60a03461016757601f61243f38819003918201601f19168301916001600160401b038311848410176100ed5780849260209460405283398101031261016757516001600160a01b03811690819003610167578015801561014a575b801561012d575b8015610110575b610101575f80546001600160a01b031916821790556040519061091a8083016001600160401b038111848210176100ed576020928492611b25843981520301905ff080156100e2576001600160a01b03166080526040516119b9908161016c82396080518181816106300152818161076501526108630152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b63e6c4247b60e01b5f5260045ffd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f918114610068565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b88114610061565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c5811461005a565b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163040dda0f14610794575080631a43c33814610750578063431a20ae1461070f57806347f543bc146105f657806349f289dc146105c7578063570ca735146105a057806382bfefc814610571578063993c9ca9146104d7578063acf461f914610494578063b3ab15fb14610372578063ca58f2d314610343578063d9cba3991461020e5763db2a4570146100ad575f80fd5b346101e25760603660031901126101e25760043567ffffffffffffffff811161020a576100de9036906004016107d9565b60249291923567ffffffffffffffff8111610206576101019036906004016107d9565b909360443567ffffffffffffffff8111610202576101239036906004016107d9565b855491969094916001600160a01b031633036101f4578596731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101f057610186956101986101aa938997604051998a988998630db2a45760e41b8a52606060048b015260648a0191610971565b87810360031901602489015291610971565b84810360031901604486015291610971565b038183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b816101db91610807565b6101e25780f35b80fd5b6040513d84823e3d90fd5b8680fd5b6282b42960e81b8652600486fd5b8480fd5b8280fd5b5080fd5b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c53314158061032f575b6102df57604051631c61872f60e31b8152602081600481731b54e762aa34cf6e28e9c082f2848e28e45da6b85afa9081156101e55782916102ed575b50306001600160a01b03909116036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e2576040516379ba509760e01b81528190818160048183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b6282b42960e81b8152600490fd5b90506020813d602011610327575b8161030860209383610807565b8101031261020a57516001600160a01b038116810361020a575f610279565b3d91506102fb565b5080546001600160a01b031633141561023d565b50346101e257806003193601126101e257602060405173bb145ca83272c3806d4ddc75ca1d5514789cf1c58152f35b50346101e25760203660031901126101e2576004356001600160a01b0381169081900361020a5773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036104865780158015610469575b8015610460575b8015610443575b8015610426575b610417578154816001600160a01b0382167fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c8580a36001600160a01b03191617815580f35b63e6c4247b60e01b8252600482fd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f9181146103d2565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b881146103cb565b503081146103c4565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c581146103bd565b6282b42960e81b8252600482fd5b50346101e25760203660031901126101e257600435906001600160a01b03821682036101e25760206104c58361083d565b6040516001600160a01b039091168152f35b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e25760405163f2fde38b60e01b815273bb145ca83272c3806d4ddc75ca1d5514789cf1c560048201528190818160248183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b50346101e257806003193601126101e2576020604051731b54e762aa34cf6e28e9c082f2848e28e45da6b88152f35b50346101e257806003193601126101e257546040516001600160a01b039091168152602090f35b50346101e257806003193601126101e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b50346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f546001600160a01b03163303610701577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316811415806106ea575b6106db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913b156106d757604051906311fd50ef60e21b825260048201525f816024818373ea0436465676ea7001535bfe2e5cbd4b137b7f915af180156106cc576106be575080f35b6106ca91505f90610807565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b50805f52600160205260ff60405f20541615610661565b6282b42960e81b5f5260045ffd5b346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f526001602052602060ff60405f2054166040519015158152f35b346106d7575f3660031901126106d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346106d75760203660031901126106d7576004356001600160a01b03811691908290036106d7575f918252600260209081526040909220546001600160a01b03168152f35b9181601f840112156106d75782359167ffffffffffffffff83116106d757602083818601950101116106d757565b90601f8019910116810190811067ffffffffffffffff82111761082957604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b038082165f8181526002602052604090205490939291168061096c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908382148015610963575b801561094d575b6106db573f60405191610ff2908184019084821067ffffffffffffffff8311176108295760609385936109928539878352602083015260408201520301905ff080156106cc5760018060a01b03168092815f52600160205260405f20600160ff19825416179055805f52600260205260405f20826bffffffffffffffffffffffff60a01b8254161790557f7e43cd64d2f6c0710f7c5386972c0578744b948bbf9e4dd31b329135fa8921cc5f80a3565b50835f52600160205260ff60405f20541661089d565b50308414610896565b925050565b908060209392818452848401375f828201840152601f01601f191601019056fe60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033a26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a003360a034608857601f61091a38819003918201601f19168301916001600160401b03831184841017608c57808492602094604052833981010312608857516001600160a01b0381168082036088571560795760805260405161087990816100a1823960805181818161033101528181610575015261079a0152f35b633b4f091f60e21b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816302fb0c5e14610788575080631b2df8501461075f578063676bab011461070f578063728b6589146104ce5780637bb98a681461043e5780637d2152751461042257806391dd734614610233578063b918766614610216578063ba4a907d146101f9578063d54ad2a1146101dc578063dc88d0cf146100c15763de9e267c146100a2575f80fd5b346100be57806003193601126100be5760206040516159d88152f35b80fd5b50346100be5760c03660031901126100be576004356001600160a01b038116036100be57602435801515036100be576064356001600160a01b038116036100be576084356fffffffffffffffffffffffffffffffff8116036100be5760a43567ffffffffffffffff81116101d85761013d9036906004016107c9565b505060c090816040516101508282610821565b36903760405182810181811067ffffffffffffffff8211176101c4576040908152612ee08252610bb860208301526105dc828201526107d06060830152610dac60808301526103e860a08301525191825b600682106101ae57505050f35b60208060019285518152019301910190916101a1565b634e487b7160e01b83526041600452602483fd5b5080fd5b50346100be57806003193601126100be5760209054604051908152f35b50346100be57806003193601126100be5760206040516132c88152f35b50346100be57806003193601126100be576020604051612ee08152f35b50346103ee5760203660031901126103ee5760043567ffffffffffffffff81116103ee576102659036906004016107c9565b6e04444c5dc75cb358380d2e3de08a903314801590610418575b801561040c575b8015610401575b6103f25781602091810103126103ee573560015481036103f2575f196001556e04444c5dc75cb358380d2e3de08a903b156103ee57604051637a94c56560e11b81523060048201525f60248201528160448201525f81606481836e04444c5dc75cb358380d2e3de08a905af180156103e3576103ce575b506e04444c5dc75cb358380d2e3de08a903b156101d857604051630b0d9c0960e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602482015260448101919091528181606481836e04444c5dc75cb358380d2e3de08a905af180156103c3576103ae575b6103aa826040519061039c602083610821565b8152604051918291826107f7565b0390f35b6103b9828092610821565b6100be575f610389565b6040513d84823e3d90fd5b6103db9192505f90610821565b5f905f610304565b6040513d5f823e3d90fd5b5f80fd5b63f7a632f560e01b5f5260045ffd5b50602081141561028d565b506001545f1914610286565b506001541561027f565b346103ee575f3660031901126103ee5760206040516103e88152f35b346103ee575f3660031901126103ee57604051627eeac760e11b81523060048201525f60248201526020816044816e04444c5dc75cb358380d2e3de08a905afa80156103e3575f9061049b575b60409081519081525f6020820152f35b506020813d6020116104c6575b816104b560209383610821565b810103126103ee576040905161048b565b3d91506104a8565b346103ee5760203660031901126103ee5760043560015415801590610707575b80156106fd575b8015610684575b610675578060015561053a5f60405183602082015260208152610520604082610821565b604051809381926348c8949160e01b8352600483016107f7565b0381836e04444c5dc75cb358380d2e3de08a905af180156103e3576105da575b505f6001555f548181018091116105c6575f556040519081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316907f2c190f214bdf51a4b369ef5ce6aba1d7f7a5405454f020ebcf219ce1adc7741d90602090a2005b634e487b7160e01b5f52601160045260245ffd5b3d805f833e6105e98183610821565b8101906020818303126103ee5780519067ffffffffffffffff82116103ee570181601f820112156103ee5780519067ffffffffffffffff8211610661576040519261063e601f8401601f191660200185610821565b828452602083830101116103ee57815f9260208093018386015e8301015261055a565b634e487b7160e01b5f52604160045260245ffd5b633b4f091f60e21b5f5260045ffd5b50604051627eeac760e11b81523060048201525f60248201526020816044816e04444c5dc75cb358380d2e3de08a905afa9081156103e3575f916106cb575b5081116104fc565b90506020813d6020116106f5575b816106e660209383610821565b810103126103ee5751826106c3565b3d91506106d9565b505f1981146104f5565b5080156104ee565b346103ee57366003190161018081126103ee57610160136103ee576101643567ffffffffffffffff81116103ee5761074b9036906004016107c9565b505060405163676bab0160e01b8152602090f35b346103ee575f3660031901126103ee5760206040516e04444c5dc75cb358380d2e3de08a908152f35b346103ee575f3660031901126103ee577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9181601f840112156103ee5782359167ffffffffffffffff83116103ee57602083818601950101116103ee57565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff8211176106615760405256fea26469706673582212208c6775e1803c32c3b1fed8787982b6586c7bb332e95cd4abfb4c40764c8fd58164736f6c634300081a0033000000000000000000000000ab716305e5a8854c0dd08397087dbdd56ea32073","recompiledBytecode":"0x60a03461016757601f61243f38819003918201601f19168301916001600160401b038311848410176100ed5780849260209460405283398101031261016757516001600160a01b03811690819003610167578015801561014a575b801561012d575b8015610110575b610101575f80546001600160a01b031916821790556040519061091a8083016001600160401b038111848210176100ed576020928492611b25843981520301905ff080156100e2576001600160a01b03166080526040516119b9908161016c82396080518181816106300152818161076501526108630152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b63e6c4247b60e01b5f5260045ffd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f918114610068565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b88114610061565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c5811461005a565b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163040dda0f14610794575080631a43c33814610750578063431a20ae1461070f57806347f543bc146105f657806349f289dc146105c7578063570ca735146105a057806382bfefc814610571578063993c9ca9146104d7578063acf461f914610494578063b3ab15fb14610372578063ca58f2d314610343578063d9cba3991461020e5763db2a4570146100ad575f80fd5b346101e25760603660031901126101e25760043567ffffffffffffffff811161020a576100de9036906004016107d9565b60249291923567ffffffffffffffff8111610206576101019036906004016107d9565b909360443567ffffffffffffffff8111610202576101239036906004016107d9565b855491969094916001600160a01b031633036101f4578596731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101f057610186956101986101aa938997604051998a988998630db2a45760e41b8a52606060048b015260648a0191610971565b87810360031901602489015291610971565b84810360031901604486015291610971565b038183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b816101db91610807565b6101e25780f35b80fd5b6040513d84823e3d90fd5b8680fd5b6282b42960e81b8652600486fd5b8480fd5b8280fd5b5080fd5b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c53314158061032f575b6102df57604051631c61872f60e31b8152602081600481731b54e762aa34cf6e28e9c082f2848e28e45da6b85afa9081156101e55782916102ed575b50306001600160a01b03909116036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e2576040516379ba509760e01b81528190818160048183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b6282b42960e81b8152600490fd5b90506020813d602011610327575b8161030860209383610807565b8101031261020a57516001600160a01b038116810361020a575f610279565b3d91506102fb565b5080546001600160a01b031633141561023d565b50346101e257806003193601126101e257602060405173bb145ca83272c3806d4ddc75ca1d5514789cf1c58152f35b50346101e25760203660031901126101e2576004356001600160a01b0381169081900361020a5773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036104865780158015610469575b8015610460575b8015610443575b8015610426575b610417578154816001600160a01b0382167fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c8580a36001600160a01b03191617815580f35b63e6c4247b60e01b8252600482fd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f9181146103d2565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b881146103cb565b503081146103c4565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c581146103bd565b6282b42960e81b8252600482fd5b50346101e25760203660031901126101e257600435906001600160a01b03821682036101e25760206104c58361083d565b6040516001600160a01b039091168152f35b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e25760405163f2fde38b60e01b815273bb145ca83272c3806d4ddc75ca1d5514789cf1c560048201528190818160248183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b50346101e257806003193601126101e2576020604051731b54e762aa34cf6e28e9c082f2848e28e45da6b88152f35b50346101e257806003193601126101e257546040516001600160a01b039091168152602090f35b50346101e257806003193601126101e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b50346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f546001600160a01b03163303610701577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316811415806106ea575b6106db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913b156106d757604051906311fd50ef60e21b825260048201525f816024818373ea0436465676ea7001535bfe2e5cbd4b137b7f915af180156106cc576106be575080f35b6106ca91505f90610807565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b50805f52600160205260ff60405f20541615610661565b6282b42960e81b5f5260045ffd5b346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f526001602052602060ff60405f2054166040519015158152f35b346106d7575f3660031901126106d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346106d75760203660031901126106d7576004356001600160a01b03811691908290036106d7575f918252600260209081526040909220546001600160a01b03168152f35b9181601f840112156106d75782359167ffffffffffffffff83116106d757602083818601950101116106d757565b90601f8019910116810190811067ffffffffffffffff82111761082957604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b038082165f8181526002602052604090205490939291168061096c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908382148015610963575b801561094d575b6106db573f60405191610ff2908184019084821067ffffffffffffffff8311176108295760609385936109928539878352602083015260408201520301905ff080156106cc5760018060a01b03168092815f52600160205260405f20600160ff19825416179055805f52600260205260405f20826bffffffffffffffffffffffff60a01b8254161790557f7e43cd64d2f6c0710f7c5386972c0578744b948bbf9e4dd31b329135fa8921cc5f80a3565b50835f52600160205260ff60405f20541661089d565b50308414610896565b925050565b908060209392818452848401375f828201840152601f01601f191601019056fe60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033a26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a003360a034608857601f61091a38819003918201601f19168301916001600160401b03831184841017608c57808492602094604052833981010312608857516001600160a01b0381168082036088571560795760805260405161087990816100a1823960805181818161033101528181610575015261079a0152f35b633b4f091f60e21b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816302fb0c5e14610788575080631b2df8501461075f578063676bab011461070f578063728b6589146104ce5780637bb98a681461043e5780637d2152751461042257806391dd734614610233578063b918766614610216578063ba4a907d146101f9578063d54ad2a1146101dc578063dc88d0cf146100c15763de9e267c146100a2575f80fd5b346100be57806003193601126100be5760206040516159d88152f35b80fd5b50346100be5760c03660031901126100be576004356001600160a01b038116036100be57602435801515036100be576064356001600160a01b038116036100be576084356fffffffffffffffffffffffffffffffff8116036100be5760a43567ffffffffffffffff81116101d85761013d9036906004016107c9565b505060c090816040516101508282610821565b36903760405182810181811067ffffffffffffffff8211176101c4576040908152612ee08252610bb860208301526105dc828201526107d06060830152610dac60808301526103e860a08301525191825b600682106101ae57505050f35b60208060019285518152019301910190916101a1565b634e487b7160e01b83526041600452602483fd5b5080fd5b50346100be57806003193601126100be5760209054604051908152f35b50346100be57806003193601126100be5760206040516132c88152f35b50346100be57806003193601126100be576020604051612ee08152f35b50346103ee5760203660031901126103ee5760043567ffffffffffffffff81116103ee576102659036906004016107c9565b6e04444c5dc75cb358380d2e3de08a903314801590610418575b801561040c575b8015610401575b6103f25781602091810103126103ee573560015481036103f2575f196001556e04444c5dc75cb358380d2e3de08a903b156103ee57604051637a94c56560e11b81523060048201525f60248201528160448201525f81606481836e04444c5dc75cb358380d2e3de08a905af180156103e3576103ce575b506e04444c5dc75cb358380d2e3de08a903b156101d857604051630b0d9c0960e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602482015260448101919091528181606481836e04444c5dc75cb358380d2e3de08a905af180156103c3576103ae575b6103aa826040519061039c602083610821565b8152604051918291826107f7565b0390f35b6103b9828092610821565b6100be575f610389565b6040513d84823e3d90fd5b6103db9192505f90610821565b5f905f610304565b6040513d5f823e3d90fd5b5f80fd5b63f7a632f560e01b5f5260045ffd5b50602081141561028d565b506001545f1914610286565b506001541561027f565b346103ee575f3660031901126103ee5760206040516103e88152f35b346103ee575f3660031901126103ee57604051627eeac760e11b81523060048201525f60248201526020816044816e04444c5dc75cb358380d2e3de08a905afa80156103e3575f9061049b575b60409081519081525f6020820152f35b506020813d6020116104c6575b816104b560209383610821565b810103126103ee576040905161048b565b3d91506104a8565b346103ee5760203660031901126103ee5760043560015415801590610707575b80156106fd575b8015610684575b610675578060015561053a5f60405183602082015260208152610520604082610821565b604051809381926348c8949160e01b8352600483016107f7565b0381836e04444c5dc75cb358380d2e3de08a905af180156103e3576105da575b505f6001555f548181018091116105c6575f556040519081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316907f2c190f214bdf51a4b369ef5ce6aba1d7f7a5405454f020ebcf219ce1adc7741d90602090a2005b634e487b7160e01b5f52601160045260245ffd5b3d805f833e6105e98183610821565b8101906020818303126103ee5780519067ffffffffffffffff82116103ee570181601f820112156103ee5780519067ffffffffffffffff8211610661576040519261063e601f8401601f191660200185610821565b828452602083830101116103ee57815f9260208093018386015e8301015261055a565b634e487b7160e01b5f52604160045260245ffd5b633b4f091f60e21b5f5260045ffd5b50604051627eeac760e11b81523060048201525f60248201526020816044816e04444c5dc75cb358380d2e3de08a905afa9081156103e3575f916106cb575b5081116104fc565b90506020813d6020116106f5575b816106e660209383610821565b810103126103ee5751826106c3565b3d91506106d9565b505f1981146104f5565b5080156104ee565b346103ee57366003190161018081126103ee57610160136103ee576101643567ffffffffffffffff81116103ee5761074b9036906004016107c9565b505060405163676bab0160e01b8152602090f35b346103ee575f3660031901126103ee5760206040516e04444c5dc75cb358380d2e3de08a908152f35b346103ee575f3660031901126103ee577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9181601f840112156103ee5782359167ffffffffffffffff83116103ee57602083818601950101116103ee57565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff8211176106615760405256fea26469706673582212208c6775e1803c32c3b1fed8787982b6586c7bb332e95cd4abfb4c40764c8fd58164736f6c634300081a0033","sourceMap":"901:3108:1:-:0;;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;1604:29;;:59;;;;-1:-1:-1;1604:99:1;;;;-1:-1:-1;1604:126:1;;;;-1:-1:-1;1600:155:1;;-1:-1:-1;1043:42:1;;-1:-1:-1;;;;;;1043:42:1;;;;;901:3108;;;1819:43;;;;-1:-1:-1;;;;;1819:43:1;;;;;;;;901:3108;1819:43;;;;;;1043:42;;1819:43;;;-1:-1:-1;1819:43:1;;;;;-1:-1:-1;;;;;901:3108:1;1801:62;;901:3108;;;;;;;;1801:62;901:3108;;;;;;;;;;;;;;;;1819:43;901:3108;;1043:42;-1:-1:-1;1043:42:1;;;;;1819:43;901:3108;;;-1:-1:-1;901:3108:1;;;;;-1:-1:-1;901:3108:1;1600:155;1739:16;;;-1:-1:-1;1739:16:1;;-1:-1:-1;1739:16:1;1604:126;1707:23;1043:42;1707:23;;1604:126;;:99;1679:24;964:42;1679:24;;1604:99;;:59;1637:26;1125:42;1637:26;;1604:59;;901:3108;-1:-1:-1;901:3108:1;","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a0033","offset":6896},"2":{"value":"0xa26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","offset":6843},"3":{"value":"0xa26469706673582212208c6775e1803c32c3b1fed8787982b6586c7bb332e95cd4abfb4c40764c8fd58164736f6c634300081a0033","offset":9226}},"transformations":[{"type":"insert","offset":9279,"reason":"constructorArguments"}],"transformationValues":{"constructorArguments":"0x000000000000000000000000ab716305e5a8854c0dd08397087dbdd56ea32073"}},"runtimeBytecode":{"onchainBytecode":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163040dda0f14610794575080631a43c33814610750578063431a20ae1461070f57806347f543bc146105f657806349f289dc146105c7578063570ca735146105a057806382bfefc814610571578063993c9ca9146104d7578063acf461f914610494578063b3ab15fb14610372578063ca58f2d314610343578063d9cba3991461020e5763db2a4570146100ad575f80fd5b346101e25760603660031901126101e25760043567ffffffffffffffff811161020a576100de9036906004016107d9565b60249291923567ffffffffffffffff8111610206576101019036906004016107d9565b909360443567ffffffffffffffff8111610202576101239036906004016107d9565b855491969094916001600160a01b031633036101f4578596731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101f057610186956101986101aa938997604051998a988998630db2a45760e41b8a52606060048b015260648a0191610971565b87810360031901602489015291610971565b84810360031901604486015291610971565b038183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b816101db91610807565b6101e25780f35b80fd5b6040513d84823e3d90fd5b8680fd5b6282b42960e81b8652600486fd5b8480fd5b8280fd5b5080fd5b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c53314158061032f575b6102df57604051631c61872f60e31b8152602081600481731b54e762aa34cf6e28e9c082f2848e28e45da6b85afa9081156101e55782916102ed575b50306001600160a01b03909116036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e2576040516379ba509760e01b81528190818160048183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b6282b42960e81b8152600490fd5b90506020813d602011610327575b8161030860209383610807565b8101031261020a57516001600160a01b038116810361020a575f610279565b3d91506102fb565b5080546001600160a01b031633141561023d565b50346101e257806003193601126101e257602060405173bb145ca83272c3806d4ddc75ca1d5514789cf1c58152f35b50346101e25760203660031901126101e2576004356001600160a01b0381169081900361020a5773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036104865780158015610469575b8015610460575b8015610443575b8015610426575b610417578154816001600160a01b0382167fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c8580a36001600160a01b03191617815580f35b63e6c4247b60e01b8252600482fd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f9181146103d2565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b881146103cb565b503081146103c4565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c581146103bd565b6282b42960e81b8252600482fd5b50346101e25760203660031901126101e257600435906001600160a01b03821682036101e25760206104c58361083d565b6040516001600160a01b039091168152f35b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e25760405163f2fde38b60e01b815273bb145ca83272c3806d4ddc75ca1d5514789cf1c560048201528190818160248183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b50346101e257806003193601126101e2576020604051731b54e762aa34cf6e28e9c082f2848e28e45da6b88152f35b50346101e257806003193601126101e257546040516001600160a01b039091168152602090f35b50346101e257806003193601126101e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b50346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f546001600160a01b03163303610701577f000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e6001600160a01b0316811415806106ea575b6106db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913b156106d757604051906311fd50ef60e21b825260048201525f816024818373ea0436465676ea7001535bfe2e5cbd4b137b7f915af180156106cc576106be575080f35b6106ca91505f90610807565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b50805f52600160205260ff60405f20541615610661565b6282b42960e81b5f5260045ffd5b346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f526001602052602060ff60405f2054166040519015158152f35b346106d7575f3660031901126106d7576040517f000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e6001600160a01b03168152602090f35b346106d75760203660031901126106d7576004356001600160a01b03811691908290036106d7575f918252600260209081526040909220546001600160a01b03168152f35b9181601f840112156106d75782359167ffffffffffffffff83116106d757602083818601950101116106d757565b90601f8019910116810190811067ffffffffffffffff82111761082957604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b038082165f8181526002602052604090205490939291168061096c57507f000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e6001600160a01b0316908382148015610963575b801561094d575b6106db573f60405191610ff2908184019084821067ffffffffffffffff8311176108295760609385936109928539878352602083015260408201520301905ff080156106cc5760018060a01b03168092815f52600160205260405f20600160ff19825416179055805f52600260205260405f20826bffffffffffffffffffffffff60a01b8254161790557f7e43cd64d2f6c0710f7c5386972c0578744b948bbf9e4dd31b329135fa8921cc5f80a3565b50835f52600160205260ff60405f20541661089d565b50308414610896565b925050565b908060209392818452848401375f828201840152601f01601f191601019056fe60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033a26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a0033","recompiledBytecode":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163040dda0f14610794575080631a43c33814610750578063431a20ae1461070f57806347f543bc146105f657806349f289dc146105c7578063570ca735146105a057806382bfefc814610571578063993c9ca9146104d7578063acf461f914610494578063b3ab15fb14610372578063ca58f2d314610343578063d9cba3991461020e5763db2a4570146100ad575f80fd5b346101e25760603660031901126101e25760043567ffffffffffffffff811161020a576100de9036906004016107d9565b60249291923567ffffffffffffffff8111610206576101019036906004016107d9565b909360443567ffffffffffffffff8111610202576101239036906004016107d9565b855491969094916001600160a01b031633036101f4578596731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101f057610186956101986101aa938997604051998a988998630db2a45760e41b8a52606060048b015260648a0191610971565b87810360031901602489015291610971565b84810360031901604486015291610971565b038183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b816101db91610807565b6101e25780f35b80fd5b6040513d84823e3d90fd5b8680fd5b6282b42960e81b8652600486fd5b8480fd5b8280fd5b5080fd5b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c53314158061032f575b6102df57604051631c61872f60e31b8152602081600481731b54e762aa34cf6e28e9c082f2848e28e45da6b85afa9081156101e55782916102ed575b50306001600160a01b03909116036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e2576040516379ba509760e01b81528190818160048183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b6282b42960e81b8152600490fd5b90506020813d602011610327575b8161030860209383610807565b8101031261020a57516001600160a01b038116810361020a575f610279565b3d91506102fb565b5080546001600160a01b031633141561023d565b50346101e257806003193601126101e257602060405173bb145ca83272c3806d4ddc75ca1d5514789cf1c58152f35b50346101e25760203660031901126101e2576004356001600160a01b0381169081900361020a5773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036104865780158015610469575b8015610460575b8015610443575b8015610426575b610417578154816001600160a01b0382167fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c8580a36001600160a01b03191617815580f35b63e6c4247b60e01b8252600482fd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f9181146103d2565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b881146103cb565b503081146103c4565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c581146103bd565b6282b42960e81b8252600482fd5b50346101e25760203660031901126101e257600435906001600160a01b03821682036101e25760206104c58361083d565b6040516001600160a01b039091168152f35b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e25760405163f2fde38b60e01b815273bb145ca83272c3806d4ddc75ca1d5514789cf1c560048201528190818160248183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b50346101e257806003193601126101e2576020604051731b54e762aa34cf6e28e9c082f2848e28e45da6b88152f35b50346101e257806003193601126101e257546040516001600160a01b039091168152602090f35b50346101e257806003193601126101e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b50346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f546001600160a01b03163303610701577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316811415806106ea575b6106db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913b156106d757604051906311fd50ef60e21b825260048201525f816024818373ea0436465676ea7001535bfe2e5cbd4b137b7f915af180156106cc576106be575080f35b6106ca91505f90610807565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b50805f52600160205260ff60405f20541615610661565b6282b42960e81b5f5260045ffd5b346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f526001602052602060ff60405f2054166040519015158152f35b346106d7575f3660031901126106d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346106d75760203660031901126106d7576004356001600160a01b03811691908290036106d7575f918252600260209081526040909220546001600160a01b03168152f35b9181601f840112156106d75782359167ffffffffffffffff83116106d757602083818601950101116106d757565b90601f8019910116810190811067ffffffffffffffff82111761082957604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b038082165f8181526002602052604090205490939291168061096c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908382148015610963575b801561094d575b6106db573f60405191610ff2908184019084821067ffffffffffffffff8311176108295760609385936109928539878352602083015260408201520301905ff080156106cc5760018060a01b03168092815f52600160205260405f20600160ff19825416179055805f52600260205260405f20826bffffffffffffffffffffffff60a01b8254161790557f7e43cd64d2f6c0710f7c5386972c0578744b948bbf9e4dd31b329135fa8921cc5f80a3565b50835f52600160205260ff60405f20541661089d565b50308414610896565b925050565b908060209392818452848401375f828201840152601f01601f191601019056fe60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033a26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a0033","sourceMap":"901:3108:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;901:3108:1;1913:10;:22;1909:49;;3948:52;;964:42;3948:52;;;;901:3108;;;;;;;;;;;;;;;;;3948:52;;901:3108;;3948:52;;901:3108;;;;;;:::i;:::-;;;;-1:-1:-1;;901:3108:1;;;;;;;:::i;:::-;;;;-1:-1:-1;;901:3108:1;;;;;;;:::i;:::-;3948:52;;;964:42;3948:52;;;;;;;;901:3108;;3948:52;;;;;:::i;:::-;901:3108;;3948:52;901:3108;;;;3948:52;901:3108;;;;;;;;;3948:52;901:3108;;;1909:49;-1:-1:-1;;;1944:14:1;;901:3108;1944:14;;901:3108;;;;;;;;;;;;;;;;;;;;;;;;;1125:42;2498:10;:21;;:47;;;901:3108;2494:74;;901:3108;;-1:-1:-1;;;2582:33:1;;;901:3108;;;964:42;2582:33;;;;;;;;;;;901:3108;-1:-1:-1;2627:4:1;-1:-1:-1;;;;;901:3108:1;;;2582:50;2578:77;;964:42;2665:36;;;;901:3108;;-1:-1:-1;;;2665:36:1;;901:3108;;;;;;;964:42;2665:36;;;;;;;;901:3108;;2578:77;-1:-1:-1;;;2641:14:1;;901:3108;;2641:14;2582:33;;;;;;;;;;;;;;;;;:::i;:::-;;;901:3108;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;2582:33;;;;;;-1:-1:-1;2582:33:1;;2498:47;-1:-1:-1;901:3108:1;;-1:-1:-1;;;;;901:3108:1;2498:10;2523:22;;2498:47;;901:3108;;;;;;;;;;;;;;;;1125:42;901:3108;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;1125:42;2177:10;:21;2173:48;;2235:18;;:37;;;;901:3108;2235:62;;;;901:3108;2235:91;;;;901:3108;2235:107;;;;901:3108;2231:136;;901:3108;;;-1:-1:-1;;;;;901:3108:1;;2382:31;901:3108;;2382:31;-1:-1:-1;;;;;;901:3108:1;;;;;;2231:136;-1:-1:-1;;;2351:16:1;;901:3108;3741:16;2351;2235:107;2330:12;1043:42;2330:12;;2235:107;;:91;2313:13;964:42;2313:13;;2235:91;;:62;2292:4;;2276:21;;2235:62;;:37;2257:15;1125:42;2257:15;;2235:37;;2173:48;-1:-1:-1;;;2207:14:1;;901:3108;1944:14;2207;901:3108;;;;;;;-1:-1:-1;;901:3108:1;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;1125:42;2908:10;:21;2904:48;;964:42;2962:45;;;;901:3108;;-1:-1:-1;;;2962:45:1;;1125:42;901:3108;2962:45;;901:3108;;;;;2962:45;901:3108;;964:42;2962:45;;;;;;;;901:3108;;;;;;;;;;;;;;;;;;964:42;901:3108;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;;;;;;1043:42;901:3108;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;-1:-1:-1;;;;;901:3108:1;1913:10;:22;1909:49;;3697:7;-1:-1:-1;;;;;901:3108:1;3687:17;;;;:45;;901:3108;3683:74;;1043:42;3767:34;;;;901:3108;;;;;;3767:34;;901:3108;3767:34;;901:3108;;3767:34;;;;1043:42;3767:34;;;;;;;;901:3108;;;3767:34;;;;901:3108;3767:34;;:::i;:::-;901:3108;3767:34;901:3108;;;;;;;;;3767:34;901:3108;;;3683:74;3741:16;;;901:3108;3741:16;901:3108;;3741:16;3687:45;901:3108;;;;3709:15;901:3108;;;;;;;;3708:24;3687:45;;1909:49;1944:14;;;901:3108;1944:14;901:3108;;1944:14;901:3108;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;1240:47;901:3108;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;1173:32;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;1293:45;901:3108;;;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;901:3108:1;;;;;-1:-1:-1;901:3108:1;3019:516;-1:-1:-1;;;;;901:3108:1;;;-1:-1:-1;901:3108:1;;;3114:10;901:3108;;;;;;;;3019:516;;901:3108;;3143:41;;-1:-1:-1;3209:7:1;-1:-1:-1;;;;;901:3108:1;;3198:18;;;:46;;;;3019:516;3198:86;;;;3019:516;3194:115;;3374:16;901:3108;;3337:63;;;;;;;;;;;;;;;;901:3108;3337:63;;;;;;901:3108;;;;;;;;;;;3337:63;;;-1:-1:-1;3337:63:1;;;;;901:3108;;;;;;;;;-1:-1:-1;901:3108:1;3438:4;901:3108;;;-1:-1:-1;901:3108:1;3438:4;901:3108;;;;;;;;;-1:-1:-1;901:3108:1;3114:10;901:3108;;;-1:-1:-1;901:3108:1;;;;;;;;;;;3496:32;-1:-1:-1;3496:32:1;;3019:516::o;3198:86::-;901:3108;;-1:-1:-1;901:3108:1;3260:15;901:3108;;;;-1:-1:-1;901:3108:1;;;3198:86;;:46;3239:4;;3220:24;;3198:46;;3143:41;3170:14;-1:-1:-1;;3170:14:1:o;901:3108::-;;;;;;;;;;;;;-1:-1:-1;901:3108:1;;;;;;;;-1:-1:-1;;901:3108:1;;;;:::o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a0033","offset":6532},"2":{"value":"0xa26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","offset":6479}},"immutableReferences":{"358":[{"start":1584,"length":32},{"start":1893,"length":32},{"start":2147,"length":32}]},"transformations":[{"id":"358","type":"replace","offset":1584,"reason":"immutable"},{"id":"358","type":"replace","offset":1893,"reason":"immutable"},{"id":"358","type":"replace","offset":2147,"reason":"immutable"}],"transformationValues":{"immutables":{"358":"0x000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e"}}},"deployment":{"transactionHash":"0x3a0d08db1c99accd23b6dcef9ca666f4cd27a074568a05f6c9bd1581266aea9f","blockNumber":"26233391","transactionIndex":"145","deployer":"0xAB716305E5A8854c0DD08397087dbDD56eA32073"},"sources":{"src/ClausComputeFeeProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nimport {IProgram, ProgramTypes} from \"./IClausTradeProgram.sol\";\n\ninterface IComputeClaims {\n    function balanceOf(address owner, uint256 id) external view returns (uint256);\n    function unlock(bytes calldata data) external returns (bytes memory);\n    function burn(address from, uint256 id, uint256 amount) external;\n    function take(address currency, address to, uint256 amount) external;\n}\n\n/// @notice Allocates 0.1 percentage point FROM the existing 1.3% owner share.\n/// @dev Installed as a fixed module, the sealed hook mints the module's claims\n/// directly here. The fixed 2.3% aggregate rate and other allocations do not rise.\n/// The public claim interface matches the prepared funding runner. Every claim\n/// goes to the existing fixed operator wallet; there is no caller-set recipient.\ncontract ClausComputeFeeProgram is IProgram {\n    address public constant MANAGER = 0x000000000004444c5dc75cB358380D2e3dE08A90;\n    address public immutable active;\n    constructor(address beneficiary) { if(beneficiary==address(0)) revert InvalidClaim(); active=beneficiary; }\n    uint256 public constant COMPUTE_PIPS = 1_000;\n    uint256 public constant DIRECT_OWNER_PIPS = 12_000;\n    uint256 public constant TOTAL_OWNER_PIPS = DIRECT_OWNER_PIPS + COMPUTE_PIPS;\n    uint256 public constant TOTAL_PIPS = 23_000;\n\n    uint256 public totalClaimed;\n    uint256 private claiming;\n    uint256 private constant CALLBACK_CONSUMED = type(uint256).max;\n\n    error InvalidClaim();\n    error InvalidCallback();\n    event ComputeFundingClaimed(address indexed recipient, uint256 amount);\n\n    function quote(address, bool, int256, uint160, uint128, bytes calldata)\n        external pure returns (uint256[6] memory)\n    {\n        // Treasury, platform, buyback, staked LP, staked NFT, compute.\n        return [DIRECT_OWNER_PIPS, 3_000, 1_500, 2_000, 3_500, COMPUTE_PIPS];\n    }\n\n    /// @dev The fixed host authenticates and consumes its receipts. This\n    /// callback is deliberately side-effect-free: receipt delivery cannot depend\n    /// on a provider, bridge, oracle, ETH recipient or funding worker being up.\n    function onTrade(ProgramTypes.Trade calldata, bytes calldata)\n        external pure returns (bytes4)\n    {\n        return IProgram.onTrade.selector;\n    }\n\n    function balances() external view returns (uint256 activeAmount, uint256 treasuryAmount) {\n        return (IComputeClaims(MANAGER).balanceOf(address(this), 0), 0);\n    }\n\n    /// @notice Redeem only this program's already received ETH claims.\n    /// Anyone may trigger a batch, always to the same fixed operator account.\n    function claimActive(uint256 amount) external {\n        if (claiming != 0 || amount == 0 || amount == CALLBACK_CONSUMED\n            || amount > IComputeClaims(MANAGER).balanceOf(address(this), 0)) revert InvalidClaim();\n        claiming = amount;\n        IComputeClaims(MANAGER).unlock(abi.encode(amount));\n        claiming = 0;\n        totalClaimed += amount;\n        emit ComputeFundingClaimed(active, amount);\n    }\n\n    function unlockCallback(bytes calldata data) external returns (bytes memory) {\n        if (msg.sender != MANAGER || claiming == 0 || claiming == CALLBACK_CONSUMED || data.length != 32) revert InvalidCallback();\n        uint256 amount = abi.decode(data, (uint256));\n        if (amount != claiming) revert InvalidCallback();\n        // Retain the outer lock while preventing a second callback.\n        claiming = CALLBACK_CONSUMED;\n        IComputeClaims(MANAGER).burn(address(this), 0, amount);\n        IComputeClaims(MANAGER).take(address(0), active, amount);\n        return \"\";\n    }\n}\n\n"},"src/ClausGovernance.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nimport {ComputeProtectedProgram} from \"./ComputeProtectedProgram.sol\";\nimport {ClausComputeFeeProgram} from \"./ClausComputeFeeProgram.sol\";\n\ninterface IClausToken {\n    function owner() external view returns (address);\n    function pendingOwner() external view returns (address);\n    function acceptOwnership() external;\n    function transferOwnership(address) external;\n    function updateMetadata(string calldata, string calldata, string calldata) external;\n}\ninterface IClausHost {\n    function setModule(address) external;\n}\n\n/// @notice Separates ecosystem administration from the founder's personal key.\n/// @dev No arbitrary call, delegatecall, approval, transfer or signature entrypoint.\n/// Program logic is unrestricted; the existing personal/compute fee boundary\n/// is applied by the factory-created adapter, outside that program.\ncontract ClausGovernance {\n    address public constant TOKEN = 0x1b54E762aa34CF6E28E9C082F2848e28E45DA6b8;\n    address public constant HOST = 0xea0436465676eA7001535Bfe2E5cbd4b137b7f91;\n    address public constant FOUNDER = 0xBb145cA83272c3806D4dDc75cA1D5514789cF1C5;\n    address public immutable compute;\n    address public operator;\n    mapping(address => bool) public approvedAdapter;\n    mapping(address => address) public adapterFor;\n    event OperatorChanged(address indexed previous, address indexed current);\n    event AdapterCreated(address indexed program, address indexed adapter);\n    error Unauthorized();\n    error InvalidAddress();\n\n    constructor(address initialOperator) {\n        if (initialOperator == address(0) || initialOperator == FOUNDER ||\n            initialOperator == TOKEN || initialOperator == HOST) revert InvalidAddress();\n        operator = initialOperator;\n        compute = address(new ClausComputeFeeProgram(initialOperator));\n    }\n    modifier onlyOperator() {\n        if (msg.sender != operator) revert Unauthorized();\n        _;\n    }\n    /// The founder can revoke a compromised operating signer without giving\n    /// any autonomous signer access to the founder's funds.\n    function setOperator(address next) external {\n        if (msg.sender != FOUNDER) revert Unauthorized();\n        if (next == address(0) || next == FOUNDER || next == address(this) ||\n            next == TOKEN || next == HOST) revert InvalidAddress();\n        emit OperatorChanged(operator, next);\n        operator = next;\n    }\n    function acceptControl() external {\n        if (msg.sender != FOUNDER && msg.sender != operator) revert Unauthorized();\n        if (IClausToken(TOKEN).pendingOwner() != address(this)) revert Unauthorized();\n        IClausToken(TOKEN).acceptOwnership();\n    }\n    /// Optional founder recovery is a two-step ownership transfer. An\n    /// operating signer cannot rename its authority or redirect ownership.\n    function returnControl() external {\n        if (msg.sender != FOUNDER) revert Unauthorized();\n        IClausToken(TOKEN).transferOwnership(FOUNDER);\n    }\n    function createAdapter(address program) external returns (address adapter) {\n        adapter = adapterFor[program];\n        if (adapter != address(0)) return adapter;\n        if (program == compute || program == address(this) ||\n            approvedAdapter[program]) revert InvalidAddress();\n        adapter = address(new ComputeProtectedProgram(program, program.codehash, compute));\n        approvedAdapter[adapter] = true;\n        adapterFor[program] = adapter;\n        emit AdapterCreated(program, adapter);\n    }\n    function setModule(address module) external onlyOperator {\n        // The fallback preserves the personal share and operating revenue.\n        if (module != compute && !approvedAdapter[module]) revert InvalidAddress();\n        IClausHost(HOST).setModule(module);\n    }\n    function updateMetadata(string calldata name, string calldata symbol, string calldata uri)\n        external onlyOperator\n    {\n        IClausToken(TOKEN).updateMetadata(name, symbol, uri);\n    }\n}\n"},"src/ComputeProtectedProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\ninterface IProgramManager { function transfer(address to,uint256 id,uint256 amount) external returns(bool); }\nimport {IProgram, ProgramTypes} from \"./IClausTradeProgram.sol\";\ninterface IReceiptHost { function pending(uint256) external view returns(bytes32); }\n\n/// @notice Fixed allocation boundary for Claus' reviewed program lane.\n/// @dev Installed only through the fixed governance factory. The personal\n/// fee recipient and its 1.2% allocation remain outside program authority.\ncontract ComputeProtectedProgram is IProgram {\n    address public constant HOST=0xea0436465676eA7001535Bfe2E5cbd4b137b7f91;\n    address public constant MANAGER=0x000000000004444c5dc75cB358380D2e3dE08A90;\n    address public immutable COMPUTE;\n    uint256 public constant TREASURY_PIPS=12_000;\n    uint256 public constant COMPUTE_PIPS=1_000;\n    uint256 public constant MAX_PLAN_PIPS=149_000;\n    address public immutable program;\n    bytes32 public immutable programCodeHash;\n    mapping(uint256=>bool) public computeSettled;\n    error InvalidProgram(); error InvalidReceipt();\n    event ComputeSettled(uint256 indexed receiptId,uint256 amount);\n\n    constructor(address target,bytes32 codeHash,address compute) {\n        if(compute.code.length==0) revert InvalidProgram();\n        COMPUTE=compute;\n        if(target==address(0)||target==HOST||target==MANAGER||target==compute||target==address(this)\n            ||target.code.length==0||target.codehash!=codeHash) revert InvalidProgram();\n        program=target; programCodeHash=codeHash;\n    }\n    function defaults() private pure returns(uint256[6] memory) {\n        return [TREASURY_PIPS,3_000,1_500,2_000,3_500,COMPUTE_PIPS];\n    }\n    function quote(address sender,bool buy,int256 amountSpecified,uint160 price,uint128 liquidity,bytes calldata data)\n        external view returns(uint256[6] memory a)\n    {\n        if(program.codehash!=programCodeHash) return defaults();\n        bytes memory input=abi.encodeCall(IProgram.quote,(sender,buy,amountSpecified,price,liquidity,data));\n        address target=program; bool ok;\n        assembly(\"memory-safe\") {\n            ok:=staticcall(50000,target,add(input,32),mload(input),a,192)\n            ok:=and(ok,eq(returndatasize(),192))\n        }\n        if(!ok) return defaults();\n        a[0]=TREASURY_PIPS;\n        uint256 sum=TREASURY_PIPS;\n        for(uint256 i=1;i<6;i++) {\n            if(a[i]>MAX_PLAN_PIPS) return defaults();\n            sum+=a[i];\n        }\n        if(sum+COMPUTE_PIPS>MAX_PLAN_PIPS) return defaults();\n        // Compute replaces one tenth of a percentage point of the old owner\n        // share. An inner program's own allocation remains available to it.\n        a[5]+=COMPUTE_PIPS;\n    }\n    function computeAmount(ProgramTypes.Trade calldata trade) public pure returns(uint256 amount) {\n        if((trade.buy&&trade.amount0>0)||(!trade.buy&&trade.amount0<0)) revert InvalidReceipt();\n        // The core records pool deltas before hook fees: buy gross is the ETH\n        // spent by the pool plus the fee, sell gross is the pool's ETH output.\n        uint256 gross=trade.buy?uint256(-int256(trade.amount0))+trade.feeEth:uint256(int256(trade.amount0));\n        amount=gross*COMPUTE_PIPS/1_000_000;\n        if(amount>trade.moduleFeeEth) revert InvalidReceipt();\n    }\n    /// @notice Settle compute even when the inner program cannot execute.\n    /// Anyone may submit an original pending receipt, once, to a fixed collector.\n    function settleCompute(ProgramTypes.Trade calldata trade) public {\n        if(trade.module!=address(this)) revert InvalidReceipt();\n        if(msg.sender!=HOST&&IReceiptHost(HOST).pending(trade.id)!=keccak256(abi.encode(trade))) revert InvalidReceipt();\n        if(computeSettled[trade.id]) return;\n        uint256 amount=computeAmount(trade);\n        computeSettled[trade.id]=true;\n        if(amount!=0&&!IProgramManager(MANAGER).transfer(COMPUTE,0,amount)) revert InvalidReceipt();\n        emit ComputeSettled(trade.id,amount);\n    }\n    function onTrade(ProgramTypes.Trade calldata trade,bytes calldata data) external returns(bytes4) {\n        if(msg.sender!=HOST||trade.module!=address(this)||program.codehash!=programCodeHash) revert InvalidReceipt();\n        settleCompute(trade);\n        uint256 programFee=trade.moduleFeeEth-computeAmount(trade);\n        if(programFee!=0&&!IProgramManager(MANAGER).transfer(program,0,programFee)) revert InvalidReceipt();\n        ProgramTypes.Trade memory inner=trade;\n        inner.moduleFeeEth=programFee;\n        if(IProgram(program).onTrade(inner,data)!=IProgram.onTrade.selector) revert InvalidReceipt();\n        return IProgram.onTrade.selector;\n    }\n}\n"},"src/IClausTradeProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nlibrary ProgramTypes {\n    struct Trade {\n        uint256 id; address module; address sender; bool buy;\n        int128 amount0; int128 amount1; uint256 feeEth;\n        uint256 moduleFeeEth; uint256 blockNumber; uint256 timestamp; bytes32 dataHash;\n    }\n}\ninterface IProgram {\n    function quote(address, bool, int256, uint160, uint128, bytes calldata)\n        external view returns (uint256[6] memory);\n    function onTrade(ProgramTypes.Trade calldata, bytes calldata) external returns (bytes4);\n}\n"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.8.26+commit.8a97fa7a","compilerSettings":{"viaIR":true,"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"runs":200,"enabled":true},"evmVersion":"cancun"},"name":"ClausGovernance","fullyQualifiedName":"src/ClausGovernance.sol:ClausGovernance"},"abi":[{"type":"constructor","inputs":[{"name":"initialOperator","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"InvalidAddress","type":"error","inputs":[]},{"name":"Unauthorized","type":"error","inputs":[]},{"name":"AdapterCreated","type":"event","inputs":[{"name":"program","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"OperatorChanged","type":"event","inputs":[{"name":"previous","type":"address","indexed":true,"internalType":"address"},{"name":"current","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"FOUNDER","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"HOST","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"TOKEN","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"acceptControl","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"adapterFor","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"approvedAdapter","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"compute","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"createAdapter","type":"function","inputs":[{"name":"program","type":"address","internalType":"address"}],"outputs":[{"name":"adapter","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"operator","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"returnControl","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"setModule","type":"function","inputs":[{"name":"module","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setOperator","type":"function","inputs":[{"name":"next","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"updateMetadata","type":"function","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"uri","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"initialOperator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"program","type":"address"},{"indexed":true,"internalType":"address","name":"adapter","type":"address"}],"name":"AdapterCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previous","type":"address"},{"indexed":true,"internalType":"address","name":"current","type":"address"}],"name":"OperatorChanged","type":"event"},{"inputs":[],"name":"FOUNDER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOST","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adapterFor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvedAdapter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compute","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"program","type":"address"}],"name":"createAdapter","outputs":[{"internalType":"address","name":"adapter","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"setModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"next","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"uri","type":"string"}],"name":"updateMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"No arbitrary call, delegatecall, approval, transfer or signature entrypoint. Program logic is unrestricted; the existing personal/compute fee boundary is applied by the factory-created adapter, outside that program.","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"returnControl()":{"notice":"Optional founder recovery is a two-step ownership transfer. An operating signer cannot rename its authority or redirect ownership."},"setOperator(address)":{"notice":"The founder can revoke a compromised operating signer without giving any autonomous signer access to the founder's funds."}},"notice":"Separates ecosystem administration from the founder's personal key.","version":1}},"settings":{"compilationTarget":{"src/ClausGovernance.sol":"ClausGovernance"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[],"viaIR":true},"sources":{"src/ClausComputeFeeProgram.sol":{"keccak256":"0xe56af84593174570c10f5422aab0dccc964990dc4af69d3df9fc91abb84b4d36","license":"MIT","urls":["bzz-raw://ef235f63e27d991c3d0f3ee160337a499947e0d8882407da49a820e51957212d","dweb:/ipfs/QmWw6s7cEBkzfqVEhsxZs6b4NLi7NJ3NXrSgjg1gmYqg8D"]},"src/ClausGovernance.sol":{"keccak256":"0xd7848437f8b323e8dd2492eb2e9e507400579bcf262c2b1409744ea5f98e0838","license":"MIT","urls":["bzz-raw://e94e8cbe1d4e33629a5cebe9d9e7d152d6946a545ce3bb58e41869da40941e49","dweb:/ipfs/QmVT3LjFfYJkX3fZgnMYgjU1vuSsXZCqpPFEGVvkCzibJX"]},"src/ComputeProtectedProgram.sol":{"keccak256":"0xce5f3c78af9171740bfa3c2054c5a3863a98e94a51b284778010616a06382bd5","license":"MIT","urls":["bzz-raw://a48906485b2ae149f2664374fd1d4e823ecdb313c9ded36eb7746cb30d5e13c9","dweb:/ipfs/QmPEeJggFmZ9iAZq8L5Q5wHjG7NR3DQMbAQQoaXRsXc71A"]},"src/IClausTradeProgram.sol":{"keccak256":"0xea91e1d61152d4e7bb7693429028a3358308eb46857dcffa25275bfcb3f293b0","license":"MIT","urls":["bzz-raw://fb10700139b9ca8628e798cc93c0eff792c48d1bfac25393e2e2e1d1ce5203e3","dweb:/ipfs/Qmd5hMuHRi6YhxFVC7hWrhmwbndUaZfNx5HkAbpwUAJNHz"]}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_mapping(t_address,t_bool)":{"key":"t_address","label":"mapping(address => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_address)":{"key":"t_address","label":"mapping(address => address)","value":"t_address","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":360,"label":"operator","offset":0,"contract":"src/ClausGovernance.sol:ClausGovernance"},{"slot":"1","type":"t_mapping(t_address,t_bool)","astId":364,"label":"approvedAdapter","offset":0,"contract":"src/ClausGovernance.sol:ClausGovernance"},{"slot":"2","type":"t_mapping(t_address,t_address)","astId":368,"label":"adapterFor","offset":0,"contract":"src/ClausGovernance.sol:ClausGovernance"}]},"transientStorageLayout":null,"userdoc":{"kind":"user","notice":"Separates ecosystem administration from the founder's personal key.","methods":{"returnControl()":{"notice":"Optional founder recovery is a two-step ownership transfer. An operating signer cannot rename its authority or redirect ownership."},"setOperator(address)":{"notice":"The founder can revoke a compromised operating signer without giving any autonomous signer access to the founder's funds."}},"version":1},"devdoc":{"kind":"dev","details":"No arbitrary call, delegatecall, approval, transfer or signature entrypoint. Program logic is unrestricted; the existing personal/compute fee boundary is applied by the factory-created adapter, outside that program.","methods":{},"version":1},"sourceIds":{"src/ClausGovernance.sol":{"id":1},"src/IClausTradeProgram.sol":{"id":3},"src/ClausComputeFeeProgram.sol":{"id":0},"src/ComputeProtectedProgram.sol":{"id":2}},"additionalInput":null,"stdJsonInput":{"sources":{"src/ClausGovernance.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nimport {ComputeProtectedProgram} from \"./ComputeProtectedProgram.sol\";\nimport {ClausComputeFeeProgram} from \"./ClausComputeFeeProgram.sol\";\n\ninterface IClausToken {\n    function owner() external view returns (address);\n    function pendingOwner() external view returns (address);\n    function acceptOwnership() external;\n    function transferOwnership(address) external;\n    function updateMetadata(string calldata, string calldata, string calldata) external;\n}\ninterface IClausHost {\n    function setModule(address) external;\n}\n\n/// @notice Separates ecosystem administration from the founder's personal key.\n/// @dev No arbitrary call, delegatecall, approval, transfer or signature entrypoint.\n/// Program logic is unrestricted; the existing personal/compute fee boundary\n/// is applied by the factory-created adapter, outside that program.\ncontract ClausGovernance {\n    address public constant TOKEN = 0x1b54E762aa34CF6E28E9C082F2848e28E45DA6b8;\n    address public constant HOST = 0xea0436465676eA7001535Bfe2E5cbd4b137b7f91;\n    address public constant FOUNDER = 0xBb145cA83272c3806D4dDc75cA1D5514789cF1C5;\n    address public immutable compute;\n    address public operator;\n    mapping(address => bool) public approvedAdapter;\n    mapping(address => address) public adapterFor;\n    event OperatorChanged(address indexed previous, address indexed current);\n    event AdapterCreated(address indexed program, address indexed adapter);\n    error Unauthorized();\n    error InvalidAddress();\n\n    constructor(address initialOperator) {\n        if (initialOperator == address(0) || initialOperator == FOUNDER ||\n            initialOperator == TOKEN || initialOperator == HOST) revert InvalidAddress();\n        operator = initialOperator;\n        compute = address(new ClausComputeFeeProgram(initialOperator));\n    }\n    modifier onlyOperator() {\n        if (msg.sender != operator) revert Unauthorized();\n        _;\n    }\n    /// The founder can revoke a compromised operating signer without giving\n    /// any autonomous signer access to the founder's funds.\n    function setOperator(address next) external {\n        if (msg.sender != FOUNDER) revert Unauthorized();\n        if (next == address(0) || next == FOUNDER || next == address(this) ||\n            next == TOKEN || next == HOST) revert InvalidAddress();\n        emit OperatorChanged(operator, next);\n        operator = next;\n    }\n    function acceptControl() external {\n        if (msg.sender != FOUNDER && msg.sender != operator) revert Unauthorized();\n        if (IClausToken(TOKEN).pendingOwner() != address(this)) revert Unauthorized();\n        IClausToken(TOKEN).acceptOwnership();\n    }\n    /// Optional founder recovery is a two-step ownership transfer. An\n    /// operating signer cannot rename its authority or redirect ownership.\n    function returnControl() external {\n        if (msg.sender != FOUNDER) revert Unauthorized();\n        IClausToken(TOKEN).transferOwnership(FOUNDER);\n    }\n    function createAdapter(address program) external returns (address adapter) {\n        adapter = adapterFor[program];\n        if (adapter != address(0)) return adapter;\n        if (program == compute || program == address(this) ||\n            approvedAdapter[program]) revert InvalidAddress();\n        adapter = address(new ComputeProtectedProgram(program, program.codehash, compute));\n        approvedAdapter[adapter] = true;\n        adapterFor[program] = adapter;\n        emit AdapterCreated(program, adapter);\n    }\n    function setModule(address module) external onlyOperator {\n        // The fallback preserves the personal share and operating revenue.\n        if (module != compute && !approvedAdapter[module]) revert InvalidAddress();\n        IClausHost(HOST).setModule(module);\n    }\n    function updateMetadata(string calldata name, string calldata symbol, string calldata uri)\n        external onlyOperator\n    {\n        IClausToken(TOKEN).updateMetadata(name, symbol, uri);\n    }\n}\n"},"src/IClausTradeProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nlibrary ProgramTypes {\n    struct Trade {\n        uint256 id; address module; address sender; bool buy;\n        int128 amount0; int128 amount1; uint256 feeEth;\n        uint256 moduleFeeEth; uint256 blockNumber; uint256 timestamp; bytes32 dataHash;\n    }\n}\ninterface IProgram {\n    function quote(address, bool, int256, uint160, uint128, bytes calldata)\n        external view returns (uint256[6] memory);\n    function onTrade(ProgramTypes.Trade calldata, bytes calldata) external returns (bytes4);\n}\n"},"src/ClausComputeFeeProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nimport {IProgram, ProgramTypes} from \"./IClausTradeProgram.sol\";\n\ninterface IComputeClaims {\n    function balanceOf(address owner, uint256 id) external view returns (uint256);\n    function unlock(bytes calldata data) external returns (bytes memory);\n    function burn(address from, uint256 id, uint256 amount) external;\n    function take(address currency, address to, uint256 amount) external;\n}\n\n/// @notice Allocates 0.1 percentage point FROM the existing 1.3% owner share.\n/// @dev Installed as a fixed module, the sealed hook mints the module's claims\n/// directly here. The fixed 2.3% aggregate rate and other allocations do not rise.\n/// The public claim interface matches the prepared funding runner. Every claim\n/// goes to the existing fixed operator wallet; there is no caller-set recipient.\ncontract ClausComputeFeeProgram is IProgram {\n    address public constant MANAGER = 0x000000000004444c5dc75cB358380D2e3dE08A90;\n    address public immutable active;\n    constructor(address beneficiary) { if(beneficiary==address(0)) revert InvalidClaim(); active=beneficiary; }\n    uint256 public constant COMPUTE_PIPS = 1_000;\n    uint256 public constant DIRECT_OWNER_PIPS = 12_000;\n    uint256 public constant TOTAL_OWNER_PIPS = DIRECT_OWNER_PIPS + COMPUTE_PIPS;\n    uint256 public constant TOTAL_PIPS = 23_000;\n\n    uint256 public totalClaimed;\n    uint256 private claiming;\n    uint256 private constant CALLBACK_CONSUMED = type(uint256).max;\n\n    error InvalidClaim();\n    error InvalidCallback();\n    event ComputeFundingClaimed(address indexed recipient, uint256 amount);\n\n    function quote(address, bool, int256, uint160, uint128, bytes calldata)\n        external pure returns (uint256[6] memory)\n    {\n        // Treasury, platform, buyback, staked LP, staked NFT, compute.\n        return [DIRECT_OWNER_PIPS, 3_000, 1_500, 2_000, 3_500, COMPUTE_PIPS];\n    }\n\n    /// @dev The fixed host authenticates and consumes its receipts. This\n    /// callback is deliberately side-effect-free: receipt delivery cannot depend\n    /// on a provider, bridge, oracle, ETH recipient or funding worker being up.\n    function onTrade(ProgramTypes.Trade calldata, bytes calldata)\n        external pure returns (bytes4)\n    {\n        return IProgram.onTrade.selector;\n    }\n\n    function balances() external view returns (uint256 activeAmount, uint256 treasuryAmount) {\n        return (IComputeClaims(MANAGER).balanceOf(address(this), 0), 0);\n    }\n\n    /// @notice Redeem only this program's already received ETH claims.\n    /// Anyone may trigger a batch, always to the same fixed operator account.\n    function claimActive(uint256 amount) external {\n        if (claiming != 0 || amount == 0 || amount == CALLBACK_CONSUMED\n            || amount > IComputeClaims(MANAGER).balanceOf(address(this), 0)) revert InvalidClaim();\n        claiming = amount;\n        IComputeClaims(MANAGER).unlock(abi.encode(amount));\n        claiming = 0;\n        totalClaimed += amount;\n        emit ComputeFundingClaimed(active, amount);\n    }\n\n    function unlockCallback(bytes calldata data) external returns (bytes memory) {\n        if (msg.sender != MANAGER || claiming == 0 || claiming == CALLBACK_CONSUMED || data.length != 32) revert InvalidCallback();\n        uint256 amount = abi.decode(data, (uint256));\n        if (amount != claiming) revert InvalidCallback();\n        // Retain the outer lock while preventing a second callback.\n        claiming = CALLBACK_CONSUMED;\n        IComputeClaims(MANAGER).burn(address(this), 0, amount);\n        IComputeClaims(MANAGER).take(address(0), active, amount);\n        return \"\";\n    }\n}\n\n"},"src/ComputeProtectedProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\ninterface IProgramManager { function transfer(address to,uint256 id,uint256 amount) external returns(bool); }\nimport {IProgram, ProgramTypes} from \"./IClausTradeProgram.sol\";\ninterface IReceiptHost { function pending(uint256) external view returns(bytes32); }\n\n/// @notice Fixed allocation boundary for Claus' reviewed program lane.\n/// @dev Installed only through the fixed governance factory. The personal\n/// fee recipient and its 1.2% allocation remain outside program authority.\ncontract ComputeProtectedProgram is IProgram {\n    address public constant HOST=0xea0436465676eA7001535Bfe2E5cbd4b137b7f91;\n    address public constant MANAGER=0x000000000004444c5dc75cB358380D2e3dE08A90;\n    address public immutable COMPUTE;\n    uint256 public constant TREASURY_PIPS=12_000;\n    uint256 public constant COMPUTE_PIPS=1_000;\n    uint256 public constant MAX_PLAN_PIPS=149_000;\n    address public immutable program;\n    bytes32 public immutable programCodeHash;\n    mapping(uint256=>bool) public computeSettled;\n    error InvalidProgram(); error InvalidReceipt();\n    event ComputeSettled(uint256 indexed receiptId,uint256 amount);\n\n    constructor(address target,bytes32 codeHash,address compute) {\n        if(compute.code.length==0) revert InvalidProgram();\n        COMPUTE=compute;\n        if(target==address(0)||target==HOST||target==MANAGER||target==compute||target==address(this)\n            ||target.code.length==0||target.codehash!=codeHash) revert InvalidProgram();\n        program=target; programCodeHash=codeHash;\n    }\n    function defaults() private pure returns(uint256[6] memory) {\n        return [TREASURY_PIPS,3_000,1_500,2_000,3_500,COMPUTE_PIPS];\n    }\n    function quote(address sender,bool buy,int256 amountSpecified,uint160 price,uint128 liquidity,bytes calldata data)\n        external view returns(uint256[6] memory a)\n    {\n        if(program.codehash!=programCodeHash) return defaults();\n        bytes memory input=abi.encodeCall(IProgram.quote,(sender,buy,amountSpecified,price,liquidity,data));\n        address target=program; bool ok;\n        assembly(\"memory-safe\") {\n            ok:=staticcall(50000,target,add(input,32),mload(input),a,192)\n            ok:=and(ok,eq(returndatasize(),192))\n        }\n        if(!ok) return defaults();\n        a[0]=TREASURY_PIPS;\n        uint256 sum=TREASURY_PIPS;\n        for(uint256 i=1;i<6;i++) {\n            if(a[i]>MAX_PLAN_PIPS) return defaults();\n            sum+=a[i];\n        }\n        if(sum+COMPUTE_PIPS>MAX_PLAN_PIPS) return defaults();\n        // Compute replaces one tenth of a percentage point of the old owner\n        // share. An inner program's own allocation remains available to it.\n        a[5]+=COMPUTE_PIPS;\n    }\n    function computeAmount(ProgramTypes.Trade calldata trade) public pure returns(uint256 amount) {\n        if((trade.buy&&trade.amount0>0)||(!trade.buy&&trade.amount0<0)) revert InvalidReceipt();\n        // The core records pool deltas before hook fees: buy gross is the ETH\n        // spent by the pool plus the fee, sell gross is the pool's ETH output.\n        uint256 gross=trade.buy?uint256(-int256(trade.amount0))+trade.feeEth:uint256(int256(trade.amount0));\n        amount=gross*COMPUTE_PIPS/1_000_000;\n        if(amount>trade.moduleFeeEth) revert InvalidReceipt();\n    }\n    /// @notice Settle compute even when the inner program cannot execute.\n    /// Anyone may submit an original pending receipt, once, to a fixed collector.\n    function settleCompute(ProgramTypes.Trade calldata trade) public {\n        if(trade.module!=address(this)) revert InvalidReceipt();\n        if(msg.sender!=HOST&&IReceiptHost(HOST).pending(trade.id)!=keccak256(abi.encode(trade))) revert InvalidReceipt();\n        if(computeSettled[trade.id]) return;\n        uint256 amount=computeAmount(trade);\n        computeSettled[trade.id]=true;\n        if(amount!=0&&!IProgramManager(MANAGER).transfer(COMPUTE,0,amount)) revert InvalidReceipt();\n        emit ComputeSettled(trade.id,amount);\n    }\n    function onTrade(ProgramTypes.Trade calldata trade,bytes calldata data) external returns(bytes4) {\n        if(msg.sender!=HOST||trade.module!=address(this)||program.codehash!=programCodeHash) revert InvalidReceipt();\n        settleCompute(trade);\n        uint256 programFee=trade.moduleFeeEth-computeAmount(trade);\n        if(programFee!=0&&!IProgramManager(MANAGER).transfer(program,0,programFee)) revert InvalidReceipt();\n        ProgramTypes.Trade memory inner=trade;\n        inner.moduleFeeEth=programFee;\n        if(IProgram(program).onTrade(inner,data)!=IProgram.onTrade.selector) revert InvalidReceipt();\n        return IProgram.onTrade.selector;\n    }\n}\n"}},"language":"Solidity","settings":{"viaIR":true,"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"runs":200,"enabled":true},"evmVersion":"cancun"}},"stdJsonOutput":{"sources":{"src/ClausGovernance.sol":{"id":1},"src/IClausTradeProgram.sol":{"id":3},"src/ClausComputeFeeProgram.sol":{"id":0},"src/ComputeProtectedProgram.sol":{"id":2}},"contracts":{"src/ClausGovernance.sol":{"ClausGovernance":{"abi":[{"type":"constructor","inputs":[{"name":"initialOperator","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"InvalidAddress","type":"error","inputs":[]},{"name":"Unauthorized","type":"error","inputs":[]},{"name":"AdapterCreated","type":"event","inputs":[{"name":"program","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"OperatorChanged","type":"event","inputs":[{"name":"previous","type":"address","indexed":true,"internalType":"address"},{"name":"current","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"FOUNDER","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"HOST","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"TOKEN","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"acceptControl","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"adapterFor","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"approvedAdapter","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"compute","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"createAdapter","type":"function","inputs":[{"name":"program","type":"address","internalType":"address"}],"outputs":[{"name":"adapter","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"operator","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"returnControl","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"setModule","type":"function","inputs":[{"name":"module","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setOperator","type":"function","inputs":[{"name":"next","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"updateMetadata","type":"function","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"uri","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOperator\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"program\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"AdapterCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previous\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"current\",\"type\":\"address\"}],\"name\":\"OperatorChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FOUNDER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOST\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptControl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"adapterFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"approvedAdapter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"compute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"program\",\"type\":\"address\"}],\"name\":\"createAdapter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"returnControl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"setModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"next\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"updateMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"No arbitrary call, delegatecall, approval, transfer or signature entrypoint. Program logic is unrestricted; the existing personal/compute fee boundary is applied by the factory-created adapter, outside that program.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"returnControl()\":{\"notice\":\"Optional founder recovery is a two-step ownership transfer. An operating signer cannot rename its authority or redirect ownership.\"},\"setOperator(address)\":{\"notice\":\"The founder can revoke a compromised operating signer without giving any autonomous signer access to the founder's funds.\"}},\"notice\":\"Separates ecosystem administration from the founder's personal key.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ClausGovernance.sol\":\"ClausGovernance\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/ClausComputeFeeProgram.sol\":{\"keccak256\":\"0xe56af84593174570c10f5422aab0dccc964990dc4af69d3df9fc91abb84b4d36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef235f63e27d991c3d0f3ee160337a499947e0d8882407da49a820e51957212d\",\"dweb:/ipfs/QmWw6s7cEBkzfqVEhsxZs6b4NLi7NJ3NXrSgjg1gmYqg8D\"]},\"src/ClausGovernance.sol\":{\"keccak256\":\"0xd7848437f8b323e8dd2492eb2e9e507400579bcf262c2b1409744ea5f98e0838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e94e8cbe1d4e33629a5cebe9d9e7d152d6946a545ce3bb58e41869da40941e49\",\"dweb:/ipfs/QmVT3LjFfYJkX3fZgnMYgjU1vuSsXZCqpPFEGVvkCzibJX\"]},\"src/ComputeProtectedProgram.sol\":{\"keccak256\":\"0xce5f3c78af9171740bfa3c2054c5a3863a98e94a51b284778010616a06382bd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a48906485b2ae149f2664374fd1d4e823ecdb313c9ded36eb7746cb30d5e13c9\",\"dweb:/ipfs/QmPEeJggFmZ9iAZq8L5Q5wHjG7NR3DQMbAQQoaXRsXc71A\"]},\"src/IClausTradeProgram.sol\":{\"keccak256\":\"0xea91e1d61152d4e7bb7693429028a3358308eb46857dcffa25275bfcb3f293b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb10700139b9ca8628e798cc93c0eff792c48d1bfac25393e2e2e1d1ce5203e3\",\"dweb:/ipfs/Qmd5hMuHRi6YhxFVC7hWrhmwbndUaZfNx5HkAbpwUAJNHz\"]}},\"version\":1}","userdoc":{"kind":"user","notice":"Separates ecosystem administration from the founder's personal key.","methods":{"returnControl()":{"notice":"Optional founder recovery is a two-step ownership transfer. An operating signer cannot rename its authority or redirect ownership."},"setOperator(address)":{"notice":"The founder can revoke a compromised operating signer without giving any autonomous signer access to the founder's funds."}},"version":1},"devdoc":{"kind":"dev","details":"No arbitrary call, delegatecall, approval, transfer or signature entrypoint. Program logic is unrestricted; the existing personal/compute fee boundary is applied by the factory-created adapter, outside that program.","methods":{},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_mapping(t_address,t_bool)":{"key":"t_address","label":"mapping(address => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_address)":{"key":"t_address","label":"mapping(address => address)","value":"t_address","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":360,"label":"operator","offset":0,"contract":"src/ClausGovernance.sol:ClausGovernance"},{"slot":"1","type":"t_mapping(t_address,t_bool)","astId":364,"label":"approvedAdapter","offset":0,"contract":"src/ClausGovernance.sol:ClausGovernance"},{"slot":"2","type":"t_mapping(t_address,t_address)","astId":368,"label":"adapterFor","offset":0,"contract":"src/ClausGovernance.sol:ClausGovernance"}]},"transientStorageLayout":null,"evm":{"bytecode":{"object":"60a03461016757601f61243f38819003918201601f19168301916001600160401b038311848410176100ed5780849260209460405283398101031261016757516001600160a01b03811690819003610167578015801561014a575b801561012d575b8015610110575b610101575f80546001600160a01b031916821790556040519061091a8083016001600160401b038111848210176100ed576020928492611b25843981520301905ff080156100e2576001600160a01b03166080526040516119b9908161016c82396080518181816106300152818161076501526108630152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b63e6c4247b60e01b5f5260045ffd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f918114610068565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b88114610061565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c5811461005a565b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163040dda0f14610794575080631a43c33814610750578063431a20ae1461070f57806347f543bc146105f657806349f289dc146105c7578063570ca735146105a057806382bfefc814610571578063993c9ca9146104d7578063acf461f914610494578063b3ab15fb14610372578063ca58f2d314610343578063d9cba3991461020e5763db2a4570146100ad575f80fd5b346101e25760603660031901126101e25760043567ffffffffffffffff811161020a576100de9036906004016107d9565b60249291923567ffffffffffffffff8111610206576101019036906004016107d9565b909360443567ffffffffffffffff8111610202576101239036906004016107d9565b855491969094916001600160a01b031633036101f4578596731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101f057610186956101986101aa938997604051998a988998630db2a45760e41b8a52606060048b015260648a0191610971565b87810360031901602489015291610971565b84810360031901604486015291610971565b038183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b816101db91610807565b6101e25780f35b80fd5b6040513d84823e3d90fd5b8680fd5b6282b42960e81b8652600486fd5b8480fd5b8280fd5b5080fd5b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c53314158061032f575b6102df57604051631c61872f60e31b8152602081600481731b54e762aa34cf6e28e9c082f2848e28e45da6b85afa9081156101e55782916102ed575b50306001600160a01b03909116036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e2576040516379ba509760e01b81528190818160048183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b6282b42960e81b8152600490fd5b90506020813d602011610327575b8161030860209383610807565b8101031261020a57516001600160a01b038116810361020a575f610279565b3d91506102fb565b5080546001600160a01b031633141561023d565b50346101e257806003193601126101e257602060405173bb145ca83272c3806d4ddc75ca1d5514789cf1c58152f35b50346101e25760203660031901126101e2576004356001600160a01b0381169081900361020a5773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036104865780158015610469575b8015610460575b8015610443575b8015610426575b610417578154816001600160a01b0382167fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c8580a36001600160a01b03191617815580f35b63e6c4247b60e01b8252600482fd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f9181146103d2565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b881146103cb565b503081146103c4565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c581146103bd565b6282b42960e81b8252600482fd5b50346101e25760203660031901126101e257600435906001600160a01b03821682036101e25760206104c58361083d565b6040516001600160a01b039091168152f35b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e25760405163f2fde38b60e01b815273bb145ca83272c3806d4ddc75ca1d5514789cf1c560048201528190818160248183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b50346101e257806003193601126101e2576020604051731b54e762aa34cf6e28e9c082f2848e28e45da6b88152f35b50346101e257806003193601126101e257546040516001600160a01b039091168152602090f35b50346101e257806003193601126101e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b50346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f546001600160a01b03163303610701577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316811415806106ea575b6106db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913b156106d757604051906311fd50ef60e21b825260048201525f816024818373ea0436465676ea7001535bfe2e5cbd4b137b7f915af180156106cc576106be575080f35b6106ca91505f90610807565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b50805f52600160205260ff60405f20541615610661565b6282b42960e81b5f5260045ffd5b346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f526001602052602060ff60405f2054166040519015158152f35b346106d7575f3660031901126106d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346106d75760203660031901126106d7576004356001600160a01b03811691908290036106d7575f918252600260209081526040909220546001600160a01b03168152f35b9181601f840112156106d75782359167ffffffffffffffff83116106d757602083818601950101116106d757565b90601f8019910116810190811067ffffffffffffffff82111761082957604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b038082165f8181526002602052604090205490939291168061096c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908382148015610963575b801561094d575b6106db573f60405191610ff2908184019084821067ffffffffffffffff8311176108295760609385936109928539878352602083015260408201520301905ff080156106cc5760018060a01b03168092815f52600160205260405f20600160ff19825416179055805f52600260205260405f20826bffffffffffffffffffffffff60a01b8254161790557f7e43cd64d2f6c0710f7c5386972c0578744b948bbf9e4dd31b329135fa8921cc5f80a3565b50835f52600160205260ff60405f20541661089d565b50308414610896565b925050565b908060209392818452848401375f828201840152601f01601f191601019056fe60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033a26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a003360a034608857601f61091a38819003918201601f19168301916001600160401b03831184841017608c57808492602094604052833981010312608857516001600160a01b0381168082036088571560795760805260405161087990816100a1823960805181818161033101528181610575015261079a0152f35b633b4f091f60e21b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816302fb0c5e14610788575080631b2df8501461075f578063676bab011461070f578063728b6589146104ce5780637bb98a681461043e5780637d2152751461042257806391dd734614610233578063b918766614610216578063ba4a907d146101f9578063d54ad2a1146101dc578063dc88d0cf146100c15763de9e267c146100a2575f80fd5b346100be57806003193601126100be5760206040516159d88152f35b80fd5b50346100be5760c03660031901126100be576004356001600160a01b038116036100be57602435801515036100be576064356001600160a01b038116036100be576084356fffffffffffffffffffffffffffffffff8116036100be5760a43567ffffffffffffffff81116101d85761013d9036906004016107c9565b505060c090816040516101508282610821565b36903760405182810181811067ffffffffffffffff8211176101c4576040908152612ee08252610bb860208301526105dc828201526107d06060830152610dac60808301526103e860a08301525191825b600682106101ae57505050f35b60208060019285518152019301910190916101a1565b634e487b7160e01b83526041600452602483fd5b5080fd5b50346100be57806003193601126100be5760209054604051908152f35b50346100be57806003193601126100be5760206040516132c88152f35b50346100be57806003193601126100be576020604051612ee08152f35b50346103ee5760203660031901126103ee5760043567ffffffffffffffff81116103ee576102659036906004016107c9565b6e04444c5dc75cb358380d2e3de08a903314801590610418575b801561040c575b8015610401575b6103f25781602091810103126103ee573560015481036103f2575f196001556e04444c5dc75cb358380d2e3de08a903b156103ee57604051637a94c56560e11b81523060048201525f60248201528160448201525f81606481836e04444c5dc75cb358380d2e3de08a905af180156103e3576103ce575b506e04444c5dc75cb358380d2e3de08a903b156101d857604051630b0d9c0960e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602482015260448101919091528181606481836e04444c5dc75cb358380d2e3de08a905af180156103c3576103ae575b6103aa826040519061039c602083610821565b8152604051918291826107f7565b0390f35b6103b9828092610821565b6100be575f610389565b6040513d84823e3d90fd5b6103db9192505f90610821565b5f905f610304565b6040513d5f823e3d90fd5b5f80fd5b63f7a632f560e01b5f5260045ffd5b50602081141561028d565b506001545f1914610286565b506001541561027f565b346103ee575f3660031901126103ee5760206040516103e88152f35b346103ee575f3660031901126103ee57604051627eeac760e11b81523060048201525f60248201526020816044816e04444c5dc75cb358380d2e3de08a905afa80156103e3575f9061049b575b60409081519081525f6020820152f35b506020813d6020116104c6575b816104b560209383610821565b810103126103ee576040905161048b565b3d91506104a8565b346103ee5760203660031901126103ee5760043560015415801590610707575b80156106fd575b8015610684575b610675578060015561053a5f60405183602082015260208152610520604082610821565b604051809381926348c8949160e01b8352600483016107f7565b0381836e04444c5dc75cb358380d2e3de08a905af180156103e3576105da575b505f6001555f548181018091116105c6575f556040519081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316907f2c190f214bdf51a4b369ef5ce6aba1d7f7a5405454f020ebcf219ce1adc7741d90602090a2005b634e487b7160e01b5f52601160045260245ffd5b3d805f833e6105e98183610821565b8101906020818303126103ee5780519067ffffffffffffffff82116103ee570181601f820112156103ee5780519067ffffffffffffffff8211610661576040519261063e601f8401601f191660200185610821565b828452602083830101116103ee57815f9260208093018386015e8301015261055a565b634e487b7160e01b5f52604160045260245ffd5b633b4f091f60e21b5f5260045ffd5b50604051627eeac760e11b81523060048201525f60248201526020816044816e04444c5dc75cb358380d2e3de08a905afa9081156103e3575f916106cb575b5081116104fc565b90506020813d6020116106f5575b816106e660209383610821565b810103126103ee5751826106c3565b3d91506106d9565b505f1981146104f5565b5080156104ee565b346103ee57366003190161018081126103ee57610160136103ee576101643567ffffffffffffffff81116103ee5761074b9036906004016107c9565b505060405163676bab0160e01b8152602090f35b346103ee575f3660031901126103ee5760206040516e04444c5dc75cb358380d2e3de08a908152f35b346103ee575f3660031901126103ee577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9181601f840112156103ee5782359167ffffffffffffffff83116103ee57602083818601950101116103ee57565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff8211176106615760405256fea26469706673582212208c6775e1803c32c3b1fed8787982b6586c7bb332e95cd4abfb4c40764c8fd58164736f6c634300081a0033","sourceMap":"901:3108:1:-:0;;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;1604:29;;:59;;;;-1:-1:-1;1604:99:1;;;;-1:-1:-1;1604:126:1;;;;-1:-1:-1;1600:155:1;;-1:-1:-1;1043:42:1;;-1:-1:-1;;;;;;1043:42:1;;;;;901:3108;;;1819:43;;;;-1:-1:-1;;;;;1819:43:1;;;;;;;;901:3108;1819:43;;;;;;1043:42;;1819:43;;;-1:-1:-1;1819:43:1;;;;;-1:-1:-1;;;;;901:3108:1;1801:62;;901:3108;;;;;;;;1801:62;901:3108;;;;;;;;;;;;;;;;1819:43;901:3108;;1043:42;-1:-1:-1;1043:42:1;;;;;1819:43;901:3108;;;-1:-1:-1;901:3108:1;;;;;-1:-1:-1;901:3108:1;1600:155;1739:16;;;-1:-1:-1;1739:16:1;;-1:-1:-1;1739:16:1;1604:126;1707:23;1043:42;1707:23;;1604:126;;:99;1679:24;964:42;1679:24;;1604:99;;:59;1637:26;1125:42;1637:26;;1604:59;;901:3108;-1:-1:-1;901:3108:1;","linkReferences":{}},"deployedBytecode":{"object":"6080806040526004361015610012575f80fd5b5f905f3560e01c908163040dda0f14610794575080631a43c33814610750578063431a20ae1461070f57806347f543bc146105f657806349f289dc146105c7578063570ca735146105a057806382bfefc814610571578063993c9ca9146104d7578063acf461f914610494578063b3ab15fb14610372578063ca58f2d314610343578063d9cba3991461020e5763db2a4570146100ad575f80fd5b346101e25760603660031901126101e25760043567ffffffffffffffff811161020a576100de9036906004016107d9565b60249291923567ffffffffffffffff8111610206576101019036906004016107d9565b909360443567ffffffffffffffff8111610202576101239036906004016107d9565b855491969094916001600160a01b031633036101f4578596731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101f057610186956101986101aa938997604051998a988998630db2a45760e41b8a52606060048b015260648a0191610971565b87810360031901602489015291610971565b84810360031901604486015291610971565b038183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b816101db91610807565b6101e25780f35b80fd5b6040513d84823e3d90fd5b8680fd5b6282b42960e81b8652600486fd5b8480fd5b8280fd5b5080fd5b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c53314158061032f575b6102df57604051631c61872f60e31b8152602081600481731b54e762aa34cf6e28e9c082f2848e28e45da6b85afa9081156101e55782916102ed575b50306001600160a01b03909116036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e2576040516379ba509760e01b81528190818160048183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b6282b42960e81b8152600490fd5b90506020813d602011610327575b8161030860209383610807565b8101031261020a57516001600160a01b038116810361020a575f610279565b3d91506102fb565b5080546001600160a01b031633141561023d565b50346101e257806003193601126101e257602060405173bb145ca83272c3806d4ddc75ca1d5514789cf1c58152f35b50346101e25760203660031901126101e2576004356001600160a01b0381169081900361020a5773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036104865780158015610469575b8015610460575b8015610443575b8015610426575b610417578154816001600160a01b0382167fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c8580a36001600160a01b03191617815580f35b63e6c4247b60e01b8252600482fd5b5073ea0436465676ea7001535bfe2e5cbd4b137b7f9181146103d2565b50731b54e762aa34cf6e28e9c082f2848e28e45da6b881146103cb565b503081146103c4565b5073bb145ca83272c3806d4ddc75ca1d5514789cf1c581146103bd565b6282b42960e81b8252600482fd5b50346101e25760203660031901126101e257600435906001600160a01b03821682036101e25760206104c58361083d565b6040516001600160a01b039091168152f35b50346101e257806003193601126101e25773bb145ca83272c3806d4ddc75ca1d5514789cf1c533036102df57731b54e762aa34cf6e28e9c082f2848e28e45da6b83b156101e25760405163f2fde38b60e01b815273bb145ca83272c3806d4ddc75ca1d5514789cf1c560048201528190818160248183731b54e762aa34cf6e28e9c082f2848e28e45da6b85af180156101e5576101d15750f35b50346101e257806003193601126101e2576020604051731b54e762aa34cf6e28e9c082f2848e28e45da6b88152f35b50346101e257806003193601126101e257546040516001600160a01b039091168152602090f35b50346101e257806003193601126101e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b50346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f546001600160a01b03163303610701577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316811415806106ea575b6106db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913b156106d757604051906311fd50ef60e21b825260048201525f816024818373ea0436465676ea7001535bfe2e5cbd4b137b7f915af180156106cc576106be575080f35b6106ca91505f90610807565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b50805f52600160205260ff60405f20541615610661565b6282b42960e81b5f5260045ffd5b346106d75760203660031901126106d7576004356001600160a01b038116908190036106d7575f526001602052602060ff60405f2054166040519015158152f35b346106d7575f3660031901126106d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346106d75760203660031901126106d7576004356001600160a01b03811691908290036106d7575f918252600260209081526040909220546001600160a01b03168152f35b9181601f840112156106d75782359167ffffffffffffffff83116106d757602083818601950101116106d757565b90601f8019910116810190811067ffffffffffffffff82111761082957604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b038082165f8181526002602052604090205490939291168061096c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908382148015610963575b801561094d575b6106db573f60405191610ff2908184019084821067ffffffffffffffff8311176108295760609385936109928539878352602083015260408201520301905ff080156106cc5760018060a01b03168092815f52600160205260405f20600160ff19825416179055805f52600260205260405f20826bffffffffffffffffffffffff60a01b8254161790557f7e43cd64d2f6c0710f7c5386972c0578744b948bbf9e4dd31b329135fa8921cc5f80a3565b50835f52600160205260ff60405f20541661089d565b50308414610896565b925050565b908060209392818452848401375f828201840152601f01601f191601019056fe60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033a26469706673582212209a7029534b887943e9e5e41fb3a00d0a8d30751fdfe7aeb01d34cff684f0b22464736f6c634300081a0033","sourceMap":"901:3108:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;901:3108:1;1913:10;:22;1909:49;;3948:52;;964:42;3948:52;;;;901:3108;;;;;;;;;;;;;;;;;3948:52;;901:3108;;3948:52;;901:3108;;;;;;:::i;:::-;;;;-1:-1:-1;;901:3108:1;;;;;;;:::i;:::-;;;;-1:-1:-1;;901:3108:1;;;;;;;:::i;:::-;3948:52;;;964:42;3948:52;;;;;;;;901:3108;;3948:52;;;;;:::i;:::-;901:3108;;3948:52;901:3108;;;;3948:52;901:3108;;;;;;;;;3948:52;901:3108;;;1909:49;-1:-1:-1;;;1944:14:1;;901:3108;1944:14;;901:3108;;;;;;;;;;;;;;;;;;;;;;;;;1125:42;2498:10;:21;;:47;;;901:3108;2494:74;;901:3108;;-1:-1:-1;;;2582:33:1;;;901:3108;;;964:42;2582:33;;;;;;;;;;;901:3108;-1:-1:-1;2627:4:1;-1:-1:-1;;;;;901:3108:1;;;2582:50;2578:77;;964:42;2665:36;;;;901:3108;;-1:-1:-1;;;2665:36:1;;901:3108;;;;;;;964:42;2665:36;;;;;;;;901:3108;;2578:77;-1:-1:-1;;;2641:14:1;;901:3108;;2641:14;2582:33;;;;;;;;;;;;;;;;;:::i;:::-;;;901:3108;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;2582:33;;;;;;-1:-1:-1;2582:33:1;;2498:47;-1:-1:-1;901:3108:1;;-1:-1:-1;;;;;901:3108:1;2498:10;2523:22;;2498:47;;901:3108;;;;;;;;;;;;;;;;1125:42;901:3108;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;1125:42;2177:10;:21;2173:48;;2235:18;;:37;;;;901:3108;2235:62;;;;901:3108;2235:91;;;;901:3108;2235:107;;;;901:3108;2231:136;;901:3108;;;-1:-1:-1;;;;;901:3108:1;;2382:31;901:3108;;2382:31;-1:-1:-1;;;;;;901:3108:1;;;;;;2231:136;-1:-1:-1;;;2351:16:1;;901:3108;3741:16;2351;2235:107;2330:12;1043:42;2330:12;;2235:107;;:91;2313:13;964:42;2313:13;;2235:91;;:62;2292:4;;2276:21;;2235:62;;:37;2257:15;1125:42;2257:15;;2235:37;;2173:48;-1:-1:-1;;;2207:14:1;;901:3108;1944:14;2207;901:3108;;;;;;;-1:-1:-1;;901:3108:1;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;1125:42;2908:10;:21;2904:48;;964:42;2962:45;;;;901:3108;;-1:-1:-1;;;2962:45:1;;1125:42;901:3108;2962:45;;901:3108;;;;;2962:45;901:3108;;964:42;2962:45;;;;;;;;901:3108;;;;;;;;;;;;;;;;;;964:42;901:3108;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;;;;;;1043:42;901:3108;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;-1:-1:-1;;;;;901:3108:1;1913:10;:22;1909:49;;3697:7;-1:-1:-1;;;;;901:3108:1;3687:17;;;;:45;;901:3108;3683:74;;1043:42;3767:34;;;;901:3108;;;;;;3767:34;;901:3108;3767:34;;901:3108;;3767:34;;;;1043:42;3767:34;;;;;;;;901:3108;;;3767:34;;;;901:3108;3767:34;;:::i;:::-;901:3108;3767:34;901:3108;;;;;;;;;3767:34;901:3108;;;3683:74;3741:16;;;901:3108;3741:16;901:3108;;3741:16;3687:45;901:3108;;;;3709:15;901:3108;;;;;;;;3708:24;3687:45;;1909:49;1944:14;;;901:3108;1944:14;901:3108;;1944:14;901:3108;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;1240:47;901:3108;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;1173:32;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;-1:-1:-1;;901:3108:1;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;1293:45;901:3108;;;;;;;;;-1:-1:-1;;;;;901:3108:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;901:3108:1;;;;;-1:-1:-1;901:3108:1;3019:516;-1:-1:-1;;;;;901:3108:1;;;-1:-1:-1;901:3108:1;;;3114:10;901:3108;;;;;;;;3019:516;;901:3108;;3143:41;;-1:-1:-1;3209:7:1;-1:-1:-1;;;;;901:3108:1;;3198:18;;;:46;;;;3019:516;3198:86;;;;3019:516;3194:115;;3374:16;901:3108;;3337:63;;;;;;;;;;;;;;;;901:3108;3337:63;;;;;;901:3108;;;;;;;;;;;3337:63;;;-1:-1:-1;3337:63:1;;;;;901:3108;;;;;;;;;-1:-1:-1;901:3108:1;3438:4;901:3108;;;-1:-1:-1;901:3108:1;3438:4;901:3108;;;;;;;;;-1:-1:-1;901:3108:1;3114:10;901:3108;;;-1:-1:-1;901:3108:1;;;;;;;;;;;3496:32;-1:-1:-1;3496:32:1;;3019:516::o;3198:86::-;901:3108;;-1:-1:-1;901:3108:1;3260:15;901:3108;;;;-1:-1:-1;901:3108:1;;;3198:86;;:46;3239:4;;3220:24;;3198:46;;3143:41;3170:14;-1:-1:-1;;3170:14:1:o;901:3108::-;;;;;;;;;;;;;-1:-1:-1;901:3108:1;;;;;;;;-1:-1:-1;;901:3108:1;;;;:::o","linkReferences":{},"immutableReferences":{"358":[{"start":1584,"length":32},{"start":1893,"length":32},{"start":2147,"length":32}]}}}}}}},"signatures":{"function":[{"signature":"acceptControl()","signatureHash4":"0xd9cba399","signatureHash32":"0xd9cba39910bf06e87e256df9661e49cdb36fc5004fd67a8e6926155fa655ac08"},{"signature":"adapterFor(address)","signatureHash4":"0x040dda0f","signatureHash32":"0x040dda0f64274836254b78fdb1dd3b35b273a7ed57e28070238485a1f283ebd7"},{"signature":"approvedAdapter(address)","signatureHash4":"0x431a20ae","signatureHash32":"0x431a20ae291ac399e3c30c8d0ff71845c533a85b35c71edfba1ffbe753b9725a"},{"signature":"compute()","signatureHash4":"0x1a43c338","signatureHash32":"0x1a43c338c9feadc5c7568a59dfd567ecd8f97a73e894b5fc51ab39f4adb86998"},{"signature":"createAdapter(address)","signatureHash4":"0xacf461f9","signatureHash32":"0xacf461f9c388f7b4a3dd3ce99afa71465cad6e4b2a2ea56fc0354110cdaf2270"},{"signature":"FOUNDER()","signatureHash4":"0xca58f2d3","signatureHash32":"0xca58f2d347feb4d74f9b3a4c9577fb442a4782656e32f11f121d8019c871ca3a"},{"signature":"HOST()","signatureHash4":"0x49f289dc","signatureHash32":"0x49f289dc6d1588d3d695552a5a54cea9194339e5d93aee2291fb17ec0355e742"},{"signature":"operator()","signatureHash4":"0x570ca735","signatureHash32":"0x570ca735581959075ebe5d80866c147e02e10468660b2778657d32bffe1eb83d"},{"signature":"returnControl()","signatureHash4":"0x993c9ca9","signatureHash32":"0x993c9ca958e6799f1c0dfbbed79fbba8e941ea426f7a43c0589c6b2d497df7e2"},{"signature":"setModule(address)","signatureHash4":"0x47f543bc","signatureHash32":"0x47f543bc7144bcf0c0df31d129d0fea1730c1f79b63e34ae9d740a660916fc06"},{"signature":"setOperator(address)","signatureHash4":"0xb3ab15fb","signatureHash32":"0xb3ab15fb11ffa7b9eb05d4bbbaf2cc0222cb2634965b63d8b5553144f6f789ce"},{"signature":"TOKEN()","signatureHash4":"0x82bfefc8","signatureHash32":"0x82bfefc80c57fa86d0814dd9ba0cecf9f7b43d38c392571a7c09853f5014e48d"},{"signature":"updateMetadata(string,string,string)","signatureHash4":"0xdb2a4570","signatureHash32":"0xdb2a457087339876cec6a56109f7d634b4767baaab1dd3d9f6dd0b72bb25ce9c"}],"event":[{"signature":"AdapterCreated(address,address)","signatureHash4":"0x7e43cd64","signatureHash32":"0x7e43cd64d2f6c0710f7c5386972c0578744b948bbf9e4dd31b329135fa8921cc"},{"signature":"OperatorChanged(address,address)","signatureHash4":"0xd58299b7","signatureHash32":"0xd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c"}],"error":[{"signature":"InvalidAddress()","signatureHash4":"0xe6c4247b","signatureHash32":"0xe6c4247b90bd06996a32d386bb770af9c0018dd1b0ebbb2df2c4499f1eda7b16"},{"signature":"Unauthorized()","signatureHash4":"0x82b42900","signatureHash32":"0x82b4290015f7ec7256ca2a6247d3c2a89c4865c0e791456df195f40ad0a81367"}]},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"match":"exact_match","chainId":"1","address":"0x180eAE784dEe739FBab432B06f78bF9a98Aae334"}