solc-0.8.35 0xd86756dbb01e75a11aadacb75c8495759ed92033 via-ir-low-runs
8385 bytes
6080806040526004361015610012575f80fd5b5f3560e01c90816306a2da3d146111235750806306fdde03146110dd578063077f22b7146110ba578063095ea7b3146110415780630c340a241461100d57806318160ddd14610ff057806323b872dd14610efe578063313ce56714610ee357806339a7919f14610eb257806340c10f1914610dae578063430bf08a14610d86578063456ee28614610d425780635d36b19014610c1e5780635f5a857714610bde578063609350cd14610ba65780636691cb3d14610b835780636b96be3914610b4357806370a0823114610b185780637a46a9c514610afb5780637d0d66ff14610ade57806395d89b4114610a9c5780639d01fc72146105515780639dc29fac14610517578063a9059cbb146104b4578063baa9c9db1461045e578063c2376dff14610445578063c7af335214610410578063cd6dc6871461032b578063d38bfff41461029e578063dd62ed3e1461024e578063e5c4fffe146101fd578063e696393a146101e0578063f51b0fd4146101c55763f9854bfc14610192575f80fd5b346101c15760203660031901126101c15760406101b56101b06112dd565b61183c565b82519182526020820152f35b5f80fd5b346101c1575f3660031901126101c1576101de33611e4d565b005b346101c1575f3660031901126101c157602060a054604051908152f35b346101c15760203660031901126101c15760606102186112dd565b6001600160a01b0381165f908152609d60205260409020549061023a90611cad565b604051918252602082015260016040820152f35b346101c15760403660031901126101c1576102676112dd565b61026f6112f3565b6001600160a01b039182165f908152609b60209081526040808320949093168252928352819020549051908152f35b346101c15760203660031901126101c1576102b76112dd565b6102d860018060a01b035f5160206120415f395f51905f52541633146117f3565b5f5160206120815f395f51905f528190555f5160206120415f395f51905f52546001600160a01b0391821691167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d5f80a3005b346101c15760403660031901126101c1576103446112dd565b61036560018060a01b035f5160206120415f395f51905f52541633146117f3565b6001600160a01b031680156103d657609c546001600160a01b03811661039b57602435609f556001600160a01b03191617609c55005b60405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260126024820152715a65726f207661756c74206164647265737360701b6044820152606490fd5b346101c1575f3660031901126101c157602060018060a01b035f5160206120415f395f51905f52541633146040519015158152f35b346101c1575f3660031901126101c1576101de33611cd4565b346101c15760203660031901126101c1576101de61047a6112dd565b61049b60018060a01b035f5160206120415f395f51905f52541633146117f3565b6104af6001600160a01b03821615156113e6565b611e4d565b346101c15760403660031901126101c1576104cd6112dd565b6001600160a01b03811690602435906104f39082906104ed851515611477565b336119a7565b6040519081525f5160206120215f395f51905f5260203392a3602060405160018152f35b346101c15760403660031901126101c1576101de6105336112dd565b61054860018060a01b03609c541633146114be565b60243590611757565b346101c15760403660031901126101c15761056a6112dd565b6105726112f3565b5f5160206120415f395f51905f52546001600160a01b031633148015610a17575b61059c90611389565b6001600160a01b0382169182156109d2576001600160a01b038216801561098f57808414610950575f81815260a560205260409020546001600160a01b03161580610932575b80610914575b806108f6575b156108a557835f5260a260205260ff60405f205416815f5260a260205260ff60405f2054169060058110159081610826578015918215610898575b8215610887575b505015610847576005811015908161082657801591821561083a575b8215610815575b5050156107d7578361078c610787610781610792947f31e39e4bb9df9d4143551c8a3a4798fc19b0854768570ce84d966f6adffd01a3985f5260a160205260405f2054156107c9575b805f5260a160205260405f20546107bb575b61077b6107756106bd8961168a565b966106c78b61168a565b93805f52609d6020526106e76106e260405f2054968b611527565b611894565b5f83815260a46020908152604080832080546001600160a01b0319908116871790915585845260a5835281842080549091168717905594825260a2808252858320805460ff1990811660031790915560a18352868420670de0b6b3a76400009055609d8084528785208f905595845290825285832080549091166004179055929092529190208190556118da565b916118da565b9061142d565b926118da565b611747565b9061195c565b6107b6604051928392836001600160a01b0391821681529116602082015260400190565b0390a1005b6107c488611e4d565b6106ae565b6107d287611cd4565b61069c565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726562617365537461746520746f60501b6044820152606490fd5b909150610826576002148580610653565b634e487b7160e01b5f52602160045260245ffd5b506001811491505f61064c565b60405162461bcd60e51b8152602060048201526018602482015277496e76616c69642072656261736553746174652066726f6d60401b6044820152606490fd5b909150610826576002148680610630565b506001811491505f610629565b60405162461bcd60e51b8152602060048201526024808201527f426c6f636b6564206279206578697374696e67207969656c642064656c6567616044820152633a34b7b760e11b6064820152608490fd5b505f84815260a460205260409020546001600160a01b0316156105ee565b505f84815260a560205260409020546001600160a01b0316156105e8565b505f81815260a460205260409020546001600160a01b0316156105e2565b60405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103232b632b3b0ba32903a379039b2b63360491b6044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527a16995c9bc81d1bc81859191c995cdcc81b9bdd08185b1b1bddd959602a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f5a65726f2066726f6d2061646472657373206e6f7420616c6c6f7765640000006044820152606490fd5b50609c5460405163570d8e1d60e01b815290602090829060049082906001600160a01b03165afa8015610a915761059c915f91610a62575b506001600160a01b031633149050610593565b610a84915060203d602011610a8a575b610a7c8183611333565b81019061136a565b84610a4f565b503d610a72565b6040513d5f823e3d90fd5b346101c1575f3660031901126101c157610ada604051610abd604082611333565b600481526309e8aa8960e31b602082015260405191829182611309565b0390f35b346101c1575f3660031901126101c1576020609e54604051908152f35b346101c1575f3660031901126101c1576020609f54604051908152f35b346101c15760203660031901126101c1576020610b3b610b366112dd565b61168a565b604051908152f35b346101c15760203660031901126101c1576001600160a01b03610b646112dd565b165f5260a5602052602060018060a01b0360405f205416604051908152f35b346101c1575f3660031901126101c1576020633b9aca00609f5404604051908152f35b346101c15760203660031901126101c1576001600160a01b03610bc76112dd565b165f5260a1602052602060405f2054604051908152f35b346101c15760203660031901126101c1576001600160a01b03610bff6112dd565b165f5260a4602052602060018060a01b0360405f205416604051908152f35b346101c1575f3660031901126101c1575f5160206120815f395f51905f52546001600160a01b03163303610ce4573315610ca2575f5160206120415f395f51905f525433906001600160a01b03167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a5f80a3335f5160206120415f395f51905f5255005b60405162461bcd60e51b815260206004820152601a6024820152794e657720476f7665726e6f72206973206164647265737328302960301b6044820152606490fd5b60405162461bcd60e51b815260206004820152603060248201527f4f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f60448201526f6d706c6574652074686520636c61696d60801b6064820152608490fd5b346101c15760203660031901126101c1576001600160a01b03610d636112dd565b165f5260a260205260ff60405f2054166040516005821015610826576020918152f35b346101c1575f3660031901126101c157609c546040516001600160a01b039091168152602090f35b346101c15760403660031901126101c157610dc76112dd565b602435610ddf60018060a01b03609c541633146114be565b6001600160a01b038216918215610e725761078c610e0691610e00846118da565b906119d8565b610e1281609a54611527565b609a8190556001600160801b031115610e40575f5160206120215f395f51905f5260205f92604051908152a3005b60405162461bcd60e51b815260206004820152600a6024820152694d617820737570706c7960b01b6044820152606490fd5b60405162461bcd60e51b81526020600482015260186024820152774d696e7420746f20746865207a65726f206164647265737360401b6044820152606490fd5b346101c15760203660031901126101c157610ed860018060a01b03609c541633146114be565b6101de600435611534565b346101c1575f3660031901126101c157602060405160128152f35b346101c15760603660031901126101c157610f176112dd565b610f1f6112f3565b6001600160a01b0381169160443591610f39841515611477565b6001600160a01b0382165f818152609b6020908152604080832033845290915290205490939092838211610fb65781602093610fa4925f5160206120215f395f51905f5296885f52609b875260405f2060018060a01b0333165f5287528360405f20910390556119a7565b604051908152a3602060405160018152f35b60405162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b6044820152606490fd5b346101c1575f3660031901126101c1576020609a54604051908152f35b346101c1575f3660031901126101c1575f5160206120415f395f51905f52546040516001600160a01b039091168152602090f35b346101c15760403660031901126101c15761105a6112dd565b335f818152609b602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346101c1575f3660031901126101c1576020633b9aca00609e5404604051908152f35b346101c1575f3660031901126101c157610ada6040516110fe604082611333565b600c81526b27b934b3b4b71022ba3432b960a11b602082015260405191829182611309565b346101c15760203660031901126101c15761113c6112dd565b5f5160206120415f395f51905f52546001600160a01b03163314918215611265575b506111765f5160206120a15f395f51905f5292611389565b6001600160a01b038181165f81815260a4602052604090205490929161119e911615156113e6565b5f82815260a460205260409020546001600160a01b0316916107929061078c6107756111c98561168a565b9261077b6107756111d98961168a565b92895f52609d6020526111f060405f205494611894565b5f8b815260a56020908152604080832080546001600160a01b031990811690915594835260a48252808320805490951690945560a2808252848320805460ff19908116600117909155609d8084528685208d90558f8552918352858420805490911660021790559052919091208190556118da565b609c5463570d8e1d60e01b8252909250602090839060049082906001600160a01b03165afa918215610a91575f5160206120a15f395f51905f5292611176915f916112be575b506001600160a01b03163314925061115e565b6112d7915060203d602011610a8a57610a7c8183611333565b846112ab565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b601f909101601f19168101906001600160401b0382119082101761135657604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126101c157516001600160a01b03811681036101c15790565b1561139057565b60405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74207468652053747261746567697374206f722060448201526723b7bb32b93737b960c11b6064820152608490fd5b156113ed57565b60405162461bcd60e51b815260206004820152601860248201527716995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b6044820152606490fd5b81810392915f13801582851316918412161761144557565b634e487b7160e01b5f52601160045260245ffd5b8115611463570490565b634e487b7160e01b5f52601260045260245ffd5b1561147e57565b60405162461bcd60e51b81526020600482015260186024820152775472616e7366657220746f207a65726f206164647265737360401b6044820152606490fd5b156114c557565b60405162461bcd60e51b815260206004820152601760248201527610d85b1b195c881a5cc81b9bdd081d1a194815985d5b1d604a1b6044820152606490fd5b6040919493926060820195825260208201520152565b9190820391821161144557565b9190820180921161144557565b609a54801561164a5781811461162457506001600160801b0381111561161f57506001600160801b035b80609a5561156e60a0548261151a565b609e5490670de0b6b3a76400008202828104670de0b6b3a76400001483151715611445578161159c91611527565b5f19810191908211611445576115b191611459565b9182609f5582156115df576115da5f5160206120615f395f51905f529360405193849384611504565b0390a1565b60405162461bcd60e51b8152602060048201526018602482015277496e76616c6964206368616e676520696e20737570706c7960401b6044820152606490fd5b61155e565b5f5160206120615f395f51905f529150609e54906115da609f5460405193849384611504565b60405162461bcd60e51b815260206004820152601860248201527743616e6e6f7420696e637265617365203020737570706c7960401b6044820152606490fd5b6001600160a01b0381165f81815260a2602052604090205460ff16916005831015610826576003831461173557815f52609d60205260405f205490670de0b6b3a7640000820291808304670de0b6b3a76400001490151715611445576004916116f56116fb92611cad565b90611459565b9214611705575090565b5f90815260a560209081526040808320546001600160a01b03168352609d9091529020546117329161151a565b90565b5090505f52609d60205260405f205490565b600160ff1b8114611445575f0390565b906001600160a01b0382169081156117b15780156117ac5760208161179461078c5f96610e006107875f5160206120215f395f51905f52976118da565b6117a081609a5461151a565b609a55604051908152a3565b505050565b60405162461bcd60e51b815260206004820152601a6024820152794275726e2066726f6d20746865207a65726f206164647265737360301b6044820152606490fd5b156117fa57565b60405162461bcd60e51b815260206004820152601a60248201527921b0b63632b91034b9903737ba103a34329023b7bb32b93737b960311b6044820152606490fd5b9061184682611cad565b91676765c793fa10079d601b1b8303611874576001600160a01b03165f908152609d60205260409020549190565b60018060a01b03165f52609d602052633b9aca008060405f205404920490565b609f549081810291818304149015171561144557670de0b6b3a764000081019081811161144557670de0b6b3a763ffff0190811161144557670de0b6b3a7640000900490565b6001600160ff1b0381116118eb5790565b60405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608490fd5b9190915f838201938412911290801582169115161761144557565b8061198c575b508061196b5750565b6119826119879161197d60a0546118da565b611941565b611fd2565b60a055565b61198261199e9161197d609e546118da565b609e555f611962565b6119d6926119d06119d0610e00946119c861078c95610e00610787876118da565b9690946118da565b92611941565b565b90915f915f9260018060a01b03821694855f5260a260205260ff60405f20541692611a0a611a058261168a565b6118da565b5f611a158483611941565b12611c685761198283611a2792611941565b9360058110156108265760038103611aa7575050505f85815260a460205260409020546001600160a01b03169050611a6a6106e283611a658461168a565b611527565b91611a8c611a77846118da565b835f52609d60205261077b60405f20546118da565b955f52609d60205260405f20555f52609d60205260405f2055565b600403611b0f575050506106e2611adf91855f5260a560205260018060a01b0360405f2054165f52609d60205260405f205490611527565b611b00611aeb826118da565b855f52609d60205261077b60405f20546118da565b935f52609d60205260405f2055565b809692963b8015908115611bd3575b501580611bb3575b80611b9f575b611b90575b505f82815260a16020526040902054948515611b82575093670de0b6b3a763ffff1901611b67575b5f52609d60205260405f2055565b805f5260a1602052670de0b6b3a764000060405f2055611b59565b9450509350611adf90611894565b611b9990611cd4565b5f611b31565b50825f5260a160205260405f205415611b2c565b50825f5260a260205260ff60405f20541660058110156108265715611b26565b601791501480611be4575b5f611b1e565b50803b6001600160401b03811161135657604051611c0c601f8301601f191660200182611333565b81815260208101915f83853c5190516001600160e81b03198116919060038210611c49575b50506001600160e81b03191661ef0160f01b14611bde565b6001600160e81b0319600392830390921b82901b161690505f80611c31565b60405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606490fd5b6001600160a01b03165f90815260a160205260409020548015611ccd5790565b50609f5490565b6001600160a01b0381165f81815260a16020526040902054909190611e0d57815f5260a260205260ff60405f20541660058110156108265760028114908115611e04575b5015611dab5781611da26020927f201ace89ad3f5ab7428b91989f6a50d1998791c7b94a0fa812fd64a57687165e945f52609d845261078c610775610787611d6460405f20549461168a565b93865f5260a2885260405f20600160ff19825416179055865f5260a18852670de0b6b3a764000060405f2055865f52609d88528460405f20556118da565b604051908152a1565b60405162461bcd60e51b815260206004820152602b60248201527f4f6e6c79207374616e64617264207265626173696e67206163636f756e74732060448201526a18d85b881bdc1d081bdd5d60aa1b6064820152608490fd5b9050155f611d18565b60405162461bcd60e51b81526020600482015260186024820152774163636f756e74206d757374206265207265626173696e6760401b6044820152606490fd5b611e568161168a565b9060018060a01b031690815f5260a160205260405f205415801590611fbe575b15611f7a57815f5260a260205260ff60405f20541660058110156108265760018114908115611f71575b5015611f15577f19a249fa2050bac8314ac10e3ad420bd9825574bf750f58810c3c7adfc7b1c6f91611da28261078c610787610781611ee0602097611894565b865f5260a2885260405f20600260ff19825416179055865f5260a188525f6040812055865f52609d88528060405f20556118da565b60405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79207374616e64617264206e6f6e2d7265626173696e67206163636f7560448201526d373a399031b0b71037b83a1034b760911b6064820152608490fd5b9050155f611ea0565b60405162461bcd60e51b815260206004820152601c60248201527b4163636f756e74206d757374206265206e6f6e2d7265626173696e6760201b6044820152606490fd5b50815f52609d60205260405f205415611e76565b5f8112611fdc5790565b606460405162461bcd60e51b815260206004820152602060248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a41645eb819d3011b13f97696a8109d14bfcddfaca7d063ec0564d62a3e25723544c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51dba4fa89dd14422a509261a2d4d459f93abdc84c6e92c5e7ae5448243713967bd3