diff --git a/src/types/contracts/EntryPointSimulationsV6.ts b/src/types/contracts/EntryPointSimulationsV6.ts index a71ad0b2..6ea18ecd 100644 --- a/src/types/contracts/EntryPointSimulationsV6.ts +++ b/src/types/contracts/EntryPointSimulationsV6.ts @@ -46,4 +46,4 @@ export const EntryPointV06SimulationsAbi = [ // source: https://github.com/pimlicolabs/entrypoint-estimations/blob/6f6f343/src/v06/EntryPointCodeOverride.sol export const ENTRYPOINT_V06_SIMULATION_OVERRIDE = - "0x60806040526004361015610023575b361561001957600080fd5b610021612369565b005b60003560e01c80630396cb60146101635780630bd28e3b1461015e5780631b2e01b8146101595780631d732756146101545780631fad948c1461014f578063205c28781461014a57806335567e1a146101455780634b1d7cf5146101405780635287ce121461013b57806370a08231146101365780638f41ec5a14610131578063957122ab1461012c5780639b249f6914610127578063a619353114610122578063b760faf91461011d578063bb9fe6bf14610118578063c23a5cea14610113578063d6383f941461010e578063ee219423146101095763fc7e286d0361000e5761163d565b611487565b611363565b61124c565b611142565b611122565b611102565b610ff8565b610ea5565b610e89565b610e38565b610d08565b610a40565b6109d7565b6108b5565b61068d565b610500565b610354565b6102c7565b60203660031901126102ac5760043563ffffffff81168082036102ac573360009081526020819052604090207fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102a7916101e990916101c58115156116c9565b6101e26101d9600185015463ffffffff1690565b63ffffffff1690565b1115611715565b5492610289610233610208346001600160701b03607889901c16611777565b95610214871515611789565b6102276001600160701b038811156117ca565b6001600160701b031690565b61024d61023e610445565b6001600160701b039092168252565b600160208201526001600160701b038616604082015263ffffffff83166060820152600060808201819052338152602081905260409020611807565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b602435906001600160c01b03821682036102ac57565b346102ac5760203660031901126102ac576004356001600160c01b03811681036102ac573360009081526001602090815260408083206001600160c01b0390941683529290522061031881546118d7565b9055005b6001600160a01b038116036102ac57565b6024359061033a8261031c565b565b60c4359061033a8261031c565b359061033a8261031c565b346102ac5760403660031901126102ac5760206103ae6004356103768161031c565b61037e6102b1565b6001600160a01b0390911660009081526001845260408082206001600160c01b0390931682526020929092522090565b54604051908152f35b634e487b7160e01b600052604160045260246000fd5b60a081019081106001600160401b038211176103e857604052565b6103b7565b61010081019081106001600160401b038211176103e857604052565b606081019081106001600160401b038211176103e857604052565b90601f801991011681019081106001600160401b038211176103e857604052565b6040519061033a60a083610424565b6040519061033a60c083610424565b6040519061033a604083610424565b6040519061033a606083610424565b6001600160401b0381116103e857601f01601f191660200190565b9291926104a882610481565b916104b66040519384610424565b8294818452818301116102ac578281602093846000960137010152565b9181601f840112156102ac578235916001600160401b0383116102ac57602083818601950101116102ac57565b346102ac576101c03660031901126102ac576004356001600160401b0381116102ac57366023820112156102ac5761054290369060248160040135910161049c565b366023190161018081126102ac5761010060405191610560836103cd565b126102ac57604051610571816103ed565b61057961032d565b815260443560208201526064356040820152608435606082015260a43560808201526105a361033c565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a435906001600160401b0382116102ac5761061f9261060761060f9336906004016104d3565b92909161198b565b6040519081529081906020820190565b0390f35b9060406003198301126102ac576004356001600160401b0381116102ac5760040160009280601f83011215610689578135936001600160401b03851161068657506020808301928560051b0101116102ac5791906024356106838161031c565b90565b80fd5b8380fd5b346102ac5761069b36610623565b6106a6829392611ab5565b60005b84811061071c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b8583106106ec576100218585612d5e565b909193600190610712610700878987611b34565b61070a8886611b1b565b519088612c99565b01940191906106db565b61074761074061072e83859795611b1b565b5161073a848987611b34565b846128fd565b919061384d565b906001600160a01b031661086f57610820576107629061384d565b906001600160a01b03166107da5761077f576001019290926106a9565b60408051631101335b60e11b815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f742064756064820152606560f81b608482015260a490fd5b0390fd5b60408051631101335b60e11b8152600481018490526024810191909152601460448201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b6064820152608490fd5b60408051631101335b60e11b8152600481018490526024810191909152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152608490fd5b60408051631101335b60e11b8152600481018590526024810191909152601460448201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b6064820152608490fd5b346102ac5760403660031901126102ac576004356108d28161031c565b60243533600052600060205260406000209182546001600160701b03811683116109925760008084819461093d886109236102276100219a61091e610227899b6001600160701b031690565b611b57565b6001600160701b03166001600160701b0319825416179055565b604080516001600160a01b03831681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a26001600160a01b03165af161098c611b64565b50611b94565b60405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606490fd5b346102ac5760403660031901126102ac5760206004356109f68161031c565b6109fe6102b1565b6001600160a01b0390911660009081526001835260408082206001600160c01b03841683526020529020546040805192901b67ffffffffffffffff1916178152f35b346102ac57610a4e36610623565b9060009160005b828110610c135750610a678493611ab5565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610b8a57505060009260009060005b818110610ad957610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612d5e565b610b30610ae782848a611bd5565b610b05610af9610af960208401611c2c565b6001600160a01b031690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280611bf7565b906000915b808310610b4757505050600101610aa2565b90919497610b81610b7b600192610b758c8b610b6e82610b688e8b8d611b34565b92611b1b565b5191612c99565b90611777565b996118d7565b95019190610b35565b610b95818688611bd5565b6020610bad610ba48380611bf7565b92909301611c2c565b6000926001600160a01b03909116905b828410610bd05750505050600101610a90565b90919294610c0981610c0485610bfd610beb6001968d611b1b565b51610bf78c8b8a611b34565b856128fd565b908b612a8f565b6118d7565b9501929190610bbd565b610c1e818487611bd5565b93610c298580611bf7565b9190610c3a610af960208901611c2c565b966001600160a01b038816610c526001821415611c36565b610c73575b50506001929394955090610c6a91611777565b93929101610a55565b806040610c81920190611c82565b889291923b156102ac5760405163e3563a4f60e01b81529260009284928392610caf92899060048601611de1565b03818a5afa9081610ced575b50610cde5763086a9f7560e41b6000526001600160a01b03861660045260246000fd5b9394508493610c6a6001610c57565b80610cfc6000610d0293610424565b80610e7e565b38610cbb565b346102ac5760203660031901126102ac57600435610d258161031c565b60006080604051610d35816103cd565b828152826020820152826040820152826060820152015260018060a01b0316600052600060205261061f6040600020610ddb610dcc600160405193610d79856103cd565b6001600160701b038154818116875260ff8160701c161515602088015260781c1660408601520154610dbe610db18263ffffffff1690565b63ffffffff166060860152565b60201c65ffffffffffff1690565b65ffffffffffff166080830152565b60405191829182919091608065ffffffffffff8160a08401956001600160701b0381511685526020810151151560208601526001600160701b03604082015116604086015263ffffffff6060820151166060860152015116910152565b346102ac5760203660031901126102ac57600435610e558161031c565b60018060a01b0316600052600060205260206001600160701b0360406000205416604051908152f35b60009103126102ac57565b346102ac5760003660031901126102ac57602060405160018152f35b346102ac5760603660031901126102ac576004356001600160401b0381116102ac57610ed59036906004016104d3565b9050602435610ee38161031c565b6044356001600160401b0381116102ac57610f029036906004016104d3565b919092159081610fee575b50610fa9576014811015610f3b575b60405162461bcd60e51b81526020600482015260006024820152604490fd5b610f4b610f5191610f5793611e71565b90611e7f565b60601c90565b3b15610f64573880610f1c565b60405162461bcd60e51b815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606490fd5b90503b1538610f0d565b346102ac5760203660031901126102ac576004356001600160401b0381116102ac57602061102d6110499236906004016104d3565b604051632b870d1b60e11b815293849283929060048401611ed4565b03816000737fc98430eaedbb6070b35b39d7987250490883485af19081156110c457600091611095575b50633653dc0360e11b60009081526001600160a01b0391909116600452602490fd5b6110b7915060203d6020116110bd575b6110af8183610424565b810190611ebf565b38611073565b503d6110a5565b611e65565b90816101609103126102ac5790565b60206003198201126102ac57600435906001600160401b0382116102ac57610683916004016110c9565b346102ac57602061111a611115366110d8565b611ee5565b604051908152f35b60203660031901126102ac5761002160043561113d8161031c565b611fe2565b346102ac5760003660031901126102ac573360005260006020526040600020600181019081549063ffffffff82161561121a576111d06111aa61119c6101d96111dd956101d9611197875460ff9060701c1690565b612038565b65ffffffffffff4216612078565b845469ffffffffffff000000001916602082901b69ffffffffffff000000001617909455565b805460ff60701b19169055565b60405165ffffffffffff909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a9080602081016102a7565b60405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b6044820152606490fd5b346102ac5760203660031901126102ac5761002160008080806004356112718161031c565b3360009081526020819052604090209061130e61129c61022784546001600160701b039060781c1690565b926112a8841515612096565b6112f4600182016112e165ffffffffffff6112cd835465ffffffffffff9060201c1690565b166112d98115156120d9565b421015612125565b805469ffffffffffffffffffff19169055565b80546dffffffffffffffffffffffffffff60781b19169055565b604080516001600160a01b03831681526020810184905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a26001600160a01b03165af161135d611b64565b50612171565b346102ac5760603660031901126102ac576004356001600160401b0381116102ac576113939036906004016110c9565b602435906113a08261031c565b6044356001600160401b0381116102ac576113c26107d69136906004016104d3565b6113ca611a53565b6113d385612ef7565b6113f4816113ea6113e48289612769565b90612fe3565b9643600052612b8e565b954360005260009260609460018060a01b038316611455575b505050608001519361143b604061142d602084015165ffffffffffff1690565b92015165ffffffffffff1690565b90604051968796630116f59360e71b8852600488016121cb565b6000945084939550839061146e604051809481936121bd565b03925af190608061147d611b64565b929190388061140d565b346102ac57611495366110d8565b61149d611a53565b6114a682612ef7565b6114b08183612769565b825160a00151611523906114d1906001600160a01b03166130da565b6130da565b845151909290611501906114ed906001600160a01b03166130da565b966114f6612206565b506040810190611c82565b906014821061163157610f51610f4b61151d936114cc93611e71565b93612fe3565b80516001600160a01b03169060018060a01b03821660018114916115b16080880151976115a260408201519360606115776040611569602085015165ffffffffffff1690565b93015165ffffffffffff1690565b93015194611583610454565b9b8c5260208c015286151560408c015265ffffffffffff1660608b0152565b65ffffffffffff166080890152565b60a087015215159081611628575b506115e257506107d69160405194859463e0cff05f60e01b86526004860161230f565b906107d6926115f0836130da565b61160a6115fb610463565b6001600160a01b039095168552565b6020840152604051633ebb2d3960e21b815295869560048701612286565b905015386115bf565b505061151d60006130da565b346102ac5760203660031901126102ac5760043561165a8161031c565b6001600160a01b031660009081526020818152604091829020805460019091015483516001600160701b038084168252607084901c60ff1615158286015260789390931c9092169382019390935263ffffffff8316606082015291901c65ffffffffffff16608082015260a090f35b156116d057565b60405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606490fd5b1561171c57565b60405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b9190820180921161178457565b611761565b1561179057565b60405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b6044820152606490fd5b156117d157565b60405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b6044820152606490fd5b9065ffffffffffff6080600161033a946118416001600160701b0386511682906001600160701b03166001600160701b0319825416179055565b6020850151815460408701516effffffffffffffffffffffffffffff60701b1990911691151560701b60ff60701b169190911760789190911b6dffffffffffffffffffffffffffff60781b1617815560608501519101805463ffffffff191663ffffffff92909216919091178155920151825469ffffffffffff000000001916911660201b69ffffffffffff0000000016179055565b60001981146117845760010190565b156118ed57565b60405162461bcd60e51b815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152606490fd5b60005b8381106119455750506000910152565b8181015183820152602001611935565b9060209161196e81518092818552858086019101611932565b601f01601f1916010190565b906020610683928181520190611955565b9291925a9061199b3033146118e6565b8251906040820151915a611388606083015185010111611a2b5781516119de575b505050610683936119d8915a900360808401510193369161049c565b906124e8565b516119fb926119f79290916001600160a01b0316612372565b1590565b611a07573880806119bc565b6107d6611a12612384565b60405163231638d960e11b81529182916004830161197a565b63deaddead60e01b60005260206000fd5b6001600160401b0381116103e85760051b60200190565b60405190611a60826103cd565b6000608083604051611a71816103ed565b83815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b90611abf82611a3c565b611acc6040519182610424565b8281528092611add601f1991611a3c565b019060005b828110611aee57505050565b602090611af9611a53565b82828501015201611ae2565b634e487b7160e01b600052603260045260246000fd5b8051821015611b2f5760209160051b010190565b611b05565b9190811015611b2f5760051b8101359061015e19813603018212156102ac570190565b9190820391821161178457565b3d15611b8f573d90611b7582610481565b91611b836040519384610424565b82523d6000602084013e565b606090565b15611b9b57565b60405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b6044820152606490fd5b9190811015611b2f5760051b81013590605e19813603018212156102ac570190565b903590601e19813603018212156102ac57018035906001600160401b0382116102ac57602001918160051b360383136102ac57565b356106838161031c565b15611c3d57565b60405162461bcd60e51b815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606490fd5b903590601e19813603018212156102ac57018035906001600160401b0382116102ac576020019181360383136102ac57565b9035601e19823603018112156102ac5701602081359101916001600160401b0382116102ac5781360383136102ac57565b908060209392818452848401376000828201840152601f01601f1916010190565b61068391611d2481611d1784610349565b6001600160a01b03169052565b60208201356020820152611dd2611dc6611d75611d5a611d476040870187611cb4565b6101606040880152610160870191611ce5565b611d676060870187611cb4565b908683036060880152611ce5565b6080850135608085015260a085013560a085015260c085013560c085015260e085013560e0850152610100850135610100850152611db7610120860186611cb4565b90858303610120870152611ce5565b92610140810190611cb4565b91610140818503910152611ce5565b94939192909483604082016040835252606081019560608560051b830101948160009061015e1981360301995b838310611e2d5750505050506106839495506020818503910152611ce5565b9091929397605f1986820301825288358b8112156102ac576020611e5660019386839401611d06565b9a019201930191909392611e0e565b6040513d6000823e3d90fd5b906014116102ac5790601490565b356bffffffffffffffffffffffff19811692919060148210611e9f575050565b6bffffffffffffffffffffffff1960149290920360031b82901b16169150565b908160209103126102ac57516106838161031c565b916020610683938181520191611ce5565b6020810135611fb3611f03611efd6040850185611c82565b90613b50565b91611fa5611f17611efd6060870187611c82565b61010086013560e087013560c088013560a089013560808a0135611f42611efd6101208d018d611c82565b956040519a8b9960208b01809e60018060a01b03903516909693909a9998959261012098959261014089019c60018060a01b03168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03601f198101835282610424565b51902060408051602081019283523091810191909152466060820152611fdc8160808101611fa5565b51902090565b611fec3482612e10565b60018060a01b03168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206001600160701b0360406000205416604051908152a2565b1561203f57565b60405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b6044820152606490fd5b9065ffffffffffff8091169116019065ffffffffffff821161178457565b1561209d57565b60405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b6044820152606490fd5b156120e057565b60405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606490fd5b1561212c57565b60405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606490fd5b1561217857565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606490fd5b908092918237016000815290565b929365ffffffffffff60c095610683989794829487526020870152166040850152166060830152151560808201528160a08201520190611955565b60405190604082018281106001600160401b038211176103e85760405260006020838281520152565b9060c060a061068393805184526020810151602085015260408101511515604085015265ffffffffffff606082015116606085015265ffffffffffff60808201511660808501520151918160a08201520190611955565b92946122e961033a956122d76101009599986122c56122b16020976101408b526101408b019061222f565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b80516001600160a01b031660e08501520151805191909201908152602091820151910152565b61235861033a9461234661233160a0959998969960e0865260e086019061222f565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b61033a33611fe2565b9060009283809360208451940192f190565b3d61080081116123a9575b604051906020818301016040528082526000602083013e90565b5061080061238f565b600311156123bc57565b634e487b7160e01b600052602160045260246000fd5b9392919060038110156123bc576040916123f9918652606060208701526060860190611955565b930152565b60009060033d1161240b57565b905060046000803e60005160e01c90565b600060443d10610683576040513d600319016004823e8051913d60248401116001600160401b0384111761248957828201928351916001600160401b038311612481573d84016003190185840160200111612481575061068392910160200190610424565b949350505050565b92915050565b604090610683939281528160208201520190611955565b60a0906106839392815260606020820152601460608201527310504d4c081c1bdcdd13dc081c995d995c9d195960621b60808201528160408201520190611955565b92915a938051906124f88261311a565b60a08301805190959194916001600160a01b0390911690818061263057505083516001600160a01b03169050965b5a900301928302956040820190878251106125e1577f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f9261256f6020928a600195510390612e10565b61257960006123b2565b0151926125dc60206125a2612594845160018060a01b031690565b98516001600160a01b031690565b9201519589604051948594818060a01b031699818060a01b0316988590949392606092608083019683521515602083015260408201520152565b0390a4565b60408051631101335b60e11b8152600060048201526024810191909152602060448201527f414135312070726566756e642062656c6f772061637475616c476173436f73746064820152608490fd5b98918151612640575b5050612526565b61264a60006123b2565b606086015191813b156102ac5761268092886000809460405180978196829563a9a2340960e01b84528c029085600485016123d2565b0393f19081612708575b5061270157612697611b64565b8051156126bd576040516365c8fd4d60e01b81529081906107d6906000600484016124a6565b60408051631101335b60e11b8152600060048201526024810191909152601260448201527110504d4c081c1bdcdd13dc081c995d995c9d60721b6064820152608490fd5b3880612639565b80610cfc600061271793610424565b3861268a565b1561272457565b60405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606490fd5b916000915a9381519061277c828261318e565b61278581611ee5565b60208401526127bb6001600160781b03608084015160608501511760408501511760e0840135610100850135911717111561271d565b6127c482613236565b6127d181858460006132dd565b8451909891906127f3906119f7906001600160a01b0316602088015190613554565b6128ae5761280043600052565b60a09490940151606094906001600160a01b0316612892575b505a810360a0840135106128435760809360c092604087015260608601525a900391013501910152565b60408051631101335b60e11b8152600060048201526024810191909152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b909350816128a592975085846000613680565b95909238612819565b60408051631101335b60e11b8152600060048201526024810191909152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152608490fd5b9290916000925a8251612910818461318e565b61291983611ee5565b602085015261294f6001600160781b03608083015160608401511760408401511760e0860135610100870135911717111561271d565b61295881613236565b6129648186868b6132dd565b835190999190612986906119f7906001600160a01b0316602087015190613554565b612a405761299343600052565b60a09390930151606093906001600160a01b0316612a25575b505a840360a0860135106129d85750604085015260608401526080919060c0905a900391013501910152565b60408051631101335b60e11b815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081612a37929850868685613680565b969091386129ac565b60408051631101335b60e11b8152600481018490526024810191909152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152608490fd5b9290612a9a9061384d565b916001600160a01b0391821691160361086f5761082057612aba9061384d565b906001600160a01b03166107da5761077f5750565b908160209103126102ac575190565b90612afa60809161068396946101c085526101c0850191611ce5565b9360e0815160018060a01b03815116602086015260208101516040860152604081015160608601526060810151848601528381015160a086015260018060a01b0360a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a0818403910152611955565b612bc5602091612ba76060850151916060810190611c82565b9290916040519586948594630eb993ab60e11b865260048601612ade565b03816000305af160009181612c68575b5061068357612be2611b64565b60206000803e60005163deaddead60e01b14612c2757805115612c0757805190602001fd5b60405163231638d960e11b81526020600482015260006024820152604490fd5b60408051631101335b60e11b8152600060048201526024810191909152600f60448201526e41413935206f7574206f662067617360881b6064820152608490fd5b612c8b91925060203d602011612c92575b612c838183610424565b810190612acf565b9038612bd5565b503d612c79565b929190612cb5602091612ba76060850151916060810190611c82565b03816000305af160009181612d3d575b50612d395782612cd3611b64565b9060206000803e60005163deaddead60e01b14612cfa5750805115612c0757805190602001fd5b60408051631101335b60e11b815260048101929092526024820152600f60448201526e41413935206f7574206f662067617360881b6064820152608490fd5b9150565b612d5791925060203d602011612c9257612c838183610424565b9038612cc5565b6001600160a01b03168015612dcb57600080809381935af1612d7e611b64565b5015612d8657565b60405162461bcd60e51b815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606490fd5b60018060a01b0316600052600060205260406000206001600160701b03815416918201809211611784576001600160701b038211612e6f576001600160701b0361033a92166001600160701b03166001600160701b0319825416179055565b60405162461bcd60e51b815260206004820152601060248201526f6465706f736974206f766572666c6f7760801b6044820152606490fd5b90612ec19061068396949593606084526060840191611ce5565b6001600160a01b039094166020820152808403604090910152611ce5565b90604061068392600081528160208201520190611955565b612f046040820182611c82565b612f1c612f1084611c2c565b93610120810190611c82565b9290303b156102ac57600093612f4791604051968795869563957122ab60e01b875260048701612ea7565b0381305afa9081612faf575b5061033a576001612f626123fe565b6308c379a014612f73575b6110c457565b612f7b61241c565b80612f87575b50612f6d565b80516000925015612f8157604051631101335b60e11b81529081906107d69060048301612edf565b80610cfc6000612fbe93610424565b38612f53565b60405190612fd182610409565b60006040838281528260208201520152565b612ff8612ffe91612ff2612fc4565b5061389e565b9161389e565b81516001600160a01b03169081156130c8575b8261302e604061142d60206106839697015165ffffffffffff1690565b91613047604061142d602084015165ffffffffffff1690565b9065ffffffffffff811665ffffffffffff8416106130c0575b5065ffffffffffff811665ffffffffffff8416116130b6575b506130a790613098613089610472565b6001600160a01b039096168652565b65ffffffffffff166020850152565b65ffffffffffff166040830152565b91506130a7613079565b915038613060565b80516001600160a01b03169150613011565b906130e3612206565b9160018060a01b0316600052600060205263ffffffff600160406000206001600160701b03815460781c1685520154166020830152565b60e060c082015191015180821461313e57480180821015613139575090565b905090565b5090565b1561314957565b60405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606490fd5b6131f3906131ab61319e82611c2c565b6001600160a01b03168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190611c82565b90811561322b5761321d610f51610f4b8460a094613218601461033a99981015613142565b611e71565b6001600160a01b0316910152565b505060a06000910152565b60a08101516001600160a01b03161561326b5760c060035b60ff60408401519116606084015102016080830151019101510290565b60c0600161324e565b61328c60409295949395606083526060830190611d06565b9460208201520152565b9061033a602f60405180946e020a09919903932bb32b93a32b21d1608d1b60208301526132cc8151809260208686019101611932565b81010301601f198101845283610424565b93929190915a9161336e60208251956132fc875160018060a01b031690565b9361331561330d6040840184611c82565b90838d6138f9565b60a08801516001600160a01b03169161332d43600052565b6001600160a01b03909216159760009290896134fc575b6060015191840151604051633a871cdd60e01b815295869485936000938593929160048501613274565b03926001600160a01b03881690f1600091816134db575b5061341d57866133936123fe565b6308c379a0146133e4575b60408051631101335b60e11b81526004810192909252602482015260166044820152754141323320726576657274656420286f72204f4f472960501b6064820152608490fd5b6133ec61241c565b806133f7575061339e565b61340090613296565b604051631101335b60e11b81529182916107d6916004840161248f565b9495929361342f575b5050505a900391565b6001600160a01b031660009081526020819052604090209161345b61022784546001600160701b031690565b9081831161348e575082546dffffffffffffffffffffffffffff19169190036001600160701b0316179055388080613426565b60408051631101335b60e11b815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b6134f591925060203d602011612c9257612c838183610424565b9038613385565b925061352d6102276135208860018060a01b03166000526000602052604060002090565b546001600160701b031690565b8781111561354757506000846060825b9592505050613344565b8460606000928a0361353d565b6001600160a01b0316600090815260016020908152604080832084821c845290915290208054916001600160401b039161358d846118d7565b9055161490565b1561359b57565b60405162461bcd60e51b815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152606490fd5b91906040838203126102ac5782516001600160401b0381116102ac5783019080601f830112156102ac5781519161361683610481565b916136246040519384610424565b838352602084830101116102ac5760209261364491848085019101611932565b92015190565b9061033a602f60405180946e020a09999903932bb32b93a32b21d1608d1b60208301526132cc8151809260208686019101611932565b93909492919485516136ac60a060608301519261369e868511613594565b01516001600160a01b031690565b926136c98460018060a01b03166000526000602052604060002090565b6136dd61022782546001600160701b031690565b8681106137fe5791602061373d999a61371d89989796946001600160701b0360009b8c9803166001600160701b03166001600160701b0319825416179055565b0151604051637a32e3bf60e11b8152998a97889687939060048501613274565b03946001600160a01b03169103f191826000916000946137d7575b506137d357836137666123fe565b6308c379a0146137b7575b60408051631101335b60e11b81526004810192909252602482015260166044820152754141333320726576657274656420286f72204f4f472960501b6064820152608490fd5b6137bf61241c565b806137ca5750613771565b6134009061364a565b9250565b9093506137f791503d806000833e6137ef8183610424565b8101906135e0565b9238613758565b60408051631101335b60e11b8152600481018b90526024810191909152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152608490fd5b80156138955761385c9061389e565b65ffffffffffff60408201511642118015613880575b90516001600160a01b031691565b5065ffffffffffff6020820151164210613872565b50600090600090565b6138a6612fc4565b5065ffffffffffff8160a01c1680156138ec575b65ffffffffffff90604051926138cf84610409565b6001600160a01b038116845260d01c602084015216604082015290565b5065ffffffffffff6138ba565b92909181613908575b50505050565b8251516001600160a01b031693843b613b035760608451015160206040518092632b870d1b60e11b8252816000737fc98430eaedbb6070b35b39d798725049088348826139598b8b60048401611ed4565b0393f19081156110c457600091613ae4575b506001600160a01b038116958615613a95576001600160a01b031695869003613a46573b156139f95750610f51610f4b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936139c693611e71565b602083810151935160a00151604080516001600160a01b039485168152939091169183019190915290a338808080613902565b60408051631101335b60e11b815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b60408051631101335b60e11b8152600481018490526024810191909152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152608490fd5b60408051631101335b60e11b8152600481018590526024810191909152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152608490fd5b613afd915060203d6020116110bd576110af8183610424565b3861396b565b60408051631101335b60e11b815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b81604051918237209056fea2646970667358221220f5098df89859afc87c2cbcb45d8b199edd8d691831a4b88f76ebb848e0ceb43c64736f6c634300081a0033" + "0x60806040526004361015610022575b3615610018575f80fd5b6100206122bc565b005b5f3560e01c80630396cb60146101615780630bd28e3b1461015c5780631b2e01b8146101575780631d732756146101525780631fad948c1461014d578063205c28781461014857806335567e1a146101435780634b1d7cf51461013e5780635287ce121461013957806370a08231146101345780638f41ec5a1461012f578063957122ab1461012a5780639b249f6914610125578063a619353114610120578063b760faf91461011b578063bb9fe6bf14610116578063c23a5cea14610111578063d6383f941461010c578063ee219423146101075763fc7e286d0361000e576115fa565b611445565b611325565b611210565b61110a565b6110ea565b6110ca565b610fc3565b610e71565b610e56565b610e09565b610cdd565b610a24565b6109bc565b61089e565b610678565b6104f6565b61034e565b6102c2565b60203660031901126102a85760043563ffffffff81168082036102a857335f9081526020819052604090207fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102a3916101e690916101c2811515611685565b6101df6101d6600185015463ffffffff1690565b63ffffffff1690565b11156116d1565b5492610285610230610205346001600160701b03607889901c16611731565b95610211871515611743565b6102246001600160701b03881115611784565b6001600160701b031690565b61024a61023b61043c565b6001600160701b039092168252565b600160208201526001600160701b038616604082015263ffffffff831660608201525f608082018190523381526020819052604090206117c1565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b5f80fd5b602435906001600160c01b03821682036102a857565b346102a85760203660031901126102a8576004356001600160c01b03811681036102a857335f9081526001602090815260408083206001600160c01b039094168352929052206103128154611891565b9055005b6001600160a01b038116036102a857565b6024359061033482610316565b565b60c4359061033482610316565b359061033482610316565b346102a85760403660031901126102a85760206103a760043561037081610316565b6103786102ac565b6001600160a01b039091165f9081526001845260408082206001600160c01b0390931682526020929092522090565b54604051908152f35b634e487b7160e01b5f52604160045260245ffd5b60a081019081106001600160401b038211176103df57604052565b6103b0565b61010081019081106001600160401b038211176103df57604052565b606081019081106001600160401b038211176103df57604052565b90601f801991011681019081106001600160401b038211176103df57604052565b6040519061033460a08361041b565b6040519061033460c08361041b565b6040519061033460408361041b565b6040519061033460608361041b565b6001600160401b0381116103df57601f01601f191660200190565b92919261049f82610478565b916104ad604051938461041b565b8294818452818301116102a8578281602093845f960137010152565b9181601f840112156102a8578235916001600160401b0383116102a857602083818601950101116102a857565b346102a8576101c03660031901126102a8576004356001600160401b0381116102a857366023820112156102a857610538903690602481600401359101610493565b366023190161018081126102a85761010060405191610556836103c4565b126102a857604051610567816103e4565b61056f610327565b815260443560208201526064356040820152608435606082015260a4356080820152610599610336565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a435906001600160401b0382116102a857610615926105fd6106059336906004016104c9565b9290916118d4565b6040519081529081906020820190565b0390f35b9060406003198301126102a8576004356001600160401b0381116102a85760040182601f820112156102a8578035926001600160401b0384116102a8576020808301928560051b0101116102a857919060243561067581610316565b90565b346102a85761068636610619565b610691829392611a14565b5f5b84811061070557505f927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9725f80a15f915b8583106106d5576100208585612ca2565b9091936001906106fb6106e9878987611a90565b6106f38886611a77565b519088612be1565b01940191906106c4565b61073061072961071783859795611a77565b51610723848987611a90565b8461284d565b9190613761565b906001600160a01b0316610858576108095761074b90613761565b906001600160a01b03166107c35761076857600101929092610693565b60408051631101335b60e11b815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f742064756064820152606560f81b608482015260a490fd5b0390fd5b60408051631101335b60e11b8152600481018490526024810191909152601460448201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b6064820152608490fd5b60408051631101335b60e11b8152600481018490526024810191909152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152608490fd5b60408051631101335b60e11b8152600481018590526024810191909152601460448201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b6064820152608490fd5b346102a85760403660031901126102a8576004356108bb81610316565b602435335f525f60205260405f209182546001600160701b0381168311610977575f80848194610922886109086102246100209a610903610224899b6001600160701b031690565b611ab3565b6001600160701b03166001600160701b0319825416179055565b604080516001600160a01b03831681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a26001600160a01b03165af1610971611ac0565b50611aef565b60405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606490fd5b346102a85760403660031901126102a85760206004356109db81610316565b6109e36102ac565b6001600160a01b039091165f9081526001835260408082206001600160c01b03841683526020529020546040805192901b67ffffffffffffffff1916178152f35b346102a857610a3236610619565b905f915f5b828110610bec5750610a498493611a14565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9725f80a15f805b848110610b645750505f925f905f5b818110610ab55761002086865f7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612ca2565b610b0b610ac382848a611b30565b610ae1610ad5610ad560208401611b87565b6001600160a01b031690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d5f80a280611b52565b905f915b808310610b2157505050600101610a7f565b90919497610b5b610b55600192610b4f8c8b610b4882610b428e8b8d611a90565b92611a77565b5191612be1565b90611731565b99611891565b95019190610b0f565b610b6f818688611b30565b6020610b87610b7e8380611b52565b92909301611b87565b5f926001600160a01b03909116905b828410610ba95750505050600101610a70565b90919294610be281610bdd85610bd6610bc46001968d611a77565b51610bd08c8b8a611a90565b8561284d565b908b6129dd565b611891565b9501929190610b96565b610bf7818487611b30565b93610c028580611b52565b9190610c13610ad560208901611b87565b966001600160a01b038816610c2b6001821415611b91565b610c4c575b50506001929394955090610c4391611731565b93929101610a37565b806040610c5a920190611bdd565b889291923b156102a85760405163e3563a4f60e01b8152925f9284928392610c8792899060048601611d3b565b03818a5afa9081610cc3575b50610cb45763086a9f7560e41b5f526001600160a01b03861660045260245ffd5b9394508493610c436001610c30565b80610cd15f610cd79361041b565b80610e4c565b5f610c93565b346102a85760203660031901126102a857600435610cfa81610316565b5f6080604051610d09816103c4565b828152826020820152826040820152826060820152015260018060a01b03165f525f60205261061560405f20610dac610d9d600160405193610d4a856103c4565b6001600160701b038154818116875260ff8160701c161515602088015260781c1660408601520154610d8f610d828263ffffffff1690565b63ffffffff166060860152565b60201c65ffffffffffff1690565b65ffffffffffff166080830152565b60405191829182919091608065ffffffffffff8160a08401956001600160701b0381511685526020810151151560208601526001600160701b03604082015116604086015263ffffffff6060820151166060860152015116910152565b346102a85760203660031901126102a857600435610e2681610316565b60018060a01b03165f525f60205260206001600160701b0360405f205416604051908152f35b5f9103126102a857565b346102a8575f3660031901126102a857602060405160018152f35b346102a85760603660031901126102a8576004356001600160401b0381116102a857610ea19036906004016104c9565b9050602435610eaf81610316565b6044356001600160401b0381116102a857610ece9036906004016104c9565b919092159081610fb9575b50610f74576014811015610f06575b60405162461bcd60e51b8152602060048201525f6024820152604490fd5b610f16610f1c91610f2293611dc9565b90611dd7565b60601c90565b3b15610f2f575f80610ee8565b60405162461bcd60e51b815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606490fd5b90503b155f610ed9565b346102a85760203660031901126102a8576004356001600160401b0381116102a8576020610ff86110149236906004016104c9565b604051632b870d1b60e11b815293849283929060048401611e2c565b03815f737fc98430eaedbb6070b35b39d7987250490883485af190811561108c575f9161105d575b50633653dc0360e11b5f9081526001600160a01b0391909116600452602490fd5b61107f915060203d602011611085575b611077818361041b565b810190611e17565b5f61103c565b503d61106d565b611dbe565b90816101609103126102a85790565b60206003198201126102a857600435906001600160401b0382116102a85761067591600401611091565b346102a85760206110e26110dd366110a0565b611e3d565b604051908152f35b60203660031901126102a85761002060043561110581610316565b611f3a565b346102a8575f3660031901126102a857335f525f60205260405f20600181019081549063ffffffff8216156111de5761119461116e6111606101d66111a1956101d661115b875460ff9060701c1690565b611f8d565b65ffffffffffff4216611fcd565b845469ffffffffffff000000001916602082901b69ffffffffffff000000001617909455565b805460ff60701b19169055565b60405165ffffffffffff909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a9080602081016102a3565b60405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b6044820152606490fd5b346102a85760203660031901126102a8576100205f80808060043561123481610316565b335f908152602081905260409020906112d061125e61022484546001600160701b039060781c1690565b9261126a841515611feb565b6112b6600182016112a365ffffffffffff61128f835465ffffffffffff9060201c1690565b1661129b81151561202e565b42101561207a565b805469ffffffffffffffffffff19169055565b80546dffffffffffffffffffffffffffff60781b19169055565b604080516001600160a01b03831681526020810184905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a26001600160a01b03165af161131f611ac0565b506120c6565b346102a85760603660031901126102a8576004356001600160401b0381116102a857611355903690600401611091565b6024359061136282610316565b6044356001600160401b0381116102a8576113846107bf9136906004016104c9565b61138c6119b3565b61139585612e36565b6113b5816113ac6113a682896126bf565b90612f1e565b96435f52612adc565b95435f525f9260609460018060a01b038316611414575b50505060800151936113fa60406113ec602084015165ffffffffffff1690565b92015165ffffffffffff1690565b90604051968796630116f59360e71b88526004880161211f565b5f945084939550839061142c60405180948193612112565b03925af190608061143b611ac0565b9291905f806113cc565b346102a857611453366110a0565b61145b6119b3565b61146482612e36565b61146e81836126bf565b825160a001516114e19061148f906001600160a01b0316613015565b613015565b8451519092906114bf906114ab906001600160a01b0316613015565b966114b461215a565b506040810190611bdd565b90601482106115ef57610f1c610f166114db9361148a93611dc9565b93612f1e565b80516001600160a01b03169060018060a01b038216600181149161156f60808801519761156060408201519360606115356040611527602085015165ffffffffffff1690565b93015165ffffffffffff1690565b9301519461154161044b565b9b8c5260208c015286151560408c015265ffffffffffff1660608b0152565b65ffffffffffff166080890152565b60a0870152151590816115e6575b506115a057506107bf9160405194859463e0cff05f60e01b865260048601612262565b906107bf926115ae83613015565b6115c86115b961045a565b6001600160a01b039095168552565b6020840152604051633ebb2d3960e21b8152958695600487016121d9565b9050155f61157d565b50506114db5f613015565b346102a85760203660031901126102a85760043561161781610316565b6001600160a01b03165f9081526020818152604091829020805460019091015483516001600160701b038084168252607084901c60ff1615158286015260789390931c9092169382019390935263ffffffff8316606082015291901c65ffffffffffff16608082015260a090f35b1561168c57565b60405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606490fd5b156116d857565b60405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b9190820180921161173e57565b61171d565b1561174a57565b60405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b6044820152606490fd5b1561178b57565b60405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b6044820152606490fd5b9065ffffffffffff60806001610334946117fb6001600160701b0386511682906001600160701b03166001600160701b0319825416179055565b6020850151815460408701516effffffffffffffffffffffffffffff60701b1990911691151560701b60ff60701b169190911760789190911b6dffffffffffffffffffffffffffff60781b1617815560608501519101805463ffffffff191663ffffffff92909216919091178155920151825469ffffffffffff000000001916911660201b69ffffffffffff0000000016179055565b5f19811461173e5760010190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061067592818152019061189f565b9291925a90303303611957578251815161190a575b505061067593611904915a9003608084015101933691610493565b90612445565b5161192891611924916001600160a01b0316905a916122c5565b1590565b611933575f806118e9565b6107bf61193e6122d6565b60405163231638d960e11b8152918291600483016118c3565b60405162461bcd60e51b815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152606490fd5b6001600160401b0381116103df5760051b60200190565b604051906119c0826103c4565b5f6080836040516119d0816103e4565b83815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b90611a1e8261199c565b611a2b604051918261041b565b8281528092611a3c601f199161199c565b01905f5b828110611a4c57505050565b602090611a576119b3565b82828501015201611a40565b634e487b7160e01b5f52603260045260245ffd5b8051821015611a8b5760209160051b010190565b611a63565b9190811015611a8b5760051b8101359061015e19813603018212156102a8570190565b9190820391821161173e57565b3d15611aea573d90611ad182610478565b91611adf604051938461041b565b82523d5f602084013e565b606090565b15611af657565b60405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b6044820152606490fd5b9190811015611a8b5760051b81013590605e19813603018212156102a8570190565b903590601e19813603018212156102a857018035906001600160401b0382116102a857602001918160051b360383136102a857565b3561067581610316565b15611b9857565b60405162461bcd60e51b815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606490fd5b903590601e19813603018212156102a857018035906001600160401b0382116102a8576020019181360383136102a857565b9035601e19823603018112156102a85701602081359101916001600160401b0382116102a85781360383136102a857565b908060209392818452848401375f828201840152601f01601f1916010190565b61067591611c7e81611c7184610343565b6001600160a01b03169052565b60208201356020820152611d2c611d20611ccf611cb4611ca16040870187611c0f565b6101606040880152610160870191611c40565b611cc16060870187611c0f565b908683036060880152611c40565b6080850135608085015260a085013560a085015260c085013560c085015260e085013560e0850152610100850135610100850152611d11610120860186611c0f565b90858303610120870152611c40565b92610140810190611c0f565b91610140818503910152611c40565b94939192909483604082016040835252606081019560608560051b83010194815f9061015e1981360301995b838310611d865750505050506106759495506020818503910152611c40565b9091929397605f1986820301825288358b8112156102a8576020611daf60019386839401611c60565b9a019201930191909392611d67565b6040513d5f823e3d90fd5b906014116102a85790601490565b356bffffffffffffffffffffffff19811692919060148210611df7575050565b6bffffffffffffffffffffffff1960149290920360031b82901b16169150565b908160209103126102a8575161067581610316565b916020610675938181520191611c40565b6020810135611f0b611e5b611e556040850185611bdd565b90613a60565b91611efd611e6f611e556060870187611bdd565b61010086013560e087013560c088013560a089013560808a0135611e9a611e556101208d018d611bdd565b956040519a8b9960208b01809e60018060a01b03903516909693909a9998959261012098959261014089019c60018060a01b03168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03601f19810183528261041b565b51902060408051602081019283523091810191909152466060820152611f348160808101611efd565b51902090565b611f443482612d53565b60018060a01b0316805f525f6020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206001600160701b0360405f205416604051908152a2565b15611f9457565b60405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b6044820152606490fd5b9065ffffffffffff8091169116019065ffffffffffff821161173e57565b15611ff257565b60405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b6044820152606490fd5b1561203557565b60405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606490fd5b1561208157565b60405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606490fd5b156120cd57565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606490fd5b908092918237015f815290565b929365ffffffffffff60c095610675989794829487526020870152166040850152166060830152151560808201528160a0820152019061189f565b60405190604082018281106001600160401b038211176103df576040525f6020838281520152565b9060c060a061067593805184526020810151602085015260408101511515604085015265ffffffffffff606082015116606085015265ffffffffffff60808201511660808501520151918160a0820152019061189f565b929461223c6103349561222a6101009599986122186122046020976101408b526101408b0190612182565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b80516001600160a01b031660e08501520151805191909201908152602091820151910152565b6122ab6103349461229961228460a0959998969960e0865260e0860190612182565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b61033433611f3a565b905f9283809360208451940192f190565b3d61080081116122fa575b604051906020818301016040528082525f602083013e90565b506108006122e1565b6003111561230d57565b634e487b7160e01b5f52602160045260245ffd5b93929190600381101561230d5760409161234891865260606020870152606086019061189f565b930152565b5f9060033d1161235957565b905060045f803e5f5160e01c90565b5f60443d10610675576040513d600319016004823e8051913d60248401116001600160401b038411176123d457828201928351916001600160401b0383116123cc573d840160031901858401602001116123cc57506106759291016020019061041b565b949350505050565b92915050565b805191908290602001825e015f815290565b60409061067593928152816020820152019061189f565b60a0906106759392815260606020820152601460608201527310504d4c081c1bdcdd13dc081c995d995c9d195960621b6080820152816040820152019061189f565b92915a9380519061245582613052565b60a08301805190959194916001600160a01b0390911690818061258b57505083516001600160a01b03169050965b5a9003019283029560408201908782511061253d577f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f926124cc6020928a600195510390612d53565b6124d55f612303565b01519261253860206124fe6124f0845160018060a01b031690565b98516001600160a01b031690565b9201519589604051948594818060a01b031699818060a01b0316988590949392606092608083019683521515602083015260408201520152565b0390a4565b60408051631101335b60e11b81525f60048201526024810191909152602060448201527f414135312070726566756e642062656c6f772061637475616c476173436f73746064820152608490fd5b9891815161259b575b5050612483565b6125a45f612303565b606086015191813b156102a8576125d992885f809460405180978196829563a9a2340960e01b84528c02908560048501612321565b0393f1908161265f575b50612658576125f0611ac0565b805115612615576040516365c8fd4d60e01b81529081906107bf905f60048401612403565b60408051631101335b60e11b81525f60048201526024810191909152601260448201527110504d4c081c1bdcdd13dc081c995d995c9d60721b6064820152608490fd5b5f80612594565b80610cd15f61266d9361041b565b5f6125e3565b1561267a57565b60405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606490fd5b915f915a938151906126d182826130c6565b6126da81611e3d565b60208401526127106001600160781b03608084015160608501511760408501511760e08401356101008501359117171115612673565b6127198261316d565b6127258185845f61320b565b84519098919061274790611924906001600160a01b0316602088015190613478565b6127ff57612753435f52565b60a09490940151606094906001600160a01b03166127e4575b505a810360a0840135106127965760809360c092604087015260608601525a900391013501910152565b60408051631101335b60e11b81525f60048201526024810191909152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b909350816127f692975085845f61359b565b9590925f61276c565b60408051631101335b60e11b81525f60048201526024810191909152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152608490fd5b9290915f925a825161285f81846130c6565b61286883611e3d565b602085015261289e6001600160781b03608083015160608401511760408401511760e08601356101008701359117171115612673565b6128a78161316d565b6128b38186868b61320b565b8351909991906128d590611924906001600160a01b0316602087015190613478565b61298e576128e1435f52565b60a09390930151606093906001600160a01b0316612973575b505a840360a0860135106129265750604085015260608401526080919060c0905a900391013501910152565b60408051631101335b60e11b815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b9092508161298592985086868561359b565b9690915f6128fa565b60408051631101335b60e11b8152600481018490526024810191909152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152608490fd5b92906129e890613761565b916001600160a01b039182169116036108585761080957612a0890613761565b906001600160a01b03166107c3576107685750565b908160209103126102a8575190565b90612a4860809161067596946101c085526101c0850191611c40565b9360e0815160018060a01b03815116602086015260208101516040860152604081015160608601526060810151848601528381015160a086015260018060a01b0360a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a081840391015261189f565b612b13602091612af56060850151916060810190611bdd565b9290916040519586948594630eb993ab60e11b865260048601612a2c565b03815f305af15f9181612bb0575b5061067557612b2e611ac0565b60205f803e5f5163deaddead60e01b14612b7057805115612b5157805190602001fd5b60405163231638d960e11b8152602060048201525f6024820152604490fd5b60408051631101335b60e11b81525f60048201526024810191909152600f60448201526e41413935206f7574206f662067617360881b6064820152608490fd5b612bd391925060203d602011612bda575b612bcb818361041b565b810190612a1d565b905f612b21565b503d612bc1565b929190612bfd602091612af56060850151916060810190611bdd565b03815f305af15f9181612c81575b50612c7d5782612c19611ac0565b9060205f803e5f5163deaddead60e01b14612c3e5750805115612b5157805190602001fd5b60408051631101335b60e11b815260048101929092526024820152600f60448201526e41413935206f7574206f662067617360881b6064820152608490fd5b9150565b612c9b91925060203d602011612bda57612bcb818361041b565b905f612c0b565b6001600160a01b03168015612d0e575f80809381935af1612cc1611ac0565b5015612cc957565b60405162461bcd60e51b815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606490fd5b60018060a01b03165f525f60205260405f206001600160701b0381541691820180921161173e576001600160701b038211612daf576001600160701b0361033492166001600160701b03166001600160701b0319825416179055565b60405162461bcd60e51b815260206004820152601060248201526f6465706f736974206f766572666c6f7760801b6044820152606490fd5b90612e019061067596949593606084526060840191611c40565b6001600160a01b039094166020820152808403604090910152611c40565b906040610675925f8152816020820152019061189f565b612e436040820182611bdd565b612e5b612e4f84611b87565b93610120810190611bdd565b9290303b156102a8575f93612e8591604051968795869563957122ab60e01b875260048701612de7565b0381305afa9081612eec575b50610334576001612ea061234d565b6308c379a014612eb1575b61108c57565b612eb9612368565b80612ec5575b50612eab565b80515f925015612ebf57604051631101335b60e11b81529081906107bf9060048301612e1f565b80610cd15f612efa9361041b565b5f612e91565b60405190612f0d82610400565b5f6040838281528260208201520152565b612f33612f3991612f2d612f00565b506137b0565b916137b0565b81516001600160a01b0316908115613003575b82612f6960406113ec60206106759697015165ffffffffffff1690565b91612f8260406113ec602084015165ffffffffffff1690565b9065ffffffffffff811665ffffffffffff841610612ffb575b5065ffffffffffff811665ffffffffffff841611612ff1575b50612fe290612fd3612fc4610469565b6001600160a01b039096168652565b65ffffffffffff166020850152565b65ffffffffffff166040830152565b9150612fe2612fb4565b91505f612f9b565b80516001600160a01b03169150612f4c565b9061301e61215a565b9160018060a01b03165f525f60205263ffffffff600160405f206001600160701b03815460781c1685520154166020830152565b60e060c082015191015180821461307657480180821015613071575090565b905090565b5090565b1561308157565b60405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606490fd5b61312b906130e36130d682611b87565b6001600160a01b03168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190611bdd565b90811561316357613155610f1c610f168460a09461315060146103349998101561307a565b611dc9565b6001600160a01b0316910152565b505060a05f910152565b60a08101516001600160a01b0316156131a25760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613185565b6131c360409295949395606083526060830190611c60565b9460208201520152565b906103346131fd926040519384916e020a09919903932bb32b93a32b21d1608d1b6020840152602f8301906123da565b03601f19810184528361041b565b93929190915a91613299602082519561322a875160018060a01b031690565b9361324361323b6040840184611bdd565b90838d61380b565b60a08801516001600160a01b03169161325a435f52565b6001600160a01b0390921615975f929089613425575b6060015191840151604051633a871cdd60e01b815295869485935f9385939291600485016131ab565b03926001600160a01b03881690f15f9181613404575b5061334757866132bd61234d565b6308c379a01461330e575b60408051631101335b60e11b81526004810192909252602482015260166044820152754141323320726576657274656420286f72204f4f472960501b6064820152608490fd5b613316612368565b8061332157506132c8565b61332a906131cd565b604051631101335b60e11b81529182916107bf91600484016123ec565b94959293613359575b5050505a900391565b6001600160a01b03165f9081526020819052604090209161338461022484546001600160701b031690565b908183116133b7575082546dffffffffffffffffffffffffffff19169190036001600160701b03161790555f8080613350565b60408051631101335b60e11b815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b61341e91925060203d602011612bda57612bcb818361041b565b905f6132af565b92506134536102246134468860018060a01b03165f525f60205260405f2090565b546001600160701b031690565b8781111561346c57505f846060825b9592505050613270565b8460605f928a03613462565b6001600160a01b03165f90815260016020908152604080832084821c845290915290208054916001600160401b03916134b084611891565b9055161490565b156134be57565b60405162461bcd60e51b815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152606490fd5b91906040838203126102a85782516001600160401b0381116102a85783019080601f830112156102a857815161353881610478565b91613546604051938461041b565b818352602082850101116102a8576020815f92828096018386015e8301015292015190565b906103346131fd926040519384916e020a09999903932bb32b93a32b21d1608d1b6020840152602f8301906123da565b93909492919485516135c760a06060830151926135b98685116134b7565b01516001600160a01b031690565b926135e18460018060a01b03165f525f60205260405f2090565b6135f561022482546001600160701b031690565b86811061371257916020613654999a61363489989796946001600160701b035f9b8c9803166001600160701b03166001600160701b0319825416179055565b0151604051637a32e3bf60e11b8152998a978896879390600485016131ab565b03946001600160a01b03169103f191825f915f946136ec575b506136e8578361367b61234d565b6308c379a0146136cc575b60408051631101335b60e11b81526004810192909252602482015260166044820152754141333320726576657274656420286f72204f4f472960501b6064820152608490fd5b6136d4612368565b806136df5750613686565b61332a9061356b565b9250565b90935061370b91503d805f833e613703818361041b565b810190613503565b925f61366d565b60408051631101335b60e11b8152600481018b90526024810191909152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152608490fd5b80156137a957613770906137b0565b65ffffffffffff60408201511642118015613794575b90516001600160a01b031691565b5065ffffffffffff6020820151164210613786565b505f905f90565b6137b8612f00565b5065ffffffffffff8160a01c1680156137fe575b65ffffffffffff90604051926137e184610400565b6001600160a01b038116845260d01c602084015216604082015290565b5065ffffffffffff6137cc565b9290918161381a575b50505050565b8251516001600160a01b031693843b613a135760608451015160206040518092632b870d1b60e11b8252815f737fc98430eaedbb6070b35b39d7987250490883488261386a8b8b60048401611e2c565b0393f190811561108c575f916139f4575b506001600160a01b0381169586156139a5576001600160a01b031695869003613956573b156139095750610f1c610f167fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936138d693611dc9565b602083810151935160a00151604080516001600160a01b039485168152939091169183019190915290a35f808080613814565b60408051631101335b60e11b815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b60408051631101335b60e11b8152600481018490526024810191909152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152608490fd5b60408051631101335b60e11b8152600481018590526024810191909152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152608490fd5b613a0d915060203d60201161108557611077818361041b565b5f61387b565b60408051631101335b60e11b815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b81604051918237209056fea2646970667358221220f8302e1fdc4acf0aa83eb88c2189ade4cd283a6a46ef1b8861756e848a9689f264736f6c634300081a0033"