0 txs
1 call
constructor
constructor(address _router, address _quoter, address _balancerV2Vault, address _balancerQueries)
functions
BALANCER_QUERIES
viewfunction BALANCER_QUERIES() view returns (address)
BALANCER_VAULT
viewfunction BALANCER_VAULT() view returns (address)
calculatePriceDifferenceBps
purefunction calculatePriceDifferenceBps(tuple amountA, tuple amountB) pure returns (uint256 priceDifferenceBps)
getQuoteAmounts
viewfunction getQuoteAmounts(uint8 direction, address baseToken, address quoteToken, uint256 quoteSize, tuple params) view returns (uint256 baseTokens, uint256 quoteTokens)
quoter
viewfunction quoter() view returns (address)
router
viewfunction router() view returns (address)
version
viewfunction version() view returns (string)
call
nonpayablefunction call(address[] vaults, address baseToken, address quoteToken, uint8 flavor, bytes flavorParams, tuple orderBookParams) returns (tuple)
getQuoteAmounts
nonpayablefunction getQuoteAmounts(uint8 direction, address baseToken, address quoteToken, uint256 quoteSize, tuple params) returns (uint256 baseTokens, uint256 quoteTokens)
getQuoteAmounts
nonpayablefunction getQuoteAmounts(uint8 direction, address exactToken, address otherToken, uint256 baseTokenAmount, tuple[] swapParams) returns (uint256 exactTokens, uint256 otherTokens)
events
No events.
errors
InvalidBaseTokenAmount
error InvalidBaseTokenAmount()
OutputTokenIsNotQuoteToken
error OutputTokenIsNotQuoteToken()
PathIsEmpty
error PathIsEmpty()
ZeroAddress
error ZeroAddress()
creation bytecode
0x610100806040523461025457608081613a64803803809161002082856103b8565b8339810103126102545780516001600160a01b0381169190828103610254576020820151906001600160a01b038216908183036102545761006f6060610068604087016103db565b95016103db565b9460405163c45a015560e01b8152602081600481855afa908115610373575f9161037e575b506001600160a01b0316151590816102fe575b50156102b9575f9182916080526040518260208201916312a9293f60e21b8352600481526100d66024826103b8565b51925af13d156102b1573d906001600160401b03821161029d5760405191610108601f8201601f1916602001846103b8565b82523d5f602084013e5b156102585760208180518101031261025457602001516001600160a01b0381169081900361025457156102035760a0526001600160a01b038116156101f4576001600160a01b038216156101f45760e05260c05260405161367490816103f082396080518181816101df0152818161032801528181610404015261169c015260a05181818161022301528181610edd01528181610f7f01528181611b1a0152611db0015260c0518181816104db015281816109bd0152818161245b01526128e8015260e051818181610267015281816106080152818161214401526125d70152f35b63d92e233d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602360248201527f556e69563351756f74657256323a204d6973636f6e666967757265642051756f6044820152623a32b960e91b6064820152608490fd5b5f80fd5b60405162461bcd60e51b815260206004820152601f60248201527f556e69563351756f74657256323a20496e636f72726563742051756f746572006044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606090610112565b60405162461bcd60e51b815260206004820152601b60248201527f556e6956324c65676163793a20496e76616c696420726f7574657200000000006044820152606490fd5b6040516315ab88c960e31b81529150602090829060049082905afa908115610373575f91610339575b506001600160a01b031615155f6100a7565b90506020813d60201161036b575b81610354602093836103b8565b8101031261025457610365906103db565b5f610327565b3d9150610347565b6040513d5f823e3d90fd5b90506020813d6020116103b0575b81610399602093836103b8565b81010312610254576103aa906103db565b5f610094565b3d915061038c565b601f909101601f19168101906001600160401b0382119082101761029d57604052565b51906001600160a01b03821682036102545756fe610120806040526004361015610013575f80fd5b5f3560e01c908163472b52971461114e5750806354fd4d501461111b5780637364caaf14610bef5780637f6a8c951461050a5780639b6d6bbb146104c6578063afb66d3f14610296578063bc16384614610252578063c6bbd5a71461020e578063f887ea40146101ca5763fa57bb0b1461008b575f80fd5b346101c6573660031901608081126101c6576040136101c6576040516100b081612da2565b60043581526020810190602435825260406043193601126101c657604051906100d882612da2565b60443582526020820192606435845281511580156101bd575b15610107575050505060205f195b604051908152f35b51670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561019b576101349151906130df565b9151670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561019b576101629151906130df565b81818111156101af579061017591613246565b612710810290808204612710149015171561019b57602091610196916130df565b6100ff565b634e487b7160e01b5f52601160045260245ffd5b6101b891613246565b610175565b508251156100f1565b5f80fd5b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c65760a03660031901126101c65760043560028110156101c6576102bb612c90565b906102c4612ca6565b91606435916084356001600160401b0381116101c6576102e8903690600401613015565b906102f2816130fd565b806103c15750610324935f93926103089261354d565b60405163d06ca61f60e01b8152938492839290600484016132d8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103b6575f91610394575b5061036a81613063565b5181515f1981019290831161019b5760409261038591613070565b51905b82519182526020820152f35b6103b091503d805f833e6103a88183612dd8565b8101906132b0565b81610360565b6040513d5f823e3d90fd5b9192916001906103d0816130fd565b0361048157610400935f936103e4926134ad565b6040516307c0329d60e21b8152938492839290600484016132d8565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103b6575f91610467575b5061044681613063565b5181515f1981019290831161019b5760409261046191613070565b51610388565b61047b91503d805f833e6103a88183612dd8565b8161043c565b60405162461bcd60e51b815260206004820152601c60248201527f556e6956324c65676163793a2057524f4e475f444952454354494f4e000000006044820152606490fd5b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c65760a03660031901126101c65760043560028110156101c65761052f612c90565b90610538612ca6565b906064356084356001600160401b0381116101c65761055b903690600401612f7f565b935f606060405161056b81612d3d565b8281528260208201528260408201520152845115610be0578115610bd15784519061059582612e1d565b916105a36040519384612dd8565b8083526105b2601f1991612e1d565b015f5b818110610b9b5750508551936001850180951161019b5790946105f06105da86612e1d565b956105e86040519788612dd8565b808752612e1d565b602086019690601f1901368837610606836130fd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925f9260209282159290855b8c518110156108da579081868e61065d6004969560018060a01b0392613070565b5151166040519586809263038fff2d60e41b82525afa9384156103b6575f946108ab575b50604051631f29a8cd60e31b8152600481018590525f816024818d5afa9283156103b6578d915f946107e4575b506001600160a01b0316906106c4908390613070565b528d86156107dd5750600181019384821161019b578e945b87156107c85782935b6001600160a01b03906107099060ff8c6106ff888c613070565b5101511690613070565b511695515f19810190811161019b578314806107b5575b6107a657600183019384841161019b57868f60019661073e91613070565b528361079f578d905b604051926107558c85612dd8565b5f84528c368d8601376040519461076b86612d87565b85528b85015260408401526060830152608082015261078a828c613070565b52610795818b613070565b500191909161063c565b5f90610747565b632757a36f60e21b5f5260045ffd5b506001600160a01b038716861415610720565b60018301955085831161019b578f95936106e5565b93816106dc565b915092503d805f833e6107f78183612dd8565b81016060828203126101c65781516001600160401b0381116101c657820181601f820112156101c65780519061082c82612e1d565b9161083a6040519384612dd8565b8083528b8084019160051b830101918483116101c6578c01905b82821061088c5750505089830151906001600160401b0382116101c6578f936106c49386936108839201613253565b509491506106ae565b81516001600160a01b03811681036101c6578152908c01908c01610854565b9093508681813d83116108d3575b6108c38183612dd8565b810103126101c65751928e610681565b503d6108b9565b888387878f8f8215610b9357600190955b6040516108f781612d3d565b3081528581015f8152604082019130835260608101935f8552886040519b8c97637c26833760e11b895260e489019061092f816130fd565b60048a015260e060248a01528351809152610104890190836101048260051b8c01019501915f905b828210610b2b575050505087830360031901604489015251808352910196905f5b8a828210610b0b57505091516001600160a01b03908116606488015292511515608487015250509051811660a48401529051151560c48301525f9282900390829084907f0000000000000000000000000000000000000000000000000000000000000000165af19384156103b6575f94610a79575b506109f7836130fd565b8015610a6657610a18610a12610a0c86613063565b51613236565b936130fd565b15610a445782515f1981019390841161019b57604093610a3791613070565b51905b8351928352820152f35b82515f19810190811161019b57610a0c610a6091604095613070565b90610a3a565b610a18610a7285613063565b51936130fd565b9093503d805f833e610a8b8183612dd8565b81019082818303126101c6578051906001600160401b0382116101c657019080601f830112156101c6578151610ac081612e1d565b92610ace6040519485612dd8565b818452848085019260051b8201019283116101c65784809101915b838310610afb575050505092846109ed565b8251815291810191859101610ae9565b83516001600160a01b03168a52988901988d985090920191600101610978565b92969798999a94610b7d81929597600194976101031990820301865260a060808b5180518452858101518685015260408101516040850152606081015160608501520151918160808201520190612cd0565b970192019201928c938f9a999897969593610957565b5f90956108eb565b602090604051610baa81612d87565b5f81525f838201525f60408201525f606082015260606080820152828287010152016105b5565b63a0be088b60e01b5f5260045ffd5b630b5b36c560e41b5f5260045ffd5b346101c65760a03660031901126101c65760043560028110156101c657610c14612c90565b610c1c612ca6565b916064356084356001600160401b0381116101c657610c3f903690600401612e99565b5191610c496133df565b5060208301938451518015159081611104575b50156110c9578351516002810180911161019b57610c79906133f8565b95610c826133df565b50845151958051516001880180891161019b57810361108a57610ca68897986133f8565b97610cb082612e1d565b97610cbe604051998a612dd8565b828952601f19610ccd84612e1d565b013660208b01375f198101818111925f5b8381106110575750505050505f5f19820192828411915b83811061102257505050505060405195610d0e87612da2565b865260208601948552610d2087613063565b6001600160a01b03909116905285515f19810190811161019b57610d449087613070565b6001600160a01b0390911690525f5b84518051821015610d94576001600160a01b0390610d72908390613070565b511690600181019182821161019b57610d8d60019389613070565b5201610d53565b505091516040519285610da685612da2565b845260208401918252610dc0610dbb85613616565b61342a565b610dcc610dbb85613616565b602093604051610ddc8682612dd8565b5f8152601f1986013687830137915f925b845151841015610e6057610e58600191610e08868651613070565b5190610e15878951613070565b5160405160609390931b6bffffffffffffffffffffffff19168b84015260e81b6001600160e81b031916603483015260178252610e53603783612dd8565b61346d565b930192610ded565b82518051889288925f19830192831161019b57610ea792610e8091613070565b5190604051916001600160601b03199060601b168583015260148252610e53603483612dd8565b92610eb1816130fd565b80610f4857505f81610ed894604051958692839263cdca175360e01b84526004840161321a565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156103b6576040935f91610f23575b50918351928352820152f35b610f3f91503d805f833e610f378183612dd8565b810190613107565b50505084610f17565b600190610f54816130fd565b03610fdd575f81610f7a946040519586928392632f80bb1d60e01b84526004840161321a565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156103b6576040935f91610fc0575b5091610a3a565b610fd491503d805f833e610f378183612dd8565b50505084610fb9565b60405162461bcd60e51b815260048101839052601e60248201527f556e69563351756f74657256323a2057524f4e475f444952454354494f4e00006044820152606490fd5b8151908361019b5762ffffff61104460019361103e848a613246565b90613070565b5116611050828d613070565b5201610cf5565b8151908561019b578d6110838260019461107b868060a01b039161103e848b613246565b511692613070565b5201610cde565b60405162461bcd60e51b8152602060048201526017602482015276556e6956333a204241445f504154485f4c454e4754485360481b6044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272556e695633506174683a204241445f5056494160681b6044820152606490fd5b8551515f198201925090821161019b571487610c5c565b346101c6575f3660031901126101c65761114a611136612df9565b604051918291602083526020830190612cd0565b0390f35b346101c6576101003660031901126101c6576001600160401b03600435116101c6573660236004350112156101c6576001600160401b0360043560040135116101c657602460043501903660246004356004013560051b6004350101116101c6576111b7612c90565b6111bf612ca6565b916003606435101591826101c6576001600160401b03608435116101c6573660236084350112156101c65760843560040135916001600160401b0383116101c657366024846084350101116101c65760603660a31901126101c65761122381612d3d565b6060815260405161123381612d6c565b60608152606060208201525f6040820152602082015260405161125581612d6c565b60405161126181612da2565b5f81525f60208201528152606060208201525f6040820152604082015260606040519161128d83612d87565b5f83525f60208401525f60408401525f828401525f608084015201526004356004013515612c7c576112be8561304f565b6040516370a0823160e01b81526001600160a01b03918216600482015295906020908790602490829086165afa9586156103b6575f96612c46575b506113039061304f565b6040516370a0823160e01b81526001600160a01b039182166004820152906020908290602490829089165afa9081156103b6575f91612c14575b506040519561134b87612da2565b8652602086015261136160043560040135612e1d565b9261136f6040519485612dd8565b60048035013580855261138190612e1d565b601f19013660208601375f5b600435600401358110156113c3576001906113b160248260051b600435010161304f565b316113bc8288613070565b520161138d565b5085946113d160a435613084565b9260c43560c0526113e360a435613084565b945f5b60a4358110611638578888886114046113fe8a61332f565b9161332f565b9161140d612df9565b9260405160208101906040825261144e8161144061142e6060830189612cf4565b828103601f1901604084015286612cf4565b03601f198101835282612dd8565b519020906040519361145f85612d6c565b845260208401526040830152604051602081019060808101865183526020870151604083015260608083015283518091528160a0810160208601925f5b81811061161f5750506114b8925003601f198101835282612dd8565b51902090604051946114c986612d6c565b855260208501526040840152604051926114e284612d87565b4284524360208501524660408501524860608501524560808501526040519261150a84612d3d565b83526020830191825260408301908152606083019384526115406040519360208552516101006020860152610120850190612cd0565b915191601f1984820301604085015260408061157a6115688651606086526060860190612cf4565b60208701518582036020870152612cf4565b9401519101525190601f198382030160608401526080810191602081518051845201516020830152602081015192608060408401528351809152602060a084019401905f5b8181106116095750505093608091606060408697015191015251805182850152602081015160a0850152604081015160c0850152606081015160e085015201516101008301520390f35b82518652602095860195909201916001016115bf565b845183526020948501948694509092019160010161149c565b846118065760643561183457602060843583810103126101c657602460843501356001600160401b0381116101c65761167f90602480856084350101916084350101613015565b61168a8585836134ad565b6040516307c0329d60e21b815260c0517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693925f91839182916116da9190600484016132d8565b0381865afa9081156103b6575f9161181a575b506116f781613063565b51815190915f19820191821161019b578b9161171291613070565b51602061172a876117238186613070565b5194613070565b5101525261175d9161173e87875f9461354d565b90604051808095819463d06ca61f60e01b835260c051600484016132d8565b03915afa9081156103b6575f916117ec575b5061177981613063565b519080515f19810190811161019b5761179191613070565b519061179d8389613070565b519060206117ab858b613070565b510152525b60e435612710016127101161019b5760c05161271060e4350181810292918015908404909114171561019b576127106001920460c052016113e6565b61180091503d805f833e6103a88183612dd8565b8a61176f565b634e487b7160e01b5f52602160045260245ffd5b61182e91503d805f833e6103a88183612dd8565b8c6116ed565b9097959492919693505f976001606435145f14611fd457602060843582810103126101c657602460843501356001600160401b0381116101c65761188690602480846084350101916084350101612e99565b948551976118926133df565b506020890151518015159081611fbd575b50156110c9578851516002810180911161019b576118c0906133f8565b9a6118c96133df565b50895151996020810151519060018c01808d1161019b57820361108a576118ef8c6133f8565b610100526118fc82612e1d565b9b61190a6040519d8e612dd8565b828d52601f1961191984612e1d565b013660208f01375f5b818110611f7d5750505f5b828110611f4a57505050604051996119448b612da2565b610100518b5260208b01526001600160a01b0386166119628d613063565b528b515f19810190811161019b576001600160a01b038c1690611985908e613070565b525f5b8a5180518210156119ca576001600160a01b03906119a7908390613070565b511690600181019182821161019b576119c38f93600194613070565b5201611988565b5050979a9994969291909860209096949601516040519a6119ea8c612da2565b8b5260208b01526119fd610dbb8b613616565b611a09610dbb8b613616565b602097604051611a198a82612dd8565b5f8152601f198a01368b830137925f935b60208d015151851015611aa257611a9a8d6001928d611a59896020611a50828751613070565b51950151613070565b5160405160609490941b6bffffffffffffffffffffffff19169184019190915260e81b6001600160e81b031916603483015260178252610e53603783612dd8565b940193611a2a565b91979b9095989694929a935051908151915f19830192831161019b57611af292611acb91613070565b5190604051916001600160601b03199060601b168b83015260148252610e53603483612dd8565b5f611b159160405180938192632f80bb1d60e01b835260c051906004840161321a565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156103b6575f91611f2d575b508a8c8a611b6e611b638484613070565b519360c05193613070565b510152525197611b7c6133df565b5087890151518015159081611f16575b5015611edb578851516002810180911161019b57611ba9906133f8565b9a611bb26133df565b508951519989810151519060018c01808d1161019b578203611e9c57611bd78c6133f8565b60a052611be382612e1d565b9b611bf16040519d8e612dd8565b828d52601f19611c0084612e1d565b01368d8f01375f5b818110611e5d5750505f5b828110611e2b5750505060405199611c2a8b612da2565b60a0518b52898b01526001600160a01b038616611c468d613063565b528b51805f1981011161019b576001600160a01b03851690611c6b905f19018e613070565b525f5b8a518051821015611cb0576001600160a01b0390611c8d908390613070565b511690600181019182821161019b57611ca98f93600194613070565b5201611c6e565b505092959194909397809b999a979a015160405199611cce8b612da2565b8a528b8a0152611ce0610dbb8a613616565b611cec610dbb8a613616565b604051611cf98c82612dd8565b5f8152601f198c01368d830137955f965b8c8b015151881015611d3657611d2e8b6001928f611a598c82611a50828751613070565b970196611d0a565b919650949a919692989997939951908151915f19830192831161019b57611d8792611d6091613070565b5190604051916001600160601b03199060601b168483015260148252610e53603483612dd8565b905f611dab926040518094819263cdca175360e01b835260c051906004840161321a565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19182156103b6575f92611e0c575b50611df38389613070565b519060c05190611e03858b613070565b510152526117b0565b611e219192503d805f833e610f378183612dd8565b505050908b611de8565b8b82015190835f1981011161019b578d611e568262ffffff61107b60019661103e845f198c01613246565b5201611c13565b825190825f1981011161019b576001916001600160a01b0390611e879061103e845f198801613246565b5116611e958260a051613070565b5201611c08565b60405162461bcd60e51b8152600481018c90526017602482015276556e6956333a204241445f504154485f4c454e4754485360481b6044820152606490fd5b60405162461bcd60e51b8152600481018990526013602482015272556e695633506174683a204241445f5056494160681b6044820152606490fd5b8a51515f198201925090821161019b57148c611b8c565b611f4191503d805f833e610f378183612dd8565b5050508c611b52565b602082015190835f1981011161019b578d611f768262ffffff61107b60019661103e845f198c01613246565b520161192d565b825190825f1981011161019b576001916001600160a01b0390611fa79061103e845f198801613246565b5116611fb68261010051613070565b5201611922565b8a51515f198201925090821161019b57148c6118a3565b9093969192949597505f936002606435036117b0579795969590949192909190602060843580880103126101c657602460843501356001600160401b0381116101c65761202f90602480896084350101916084350101612f7f565b955f606060405161203f81612d3d565b8281528260208201528260408201520152865115610be05760c05115610bd15786519561206b87612e1d565b966120796040519889612dd8565b808852612088601f1991612e1d565b015f5b818110612bde575050875160018101811161019b576001816120c26120b4836120cf9501612e1d565b60405160e05260e051612dd8565b81810160e0515201612e1d565b601f190136602060e0510137602098945f9290845b8a51851015612371576004908c6001600160a01b03612103888f613070565b5151166040519384809263038fff2d60e41b82525afa9182156103b6575f92612342575b50604051631f29a8cd60e31b815260048101839052905f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103b6575f9261226f575b5060018060a01b03166121918760e051613070565b5260018601861161019b576121b58c9160ff8f6106ff8a60018060a01b0396613070565b5116948b515f19810190811161019b5781148061225c575b6107a65760018101811161019b57600191866121ed84840160e051613070565b5281612255578d60c0515b83604051926122078185612dd8565b5f8452601f19810136828601376040519461222186612d87565b8552840152848401604084015260608301526080820152612242828d613070565b5261224d818c613070565b5001936120e4565b8d5f6121f8565b506001600160a01b038a168614156121cd565b9091503d805f833e6122818183612dd8565b60608282810103126101c6578151916001600160401b0383116101c657818101601f8483010112156101c6578f838201516122bb81612e1d565b946122c96040519687612dd8565b81865282860190858501848460051b8388010101116101c6578381860101915b848460051b8388010101831061232357505050508101516001600160401b0381116101c65761231b9282019101613253565b50905f61217c565b82516001600160a01b03811681036101c65781529184019184016122e9565b9091508c81813d831161236a575b61235a8183612dd8565b810103126101c65751908f612127565b503d612350565b5093949a91979095925060405161238781612d3d565b3081525f8b8201523060408201525f60608201526040518092637c26833760e11b82528c60e483016123b85f6130fd565b5f600485015260e060248501528251809152610104840190826101048260051b8701019401925f5b828110612b7c5750505050506003198282030160448301528c8060e05151928381520191602060e05101905f905b808210612b5957505084516001600160a01b0390811660648601529185015115156084850152506040840151811660a4840152606090930151151560c48301525f929082900390829084907f0000000000000000000000000000000000000000000000000000000000000000165af19081156103b6575f91612ab8575b5061249581613063565b5190805190815f1981011161019b57610a0c6124b6918f935f190190613070565b6124cd8c6124c48487613070565b51019285613070565b5152525f60606040516124df81612d3d565b828152828c8201528260408201520152875115610be05787519661250288612e1d565b97612510604051998a612dd8565b80895261251f601f1991612e1d565b018a5f5b828110612a8257505050885160018101811161019b5760018161255b61254d836125689501612e1d565b604051608052608051612dd8565b8181016080515201612e1d565b601f1901368b6080510137845f955b8a518710156127f6576004908c6001600160a01b036125968a8f613070565b5151166040519384809263038fff2d60e41b82525afa9182156103b6575f926127c7575b50604051631f29a8cd60e31b815260048101839052905f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103b6575f92612703575b5060018060a01b031661262489608051613070565b5260018801881161019b576126488c9160ff8f6106ff8c60018060a01b0396613070565b5116968b515f19810190811161019b578114806126f0575b6107a65760018101811161019b5760019188612680848401608051613070565b52816126e9578d60c0515b604051916126998184612dd8565b5f8352601f1981013682850137604051936126b385612d87565b845285850190840152836040840152606083015260808201526126d6828d613070565b526126e1818c613070565b500195612577565b8d5f61268b565b506001600160a01b038a16881415612660565b9091503d805f833e6127158183612dd8565b60608282810103126101c65781516001600160401b0381116101c657820191818101601f840112156101c6578f83519361274e85612e1d565b9461275c6040519687612dd8565b808652828087019160051b8301019185850183116101c6578301905b8282106127a8575050508101516001600160401b0381116101c6576127a09282019101613253565b50905f61260f565b81516001600160a01b03811681036101c6578152908301908301612778565b9091508c81813d83116127ef575b6127df8183612dd8565b810103126101c65751908f6125ba565b503d6127d5565b50969594509691999750979991996001916040519261281484612d3d565b3084525f838501523060408501525f6060850152604051938491637c26833760e11b835260e48301612845826130fd565b81600485015260e0602485015284518091526101048401866101048360051b8701019601915f5b88828210612a2157505050505060031983850301604484015284608051519485815201938560805101915f915b87818410612a0057505083516001600160a01b03908116606487015287850151151560848701526040850151811660a4870152606090940151151560c4860152505f94849003928492508591507f0000000000000000000000000000000000000000000000000000000000000000165af19182156103b6575f9261295d575b50612925610a0c83613063565b9180515f19810190811161019b5761293c91613070565b5190612948848a613070565b510190612955848a613070565b5152526117b0565b9091503d805f833e61296f8183612dd8565b81019082818303126101c6578051916001600160401b0383116101c65780601f8484010112156101c65782820151916129a783612e1d565b936129b56040519586612dd8565b83855285850192868560051b8385010101116101c657858082840101935b818660051b848601010185106129f057505050505050908b612918565b84518152938101938791016129d3565b84516001600160a01b03168852968701968996509093019291810191612899565b8598819294969395979850612a7090610103198d820301885260a060808a5180518452858101518685015260408101516040850152606081015160608501520151918160808201520190612cd0565b9601940191019188959496939261286c565b808b83809360405192612a9484612d87565b5f84525f838501525f60408501525f60608501526060608085015201015201612523565b90503d805f833e612ac98183612dd8565b8101908a818303126101c65780516001600160401b0381116101c65782601f8284010112156101c657808c9183015192612b0284612e1d565b94612b106040519687612dd8565b848652838601938560051b8484010101116101c657818e8093830101935b838660051b83850101018510612b4a575050505050508c61248b565b84518152938301938301612b2e565b82516001600160a01b03168552879550938301939183019160019091019061240e565b919396955091938280612bcb600193610103198c820301895260a060808c5180518452858101518685015260408101516040850152606081015160608501520151918160808201520190612cd0565b98019501910191879596949391926123e0565b602090604051612bed81612d87565b5f81525f838201525f60408201525f60608201526060608082015282828c0101520161208b565b90506020813d602011612c3e575b81612c2f60209383612dd8565b810103126101c657518661133d565b3d9150612c22565b9095506020813d602011612c74575b81612c6260209383612dd8565b810103126101c65751946113036112f9565b3d9150612c55565b634e487b7160e01b5f52603260045260245ffd5b602435906001600160a01b03821682036101c657565b604435906001600160a01b03821682036101c657565b35906001600160a01b03821682036101c657565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b818110612d115750505090565b9091926020612d33600192865190602060409280518352015160208201520190565b9401929101612d04565b608081019081106001600160401b03821117612d5857604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117612d5857604052565b60a081019081106001600160401b03821117612d5857604052565b604081019081106001600160401b03821117612d5857604052565b602081019081106001600160401b03821117612d5857604052565b90601f801991011681019081106001600160401b03821117612d5857604052565b60405190612e08604083612dd8565b60068252653b181718971b60d11b6020830152565b6001600160401b038111612d585760051b60200190565b9080601f830112156101c6578135612e4b81612e1d565b92612e596040519485612dd8565b81845260208085019260051b8201019283116101c657602001905b828210612e815750505090565b60208091612e8e84612cbc565b815201910190612e74565b91906020838203126101c657604051612eb181612dbd565b80938035906001600160401b0382116101c65701916040838203126101c65760405192612edd84612da2565b80356001600160401b0381116101c65782612ef9918301612e34565b84526020810135906001600160401b0382116101c657019080601f830112156101c657813590612f2882612e1d565b92612f366040519485612dd8565b82845260208085019360051b8201019182116101c657602001915b818310612f6357505050602083015252565b823562ffffff811681036101c657815260209283019201612f51565b81601f820112156101c657803590612f9682612e1d565b92612fa46040519485612dd8565b82845260208085019360061b830101918183116101c657602001925b828410612fce575050505090565b6040848303126101c65760405190612fe582612da2565b612fee85612cbc565b825260208501359060ff821682036101c65782602092836040950152815201930192612fc0565b9190916020818403126101c6576040519061302f82612dbd565b819381356001600160401b0381116101c65761304b9201612e34565b9052565b356001600160a01b03811681036101c65790565b805115612c7c5760200190565b8051821015612c7c5760209160051b010190565b9061308e82612e1d565b61309b6040519182612dd8565b82815280926130ac601f1991612e1d565b01905f5b8281106130bc57505050565b6020906040516130cb81612da2565b5f81525f83820152828285010152016130b0565b81156130e9570490565b634e487b7160e01b5f52601260045260245ffd5b6002111561180657565b6080818303126101c65780519260208201516001600160401b0381116101c657820183601f820112156101c657805161313f81612e1d565b9161314d6040519384612dd8565b81835260208084019260051b820101908682116101c657602001915b8183106131fa575050509260408301516001600160401b0381116101c65783019080601f830112156101c6578151906131a182612e1d565b926131af6040519485612dd8565b82845260208085019360051b8201019182116101c657602001915b8183106131dd5750505060609092015190565b825163ffffffff811681036101c6578152602092830192016131ca565b82516001600160a01b03811681036101c657815260209283019201613169565b929190613231602091604086526040860190612cd0565b930152565b600160ff1b811461019b575f0390565b9190820391821161019b57565b9080601f830112156101c657815161326a81612e1d565b926132786040519485612dd8565b81845260208085019260051b8201019283116101c657602001905b8282106132a05750505090565b8151815260209182019101613293565b906020828203126101c65781516001600160401b0381116101c6576132d59201613253565b90565b6060602091604081019381526040838201528451809452019201905f5b8181106133025750505090565b82516001600160a01b03168452602093840193909201916001016132f5565b5f19811461019b5760010190565b905f5f5b83518110156133705761334f6133498286613070565b516135ef565b61335c575b600101613333565b90613368600191613321565b919050613354565b5061337d90929192613084565b5f5f5b83518110156133d8576133966133498286613070565b6133a3575b600101613380565b906133d06001916133b48487613070565b516133bf8287613070565b526133ca8186613070565b50613321565b91905061339b565b5050905090565b604051906133ec82612da2565b60606020838281520152565b9061340282612e1d565b61340f6040519182612dd8565b8281528092613420601f1991612e1d565b0190602036910137565b1561343157565b60405162461bcd60e51b8152602060048201526014602482015273155b9a558cd4185d1a0e8810905117d41195531360621b6044820152606490fd5b6134ab906020808095946040519684889551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101845283612dd8565b565b9190928251516002810180911161019b576134c7906133f8565b936134d185613063565b6001600160a01b0390911690525f5b83518051821015613521576001600160a01b03906134ff908390613070565b511690600181019182821161019b5761351a60019388613070565b52016134e0565b505092915081515f19810190811161019b5761353d9083613070565b6001600160a01b03909116905290565b91928251516002810180911161019b57613566906133f8565b9361357085613063565b6001600160a01b0390911690525f5b8351805190818310156135d2575f19820191821161019b576001600160a01b03916135b0919061103e908590613246565b511690600181019182821161019b576135cb60019388613070565b520161357f565b50505092915081515f19810190811161019b5761353d9083613070565b805115159081613608575b50613603575f90565b600190565b60209150015115155f6135fa565b602081015151801515918261362a57505090565b90915051516001820180921161019b57149056fea2646970667358221220a7782e76d4e369c4cd91ba27a10fde31c9b434f0119ab8b8cff452bf67c965d264736f6c634300081d00330000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad240000000000000000000000003d4e44eb1374240ce5f1b871ab261cd16335b76a000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8000000000000000000000000300ab2038eac391f26d9f895dc61f8f66a548833