0 txs
0 calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
version
viewfunction version() view returns (string)
dagSwapByOrderId
payablefunction dagSwapByOrderId(uint256 orderId, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
dagSwapTo
payablefunction dagSwapTo(uint256 orderId, address receiver, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[], address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
swapWrapToWithBaseRequest
payablefunction swapWrapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithBaseRequest
payablefunction uniswapV3SwapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, uint256[] pools) payable returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapToWithBaseRequest
payablefunction unxswapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, bytes32[] pools) payable returns (uint256 returnAmount)
events
CommissionAndTrimInfo
event CommissionAndTrimInfo(uint256 toBCommission, uint256 toBTrim, uint256 trimRate, uint256 chargeRate)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50615fac80620000216000396000f3fe6080604052600436106100dd5760003560e01c806301617fab1461013457806303b87e5f1461014757806308298b5a1461016d5780630c307f76146101805780630d5f0e3b1461019357806344014e98146101a657806354fd4d50146101b9578063591b3d08146102095780636aa476451461021c57806373679b6b146102515780639871efa41461027357806398d2ac6214610286578063b80c2f0914610299578063b8815477146102ac578063e0af3616146102bf578063e99bfa95146102e1578063f2c42696146102f4578063fa461e331461030757600080fd5b3661012f5732330361012d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61012d610142366004614f01565b610327565b61015a610155366004614fab565b61034a565b6040519081526020015b60405180910390f35b61015a61017b366004615077565b6103fb565b61015a61018e3660046150e9565b6104f1565b61015a6101a136600461515b565b610713565b61015a6101b43660046150e9565b61076e565b3480156101c557600080fd5b506101fc604051806040016040528060178152602001763b189718171b96b6bab63a3496b1b7b6b6b4b9b9b4b7b760491b81525081565b60405161016491906151ee565b61015a6102173660046157e1565b61088c565b34801561022857600080fd5b506102447367fa2b5e7ef52b422434b512a5790c43766ef6f381565b60405161016491906158a3565b34801561025d57600080fd5b50610244600080516020615f1783398151915281565b61015a61028136600461515b565b610b8a565b61012d6102943660046158b7565b610ba4565b61015a6102a73660046158f6565b610ce9565b61015a6102ba3660046150e9565b610d46565b3480156102cb57600080fd5b50610244600080516020615ed783398151915281565b61015a6102ef3660046159ac565b610f0c565b61015a610302366004615a5c565b610f1c565b34801561031357600080fd5b5061012d610322366004615ab6565b610f36565b600160ff1b81166001600160801b03821661034484338484611180565b50505050565b60008760800135428110156103715760405162461bcd60e51b815260040161012490615b35565b6040518b8152600080516020615f578339815191529060200160405180910390a16103ec33808c6103a7368e90038e018e615b5d565b8c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506103e792508d91508e9050615b79565b611536565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020615f578339815191529060200160405180910390a160008061043460003411868661168a565b9150915060006104438a611966565b9050826001600160a01b0316816001600160a01b0316148061048d57506001600160a01b03811615801561048d57506001600160a01b038316600080516020615ef7833981519152145b6104d35760405162461bcd60e51b81526020600482015260176024820152760eadcf0e6eec2e07440e8ded6cadc40dad2e6dac2e8c6d604b1b6044820152606401610124565b6104e383838b8b338c8c8c611972565b9a9950505050505050505050565b60008360800135428110156105185760405162461bcd60e51b815260040161012490615b35565b826105595760405162461bcd60e51b815260206004820152601160248201527007061746873206d757374206265203e203607c1b6044820152606401610124565b604051878152600080516020615f578339815191529060200160405180910390a16001600160a01b0386161561058f5785610591565b335b955060008061059e611a3a565b915091506000600760f91b878760008181106105bc576105bc615b86565b90506020028101906105ce9190615b9c565b608001351690506105f9836105e38a35611966565b6105f360408c0160208d01615bbc565b84611f96565b61061261060c60408a0160208b01615bbc565b8a61208c565b945060008061063f85338d8d6040013588600001518f602001602081019061063a9190615bbc565b61210c565b915091506106518a8a8a333387612156565b610670858c838d602001602081019061066a9190615bbc565b88612311565b508661068b61068560408d0160208e01615bbc565b8d61208c565b6106959190615bef565b965089606001358710156106bb5760405162461bcd60e51b815260040161012490615c08565b600080516020615f378339815191526106d48b35611966565b6106e460408d0160208e01615bbc565b328d604001358b6040516106fc959493929190615c38565b60405180910390a150505050505095945050505050565b60405160a086901c8152600090600080516020615f578339815191529060200160405180910390a160008061074c60003411868661287d565b91509150610760338984848b8b8b8b612b4f565b925050505b95945050505050565b60008360800135428110156107955760405162461bcd60e51b815260040161012490615b35565b604051878152600080516020615f578339815191529060200160405180910390a16000806107c760003411878761287d565b90925090506001600160a01b0382166107e08835611966565b6001600160a01b031614801561081657506001600160a01b03811661080b6040890160208a01615bbc565b6001600160a01b0316145b61085e5760405162461bcd60e51b81526020600482015260196024820152780eadcd2e6eec2e0ac667440e8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b61087f33896001600160a01b031684848b604001358c606001358c8c612b4f565b9998505050505050505050565b60008660800151428110156108b35760405162461bcd60e51b815260040161012490615b35565b60006108c28960000151611966565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016109285760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610124565b6001600160a01b0384166109775760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610124565b6001600160a01b0385166109c05760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610124565b6000896040015111610a0b5760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610124565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610a3a9030906004016158a3565b602060405180830381865afa158015610a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7b9190615c6c565b905060005b8951811015610ae2578a60400151828b8381518110610aa157610aa1615b86565b6020026020010151610ab39190615c85565b610abd9190615c9c565b8a8281518110610acf57610acf615b86565b6020908102919091010152600101610a80565b5060408a0181905260208a0151610af9908761208c565b9350610b098a8a8a30898b612c1f565b83610b188b602001518861208c565b610b229190615bef565b93508960600151841015610b485760405162461bcd60e51b815260040161012490615c08565b600080516020615f37833981519152828b60200151328d6040015188604051610b75959493929190615c38565b60405180910390a15050509695505050505050565b6000610b9a8686863387876103fb565b9695505050505050565b806080013542811015610bc95760405162461bcd60e51b815260040161012490615b35565b600080610bd68435611966565b90506001600160a01b038116600080516020615ef7833981519152148015610c235750600080516020615ed7833981519152610c186040860160208701615bbc565b6001600160a01b0316145b15610c315760009150610cd1565b6001600160a01b038116600080516020615ed7833981519152148015610c7c5750600080516020615ef7833981519152610c716040860160208701615bbc565b6001600160a01b0316145b15610c8a5760019150610cd1565b60405162461bcd60e51b815260206004820152601c60248201527b29bbb0b82bb930b81d1034b73b30b634b2103a37b5b2b7103830b4b960211b6044820152606401610124565b610ce18686848760400135611180565b505050505050565b6000876080013542811015610d105760405162461bcd60e51b815260040161012490615b35565b6040518a8152600080516020615f578339815191529060200160405180910390a16104e33380806103a7368e90038e018e615b5d565b6000836080013542811015610d6d5760405162461bcd60e51b815260040161012490615b35565b604051878152600080516020615f578339815191529060200160405180910390a1600080610d9f60003411878761168a565b90925090506000610db08835611966565b9050826001600160a01b0316816001600160a01b03161480610dfa57506001600160a01b038116158015610dfa57506001600160a01b038316600080516020615ef7833981519152145b610e445760405162461bcd60e51b815260206004820152601b60248201527a0eadcf0e6eec2e07440cce4dedaa8ded6cadc40dad2e6dac2e8c6d602b1b6044820152606401610124565b6001600160a01b038216610e5e60408a0160208b01615bbc565b6001600160a01b03161480610eac57506000610e8060408a0160208b01615bbc565b6001600160a01b0316148015610eac57506001600160a01b038216600080516020615ef7833981519152145b610ef45760405162461bcd60e51b81526020600482015260196024820152780eadcf0e6eec2e07440e8dea8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610124565b6104e383838a604001358b60600135338e8d8d611972565b6000610b9a86868686868761088c565b6000610f2b85338686866104f1565b90505b949350505050565b610fd7565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610f7257610f72610f3b565b6000518015610f9d5760a435600483015260248201819052610f9d6020600060448582885af1610fa2565b505050565b80610faf57610faf610f3b565b600160005114601f3d11163d151780610fd357633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa61100e5761100e610f3b565b6020806004808501335afa61102557611025610f3b565b60206040600460088501335afa61103e5761103e610f3b565b600080600088136001811461105a576020519250879150611063565b60005192508891505b506001733819ef38dd499eb7273946d69836632e4573819f605a1b03198452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b03605585201692503383146110d657635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114611148578260148601528360348601523360548601528160748601526111436020600060846010890160007367fa2b5e7ef52b422434b512a5790c43766ef6f35af1610fa2565b611175565b33601086015281603086015261116b602060006044600c89016000885af1610fa2565b6111758386610f45565b505050505050505050565b604051848152600080516020615f578339815191529060200160405180910390a1600081116111e65760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610124565b6001600160a01b038316156111fb57826111fd565b335b925060008061120a611a3a565b9150915060008461122957600080516020615ef7833981519152611239565b600080516020615ed78339815191525b905060008561125657600080516020615ed7833981519152611266565b600080516020615ef78339815191525b90506112758483836000611f96565b60008061128a86338b8a89600001518861210c565b9150915087156114085760405163052f523360e11b81527367fa2b5e7ef52b422434b512a5790c43766ef6f390630a5ea466906112ed90600080516020615ed7833981519152903390600080516020615f17833981519152908d90600401615cbe565b600060405180830381600087803b15801561130757600080fd5b505af115801561131b573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b8152600481018a9052600080516020615f178339815191529250632e1a7d4d9150602401600060405180830381600087803b15801561136657600080fd5b505af115801561137a573d6000803e3d6000fd5b505050506001600160a01b0382163014611403576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146113db576040519150601f19603f3d011682016040523d82523d6000602084013e6113e0565b606091505b50509050806114015760405162461bcd60e51b815260040161012490615ce8565b505b6114e2565b8551611456578634146114565760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610124565b600080516020615ed78339815191526001600160a01b031663d0e30db0886040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149f57600080fd5b505af11580156114b3573d6000803e3d6000fd5b505050506001600160a01b038316301490506114e2576114e2600080516020615ed78339815191528389612fb9565b60006114f1878b84878a612311565b9050600080516020615f378339815191528585328b6115108682615bef565b604051611521959493929190615c38565b60405180910390a15050505050505050505050565b60006001600160a01b0385161561154d578461154f565b335b945060008061155c611a3a565b915091506000600760f91b8560008151811061157a5761157a615b86565b602002602001015160008151811061159457611594615b86565b6020026020010151608001511690506115bf836115b48960000151611966565b896020015184611f96565b6115cd87602001518961208c565b93506000806115ec858d8c8c6040015188600001518e6020015161210c565b915091506115fe8989898f8f87612c1f565b61160f858b838c6020015188612311565b5050508361162188602001518a61208c565b61162b9190615bef565b935086606001518410156116515760405162461bcd60e51b815260040161012490615c08565b600080516020615f3783398151915261166d8860000151611966565b8860200151328a6040015188604051610b75959493929190615c38565b600080826116aa5760405162461bcd60e51b815260040161012490615d1e565b60006001600160a01b03858560008181106116c7576116c7615b86565b9050602002013560001c1690506000600160ff1b868660008181106116ee576116ee615b86565b9050602002013560001c166000141590508061176b57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117669190615d54565b6117cd565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cd9190615d54565b93506001600160a01b038416600080516020615ed78339815191521480156117f25750865b1561180957600080516020615ef783398151915293505b60008686611818600182615bef565b81811061182757611827615b86565b60200291909101359150506001600160a01b038116600160ff1b82161515806118b157816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ac9190615d54565b611913565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119139190615d54565b9550600160fe1b831615156001600160a01b038716600080516020615ed78339815191521480156119415750805b1561195857600080516020615ef783398151915296505b505050505050935093915050565b6001600160a01b031690565b60006001600160a01b03841615611989578361198b565b335b9350600080611998611a3a565b915091506119a9828c8c6000611f96565b6119b38a8761208c565b92506119c787878d8d8d8d8b8b8a8a612fe9565b826119d28b8861208c565b6119dc9190615bef565b9250878310156119fe5760405162461bcd60e51b815260040161012490615c08565b600080516020615f378339815191528b8b328c87604051611a23959493929190615c38565b60405180910390a150505b98975050505050505050565b604080516102a081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c080870186905260e0808801879052610100880187905261012088018790526101408801879052610160880187905261018088018790526101a088018790526101c088018790526101e088018790526102008801879052610220880187905261024088018790526102608801879052610280880187905288519081018952868152948501869052968401859052918301849052820183905281018290529283015290611b34565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60203603356001600160d01b031981166000653ca20afc2bbb60d01b8214651e51057e155560d11b83141715611b68575060015b6522220afc2bbb60d01b8214651111057e155560d11b83141715611b8a575060025b6588880afc2bbb60d01b8214654444057e155560d11b83141715611bac575060035b654444057e155560d11b8214651111057e155560d11b8314651e51057e155560d11b8414171785526588880afc2bbb60d01b82146522220afc2bbb60d01b8314653ca20afc2bbb60d01b8414171785602001526000811160018114611c3357601360005b81811015611c2c57600060208202890160400152600101611c10565b5050611cd3565b65ffffffffffff60a01b841660a01c8660a001526001600160a01b0384168660c001526040360335935060016000600160ff1b86161115611c72575060025b60608701526001600160a01b03841660408701526002821115611ccc5760ff60f01b841660f01c915060088211600383101715611ccc57611ccc60587414696e76616c6964207265666572726572206e756d60401b611b18565b8186608001525b506001811115611d8a5760015b6008811015611d885781811060018114611d0c57600060408302880160a0810182905260c00152611d7f565b6020820260400136033594506001600160d01b03198516808514611d5057611d50605b7717696e76616c696420636f6d6d697373696f6e20666c616760281b611b18565b5065ffffffffffff60a01b851660a01c604083028860a00101526001600160a01b038516604083028860c00101525b50600101611ce0565b505b600092508015611d9e576020600182010292505b50602082013603356001600160d01b031981169150653bbbbbbb911160d11b82146577777777111160d01b8314178085526001811460018114611dfc5760008660200152600086604001526000866060015260008660800152611e82565b65ffffffffffff60a01b831660a01c86602001526001600160a01b03831686604001526040850136033592506001600160d01b03198316808514611e5a57611e5a60557111696e76616c6964207472696d20666c616760581b611b18565b506001600160cf1b841615611e6d575060025b60608701526001600160a01b03831660808701525b5050653bbbbbbb911160d11b821460018114611eab5760008560a0015260008560c00152611f0b565b6060840136033591506001600160d01b03198216808414611ee657611ee660557111696e76616c6964207472696d20666c616760581b611b18565b5065ffffffffffff60a01b821660a01c8560a001526001600160a01b0382168560c001525b50505050816000015180611f20575081602001515b80611f29575080515b15611f92577f7970b0744fdb6cf0b120e5e0a5f4da3ab8cbec6d5d9ec8a4f327ccc1d8a5eb8b8260600151826060015183602001518460a00151604051611f89949392919093845260208401929092526040830152606082015260800190565b60405180910390a15b9091565b8351600160fb1b82161515600160fa1b8316151517600160f91b83161515179080821615611fe657611fe6605f7c1b46726f6d20636f6d6d697373696f6e206e6f7420737570706f727400611b18565b83850361200a5761200a60526e0e496e76616c696420746f6b656e7360701b611b18565b60208601518181161561203f5761203f60607c1c496e76616c696420636f6d6d697373696f6e20646972656374696f6e611b18565b6040870151868114831690861482161790159115919091161790508061208557612085605b7717496e76616c696420636f6d6d697373696f6e20696e666f60281b611b18565b5050505050565b6000600080516020615ef783398151915283146001811461210057604051602481016040526370a0823160e01b815283600482015260206000602483885afa9050806120f5576120f56058740519d95d0818985b185b98d953d98819985a5b195960421b611b18565b506000519150612105565b823191505b5092915050565b60008087602001518061211c5750835b156121355730915061212e833061208c565b9050612139565b8591505b87511561214b5761214b888887613031565b965096945050505050565b600061216736889003880188615b5d565b905060006121788260000151611966565b905060006121ad8888600081811061219257612192615b86565b90506020028101906121a49190615b9c565b60800135611966565b90506121c1826001600160a01b0316613476565b1561226a576001600160a01b038116600080516020615ed7833981519152146121fc5760405162461bcd60e51b815260040161012490615d71565b600080516020615ed78339815191526001600160a01b031663d0e30db084604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561224957600080fd5b505af115801561225d573d6000803e3d6000fd5b50505050503095506122db565b816001600160a01b0316816001600160a01b03161461229b5760405162461bcd60e51b815260040161012490615d71565b34156122db5760405162461bcd60e51b815260206004820152600f60248201526e076616c7565206d757374206265203608c1b6044820152606401610124565b61230386858786604001516122fc88602001516001600160a01b0316613476565b8d8d613492565b611175836020015185613515565b6000856020015115801561232457508151155b1561233157506000610765565b600061233d843061208c565b90506127b4565b808202811582820484141784026123635763ad251c276000526004601cfd5b9290920492915050565b500390565b8115610fd35760008060008085855af180610f9d57610f9d605571045cd95b9908195d1a195c8819985a5b1959605a1b611b18565b8215610f9d576040516044810160405263a9059cbb60e01b8152826004820152836024820152602060006044836000865af1905080601f3d11600160005114161516156123f65750803b153d17155b8061034457610344605975055d1c985b9cd9995c881d1bdad95b8819985a5b1959603a1b611b18565b604051606081016040528181528260208201528360408201528460608201527f3cfb523a4c38d88561dd3bf04805a31715c8b5fc468a03b8d684356f360dea99608082a15050505050565b604051606081016040528181528260208201528360408201527f7bec7d55a62a7a7b8068f1533e2a3bbf727b3e2e57f30c576fe159da60e09a65606082a150505050565b604051606081016040528181528260208201528360408201527ffd08115c8e43d2a49d95ee18d7f69b8bbac60bd368c73cf22d30664a22a0626d606082a150505050565b600060808201516000805b8281101561251c5760408102850160a0015191909101906001016124fd565b506301c9c38081111561254d5761254d605975156572726f7220636f6d6d697373696f6e207261746560381b611b18565b5060009150600080516020615ef78339815191528414600181146125cc5760005b828110156125c65760408102850160a0015180156125bd57612595633b9aca00828a612344565b6040830260c0018701516125aa82828b6123a7565b6125b68382848c61241f565b5094909401935b5060010161256e565b50612636565b60005b828110156126345760408102850160a00151801561262b576125f6633b9aca00828a612344565b6040830260c00187015161260a8282612372565b612624838284600080516020615ef783398151915261241f565b5094909401935b506001016125cf565b505b50509392505050565b6000602082015160a083015160648211156126725761267260536f0f6572726f72207472696d207261746560681b611b18565b6103e881111561269c5761269c605571116572726f7220636861726765207261746560581b611b18565b6080840151860392506126b26103e88388612344565b9150818311156126c0578192505b6126cd6103e88285612344565b9150818303600080516020615ef78339815191528614600181146126f657801561275f576127a9565b826103e8111561272a57604086015161270f8382612372565b6127288184600080516020615ef783398151915261246a565b505b821561275a5760c086015161273f8582612372565b6127588186600080516020615ef78339815191526124ae565b505b6127a9565b826103e8111561278657604086015161277983828a6123a7565b61278481848a61246a565b505b82156127a95760c086015161279c85828a6123a7565b6127a781868a6124ae565b505b505050509392505050565b808511156127e0576127e06059750ab4b73b30b634b2103130b630b731b29030b33a32b960391b611b18565b6020870151858203908015612802576127fa82878b6124f2565b935090839003905b5083516080850151811515818411161561282a5761282183888861263f565b94850194909203915b5050600080516020615ef783398151915285146001811461285e57612859826001600160a01b038a16886123a7565b612871565b612871826001600160a01b038a16612372565b50505095945050505050565b6000808261289d5760405162461bcd60e51b815260040161012490615d1e565b60006001600160a01b03858560008181106128ba576128ba615b86565b905060200201351690506000600160ff1b868660008181106128de576128de615b86565b905060200201351660001490508061295757816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561292e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129529190615d54565b6129b9565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b99190615d54565b93506001600160a01b038416600080516020615ed78339815191521480156129de5750865b156129f557600080516020615ef783398151915293505b60008686612a04600182615bef565b818110612a1357612a13615b86565b60200291909101359150506001600160a01b038116600160ff1b82161580612a9c57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a979190615d54565b612afe565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afe9190615d54565b9550600160fd1b831615156001600160a01b038716600080516020615ed78339815191521480156119415750801561195857600080516020615ef78339815191529650505050505050935093915050565b6000806001600160a01b03891615612b6f57612b6a89611966565b612b71565b335b9050600080612b7e611a3a565b91509150612b8f828b8b6000611f96565b612b99898461208c565b9350612bac8c848a8a8d8b8b89896137ab565b83612bb78a8561208c565b612bc19190615bef565b935086841015612be35760405162461bcd60e51b815260040161012490615c08565b600080516020615f378339815191528a8a328b88604051612c08959493929190615c38565b60405180910390a150505098975050505050505050565b85518690600090612c2f90611966565b9050612c3a81613476565b15612d2c57600080516020615ed78339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612c8c57600080fd5b505af1158015612ca0573d6000803e3d6000fd5b5050505050600080516020615ed78339815191526001600160a01b0316612cfe87600081518110612cd357612cd3615b86565b6020026020010151600081518110612ced57612ced615b86565b602002602001015160800151611966565b6001600160a01b031614612d245760405162461bcd60e51b815260040161012490615d71565b309450612d72565b806001600160a01b0316612d4c87600081518110612cd357612cd3615b86565b6001600160a01b031614612d725760405162461bcd60e51b815260040161012490615d71565b6000805b8851811015612dae57888181518110612d9157612d91615b86565b602002602001015182612da49190615d9e565b9150600101612d76565b508260400151811115612e215760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610124565b508551875114612e655760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610124565b60005b8651811015612fa0578015612f435786600081518110612e8a57612e8a615b86565b6020026020010151600081518110612ea457612ea4615b86565b602002602001015160800151878281518110612ec257612ec2615b86565b6020026020010151600081518110612edc57612edc615b86565b60200260200101516080015114612f435760405162461bcd60e51b815260206004820152602560248201527f496e636f6e73697374656e742066726f6d546f6b656e206163726f7373206261604482015264746368657360d81b6064820152608401610124565b612f98868686612f5f87602001516001600160a01b0316613476565b8c8681518110612f7157612f71615b86565b60200260200101518c8781518110612f8b57612f8b615b86565b60200260200101516137ee565b600101612e68565b50612faf826020015184613515565b5050505050505050565b612fcc8363a9059cbb60e01b8484613945565b610f9d5760405163fb7f507960e01b815260040160405180910390fd5b600080612ffe848d8d8b87600001518e61210c565b90925090508b6130138b8a8a8a8a8689613998565b50613021858d848d88612311565b5050505050505050505050505050565b6132e9565b60008282101561236d576346e72d036000526004601cfd5b8115610fd35760008060008085855af180610f9d57610f9d605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200611b18565b8315610344576040516084810160405263052f523360e11b815281600482015282602482015283604482015284606482015260008060848360007367fa2b5e7ef52b422434b512a5790c43766ef6f35af19050806120855761208560577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b611b18565b8215610f9d576040516044810160405263a9059cbb60e01b8152826004820152836024820152602060006044836000865af1905080601f3d11600160005114161516156131545750803b153d17155b8061034457610344605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611b18565b604051604881016040526370a0823160e01b815230600482015260206000602483855afa9050806131cf576131cf6058740519d95d0818985b185b98d953d98819985a5b195960421b611b18565b506000516000805b858110156132955760408102870160a00151801561328c5760006001880383146001811461325a57613224670de0b6b3a76400008761321f8b670de0b6b3a764000088612344565b612344565b91508582111561325157613251605874051a5b9d985b1a5908185b5bdd5b9d14d8d85b195960421b611b18565b93810193613267565b6132648587613036565b91505b506040830260c00189015161327d828289613105565b6132898382848a61329e565b50505b506001016131d7565b50505050505050565b604051606081016040528181528260208201528360408201528460608201527fcd5eae9d9d0b96532bd1b7dbf6628ce436b2af735829087a03c548439f8bf850608082a15050505050565b604083015160608401516000608086015160005b8181101561331c5760408102880160a0015192909201916001016132fd565b506301c9c38082111561334d5761334d605975156572726f7220636f6d6d697373696f6e207261746560381b611b18565b600080516020615ef783398151915284036133c45760005b818110156133c25760408102880160a0015180156133b9576040820260c00189015184633b9aca00038289020461339c818361304e565b6133b6838383600080516020615ef783398151915261329e565b50505b50600101613365565b505b60018314600080516020615ef783398151915285141516156134365760005b818110156134345760408102880160a00151801561342b576040820260c00189015184633b9aca00038289020461341c81838c8b61308b565b6134288383838b61329e565b50505b506001016133e3565b505b60028314600080516020615ef783398151915285141516156132955781633b9aca0003828602046134698130898861308b565b5061329587828487613181565b6001600160a01b0316600080516020615ef78339815191521490565b8060006134b88288604080518082019091529182526001600160a01b0316602082015290565b905060005b828110156135095780156134cf573099505b6135018a8a89848a8a8a888181106134e9576134e9615b86565b90506020028101906134fb9190615b9c565b88614154565b6001016134bd565b50505050505050505050565b613527826001600160a01b0316613476565b15613718576040516370a0823160e01b8152600090600080516020615ed7833981519152906370a08231906135609030906004016158a3565b602060405180830381865afa15801561357d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a19190615c6c565b9050801561368e5760405163a9059cbb60e01b8152600080516020615f17833981519152600482015260248101829052600080516020615ed78339815191529063a9059cbb906044016020604051808303816000875af1158015613609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362d9190615db1565b50604051632e1a7d4d60e01b815260048101829052600080516020615f1783398151915290632e1a7d4d90602401600060405180830381600087803b15801561367557600080fd5b505af1158015613689573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610f9d57478015610344576000836001600160a01b03168260405160006040518083038185875af1925050503d80600081146136f2576040519150601f19603f3d011682016040523d82523d6000602084013e6136f7565b606091505b50509050806120855760405162461bcd60e51b815260040161012490615ce8565b6001600160a01b0381163014610fd3576040516370a0823160e01b81526000906001600160a01b038416906370a08231906137579030906004016158a3565b602060405180830381865afa158015613774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137989190615c6c565b90508015610f9d57610f9d838383612fb9565b6000806137c0848c8c8c87600001518c61210c565b915091506137d28b838b8b8a8a61462f565b506137e0848b838a87612311565b505050505050505050505050565b600061380682600081518110612ced57612ced615b86565b905060008060008451905060005b8181101561393857801561384957613837868281518110612ced57612ced615b86565b9450613843853061208c565b9650309a505b30613855600184615bef565b82148015613861575088155b1561386d575088613905565b613878600184615bef565b821080156138ae57508661388d836001615d9e565b8151811061389d5761389d615b86565b602002602001015160200151516001145b1561390057866138bf836001615d9e565b815181106138cf576138cf615b86565b6020026020010151602001516000815181106138ed576138ed615b86565b6020026020010151905060019450613905565b600094505b61392c8c8c838b8b878151811061391e5761391e615b86565b60200260200101518961498d565b50839250600101613814565b5050505050505050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015610f2e573d801561398757600160005114601f3d1116915061398f565b6000863b1191505b50949350505050565b6000613bbf565b828152600060206000600484600401865afa6139d4576139d46054700419d95d081d1bdad95b8819985a5b195960621b611b18565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa613a2257613a22605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611b18565b600051915083836004015260206000602485855afa613a5f57613a5f6059750558985b185b98d953d98818d85b1b0819985a5b1959603a1b611b18565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa613a2257613a22605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611b18565b668b0367c240bc6b60c21b8152600060406000600484600401875afa613af157613af1605874051c995cd95c9d995cc818d85b1b0819985a5b195960421b611b18565b600051602051868015613b1d578915613b1557613b0e8786613a6b565b8390039650505b909190613b34565b8815613b3457613b2d87866139df565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015613b6e5781600484015260006024840152613b7c565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af1611a2e57611a2e605470041cddd85c0818d85b1b0819985a5b195960621b611b18565b846020850281018580613be657613be6604e6b0b656d70747920706f6f6c7360901b611b18565b5060405182358b600080516020615ef78339815191521460018114613c9f573415613c2b57613c2b60557111696e76616c6964206d73672e76616c756560581b611b18565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b606484015260008060848560007367fa2b5e7ef52b422434b512a5790c43766ef6f35af1613c9a57613c9a6056720498db185a5b481d1bdad95b8819985a5b195960521b611b18565b613d6c565b60018c341003613cc957613cc960557111696e76616c6964206d73672e76616c756560581b611b18565b670a9059cbbd0e30db60c41b835260008060048086018f600080516020615ed78339815191525af1613d1657613d166056720499195c1bdcda5d081155120819985a5b195960521b611b18565b6001600160a01b03821683600401528b8360240152602060006044856000600080516020615ed78339815191525af1613d6c57613d6c605874051d1c985b9cd9995c8815d155120819985a5b195960421b611b18565b508a9450602084015b83811015613dcb578035613dbf6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b613aae565b96509150602001613d75565b5060009350600160fe1b81168015613f0e57600080516020615ef78339815191529450613e253063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613aae565b9550672e1a7d4da9059cbb60c01b8352600080516020615f178339815191526008840152856028840152602060006044856004016000600080516020615ed78339815191525af1613e9357613e93605874051d1c985b9cd9995c8815d155120819985a5b195960421b611b18565b856004840152602060006024856000600080516020615f178339815191525af1613ed957613ed960577304ddda5d1a191c985dc81155120819985a5b1959604a1b611b18565b600080600080898b5af1613f0957613f0960577304dd1c985b9cd9995c881155120819985a5b1959604a1b611b18565b614144565b60009350600160ff1b82168015613fbc57600160fc1b831615613fb7576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa613f7457613f74605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611b18565b600051955087846004015260206000602486895afa613fb157613fb1605675055d1bdad95b8c0818985b185b98d94819985a5b1959603a1b611b18565b60005194505b614054565b600160fd1b831615614054576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa61401157614011605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611b18565b600051955087846004015260206000602486895afa61404e5761404e605975055d1bdad95b8c4818985b185b98d94819985a5b1959603a1b611b18565b60005194505b5061408c8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a613aae565b955084600010600181146140f557600160ff1b831680156140cd576140c66770a082310dfe168160c01b6001600160a01b0386168761399f565b96506140ef565b6140ec6770a08231d21220a760c01b6001600160a01b0386168761399f565b96505b50614142565b6770a082310dfe168160c01b845287846004015260206000602486895afa61413a5761413a6058740519d95d0818985b185b98d953d98819985a5b195960421b611b18565b846000510396505b505b5050505050979650505050505050565b60008060006141668560800135611966565b905060006141748680615dce565b9050116141bd5760405162461bcd60e51b8152602060048201526017602482015276065646765206c656e677468206d757374206265203e203604c1b6044820152606401610124565b6141ca6040860186615dce565b90506141d68680615dce565b90501480156141fd57506141ed6060860186615dce565b90506141f98680615dce565b9050145b801561422157506142116020860186615dce565b905061421d8680615dce565b9050145b6142645760405162461bcd60e51b81526020600482015260146024820152730e0c2e8d040d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606401610124565b8615614324576040516370a0823160e01b81526001600160a01b038216906370a08231906142969030906004016158a3565b602060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d79190615c6c565b9750600088116143245760405162461bcd60e51b815260206004820152601860248201527706e6f64652062616c616e6365206d757374206265203e20360441b6044820152606401610124565b60005b6143318680615dce565b905081101561393857600080808061434c60408b018b615dce565b8681811061435c5761435c615b86565b9050602002013560001b905061ffff60a01b811660a01c915060ff60b81b811660b81c935060ff60b01b811660b01c92508b84146143db5760405162461bcd60e51b815260206004820152601c60248201527b1b9bd919481a5b9c1d5d125b99195e081a5b98dbdb9cda5cdd195b9d60221b6044820152606401610124565b82841080156143eb575088518311155b6144315760405162461bcd60e51b81526020600482015260176024820152766e6f646520696e646578206f7574206f662072616e676560481b6044820152606401610124565b61443b8289615d9e565b975060016144498b80615dce565b614454929150615bef565b85036144a75787612710146144a75760405162461bcd60e51b81526020600482015260196024820152780746f74616c576569676874206d75737420626520313030303603c1b6044820152606401610124565b50600060016144b68b80615dce565b6144c1929150615bef565b85036144d8576144d1878e615bef565b90506144fe565b6127106144e5838f615c85565b6144ef9190615c9c565b90506144fb8188615d9e565b96505b61453f8f61450f60208d018d615dce565b8881811061451f5761451f615b86565b90506020020160208101906145349190615bbc565b8c6080013584614b1b565b50875130908314801561455057508a155b1561455857508c5b61462061456860408c018c615dce565b8781811061457857614578615b86565b6020029190910135905061458c8c80615dce565b8881811061459c5761459c615b86565b90506020020160208101906145b19190615bbc565b6145be60608e018e615dce565b898181106145ce576145ce615b86565b90506020028101906145e09190615e17565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208e0151869150614c9d565b50836001019350505050614327565b60006148c8565b6000856001600160ff1b03101561465857630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b03871681600181146146ec57630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806146e05760206000fd5b5060206000803e61474f565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806147475760206000fd5b5060208060003e5b505050506000519050600160ff1b811015614775576322323ba760e21b60005260046000fd5b1960010195945050505050565b60018134100361479d57631841b4e160e01b60005260046000fd5b60008060008084600080516020615ed78339815191525af180610fd357610fd360577304d5d155120819195c1bdcda5d0819985a5b1959604a1b611b18565b60405160048101672e1a7d4da9059cbb60c01b8252600080516020615f1783398151915260048201528360248201526000806044836000600080516020615ed78339815191525af190508061484e5761484e605874051d1c985b9cd9995c881dd95d1a0819985a5b195960421b611b18565b8360048301526000806024846000600080516020615f178339815191525af190508061489757614897605874051dda5d1a191c985dc81dd95d1a0819985a5b195960421b611b18565b60008060008087875af190508061034457610344605571045cd95b9908195d1a195c8819985a5b1959605a1b611b18565b82601f196020840282010183806148ea576333f3e07b60e11b60005260046000fd5b5088600034118015614903576148ff89614782565b309a505b5087606052825b8281101561492d57614920898235848e30614636565b309b50985060200161490a565b506000600160fd1b833516119250826001811461494f57801561496e5761497f565b61495d898435848e30614636565b9450614969858b6147dc565b61497f565b61497c898435848e8e614636565b94505b505050509695505050505050565b6000805b835151811015612faf576000846040015182815181106149b3576149b3615b86565b602090810291909101015190506001600160a01b038116600160ff1b821661ffff60a084901c166149e48187615d9e565b8851519096506149f690600190615bef565b8503614a5d57612710861115614a5d5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610124565b86614abc5760008161271014614a8957612710614a7a838c615c85565b614a849190615c9c565b614a8b565b895b9050614aba8d8a602001518881518110614aa757614aa7615b86565b60200260200101518b6080015184614b1b565b505b50614b058188600001518681518110614ad757614ad7615b86565b60200260200101518b858b606001518981518110614af757614af7615b86565b60200260200101518f614cb8565b5050508080614b1390615e5d565b915050614991565b6001600160a01b038216600760f91b8316601f60fb1b8101614b3e575050610344565b600160fa1b8103614c005782600003614bee5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03831601614b7e57479250614bee565b6040516370a0823160e01b81526001600160a01b038316906370a0823190614baa9030906004016158a3565b602060405180830381865afa158015614bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614beb9190615c6c565b92505b614bf9828685612fb9565b5050610344565b600160f91b8103614c12575050610344565b306001600160a01b03871603614c3257614c2d828685612fb9565b610ce1565b60405163052f523360e11b81527367fa2b5e7ef52b422434b512a5790c43766ef6f390630a5ea46690614c6f9085908a908a908990600401615cbe565b600060405180830381600087803b158015614c8957600080fd5b505af1158015613509573d6000803e3d6000fd5b600160ff1b85166001600160a01b0386166132958287868489885b8515614dbd57600080866001600160a01b0316636f7929f260e01b878787604051602401614ce893929190615e76565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614d366001600160a01b038616650f2882bf0b3360d21b615d9e565b604051602001614d47929190615ea2565b60408051601f1981840301815290829052614d6191615ec4565b6000604051808303816000865af19150503d8060008114614d9e576040519150601f19603f3d011682016040523d82523d6000602084013e614da3565b606091505b509150915081614db657614db681614eb1565b5050610ce1565b600080866001600160a01b03166330e6ae3160e01b878787604051602401614de793929190615e76565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614e356001600160a01b038616650f2882bf0b3360d21b615d9e565b604051602001614e46929190615ea2565b60408051601f1981840301815290829052614e6091615ec4565b6000604051808303816000865af19150503d8060008114614e9d576040519150601f19603f3d011682016040523d82523d6000602084013e614ea2565b606091505b509150915081612faf57612faf815b805115614ec057805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610124565b50565b60008060408385031215614f1457600080fd5b50508035926020909101359150565b6001600160a01b0381168114614efe57600080fd5b8035614f4381614f23565b919050565b600060a08284031215614f5a57600080fd5b50919050565b60008083601f840112614f7257600080fd5b5081356001600160401b03811115614f8957600080fd5b6020830191508360208260051b8501011115614fa457600080fd5b9250929050565b60008060008060008060008060006101408a8c031215614fca57600080fd5b8935985060208a0135614fdc81614f23565b9750614feb8b60408c01614f48565b965060e08a01356001600160401b038082111561500757600080fd5b6150138d838e01614f60565b90985096506101008c013591508082111561502d57600080fd5b6150398d838e01614f60565b90965094506101208c013591508082111561505357600080fd5b506150608c828d01614f60565b915080935050809150509295985092959850929598565b60008060008060008060a0878903121561509057600080fd5b86359550602087013594506040870135935060608701356150b081614f23565b925060808701356001600160401b038111156150cb57600080fd5b6150d789828a01614f60565b979a9699509497509295939492505050565b6000806000806000610100868803121561510257600080fd5b85359450602086013561511481614f23565b93506151238760408801614f48565b925060e08601356001600160401b0381111561513e57600080fd5b61514a88828901614f60565b969995985093965092949392505050565b60008060008060006080868803121561517357600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561513e57600080fd5b60005b838110156151b95781810151838201526020016151a1565b50506000910152565b600081518084526151da81602086016020860161519e565b601f01601f19169290920160200192915050565b60208152600061520160208301846151c2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561524057615240615208565b60405290565b60405161014081016001600160401b038111828210171561524057615240615208565b604051601f8201601f191681016001600160401b038111828210171561529157615291615208565b604052919050565b600060a082840312156152ab57600080fd5b6152b361521e565b90508135815260208201356152c781614f23565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561530b5761530b615208565b5060051b60200190565b600082601f83011261532657600080fd5b8135602061533b615336836152f2565b615269565b82815260059290921b8401810191818101908684111561535a57600080fd5b8286015b84811015615375578035835291830191830161535e565b509695505050505050565b600082601f83011261539157600080fd5b813560206153a1615336836152f2565b82815260059290921b840181019181810190868411156153c057600080fd5b8286015b848110156153755780356153d781614f23565b83529183019183016153c4565b600082601f8301126153f557600080fd5b81356001600160401b0381111561540e5761540e615208565b615421601f8201601f1916602001615269565b81815284602083860101111561543657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261546457600080fd5b81356020615474615336836152f2565b82815260059290921b8401810191818101908684111561549357600080fd5b8286015b848110156153755780356001600160401b038111156154b65760008081fd5b6154c48986838b01016153e4565b845250918301918301615497565b60006154e0615336846152f2565b838152905060208101600584901b83018510156154fc57600080fd5b825b8460051b8401811015612636576001600160401b03813581101561552157600080fd5b8135850187601f82011261553457600080fd5b61554161533682356152f2565b81358082526020808301929160051b8401018a81111561556057600080fd5b602084015b8181101561565557858135111561557b57600080fd5b8035850160a0818e03601f1901121561559357600080fd5b61559b61521e565b87602083013511156155ac57600080fd5b6155be8e602080850135850101615380565b815287604083013511156155d157600080fd5b6155e48e60206040850135850101615380565b602082015287606083013511156155fa57600080fd5b61560d8e60206060850135850101615315565b6040820152876080830135111561562357600080fd5b6156368e60206080850135850101615453565b606082015260a091909101356080820152845260209384019301615565565b5050855250506020928301929190910190506154fe565b600082601f83011261567d57600080fd5b615201838335602085016154d2565b8015158114614efe57600080fd5b8035614f438161568c565b600082601f8301126156b657600080fd5b813560206156c6615336836152f2565b82815260059290921b840181019181810190868411156156e557600080fd5b8286015b848110156153755780356001600160401b03808211156157095760008081fd5b90880190610140828b03601f19018113156157245760008081fd5b61572c615246565b878401358152604061573f818601614f38565b898301526060615750818701614f38565b8284015260809150615763828701614f38565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206157a581870161569a565b838301529285013592848411156157be57600091508182fd5b6157cc8e8b868901016153e4565b908301525086525050509183019183016156e9565b60008060008060008061014087890312156157fb57600080fd5b6158058888615299565b955060a08701356001600160401b038082111561582157600080fd5b61582d8a838b01615315565b965060c089013591508082111561584357600080fd5b61584f8a838b0161566c565b955060e089013591508082111561586557600080fd5b5061587289828a016156a5565b93505061010087013561588481614f23565b915061012087013561589581614f23565b809150509295509295509295565b6001600160a01b0391909116815260200190565b600080600060e084860312156158cc57600080fd5b8335925060208401356158de81614f23565b91506158ed8560408601614f48565b90509250925092565b600080600080600080600080610120898b03121561591357600080fd5b883597506159248a60208b01614f48565b965060c08901356001600160401b038082111561594057600080fd5b61594c8c838d01614f60565b909850965060e08b013591508082111561596557600080fd5b6159718c838d01614f60565b90965094506101008b013591508082111561598b57600080fd5b506159988b828c01614f60565b999c989b5096995094979396929594505050565b600080600080600061012086880312156159c557600080fd5b6159cf8787615299565b945060a08601356001600160401b03808211156159eb57600080fd5b6159f789838a01615315565b955060c0880135915080821115615a0d57600080fd5b615a1989838a0161566c565b945060e0880135915080821115615a2f57600080fd5b50615a3c888289016156a5565b925050610100860135615a4e81614f23565b809150509295509295909350565b60008060008060e08587031215615a7257600080fd5b84359350615a838660208701614f48565b925060c08501356001600160401b03811115615a9e57600080fd5b615aaa87828801614f60565b95989497509550505050565b60008060008060608587031215615acc57600080fd5b843593506020850135925060408501356001600160401b0380821115615af157600080fd5b818701915087601f830112615b0557600080fd5b813581811115615b1457600080fd5b886020828501011115615b2657600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215615b6f57600080fd5b6152018383615299565b60006152013684846154d2565b634e487b7160e01b600052603260045260246000fd5b60008235609e19833603018112615bb257600080fd5b9190910192915050565b600060208284031215615bce57600080fd5b813561520181614f23565b634e487b7160e01b600052601160045260246000fd5b81810381811115615c0257615c02615bd9565b92915050565b602080825260169082015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600060208284031215615c7e57600080fd5b5051919050565b8082028115828204841417615c0257615c02615bd9565b600082615cb957634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6020808252601c908201527b1d1c985b9cd9995c881b985d1a5d99481d1bdad95b8819985a5b195960221b604082015260600190565b6020808252601c908201527b0706f6f6c73206d7573742062652067726561746572207468616e20360241b604082015260600190565b600060208284031215615d6657600080fd5b815161520181614f23565b6020808252601390820152720ccd2e4e6e8a8ded6cadc40dad2e6dac2e8c6d606b1b604082015260600190565b80820180821115615c0257615c02615bd9565b600060208284031215615dc357600080fd5b81516152018161568c565b6000808335601e19843603018112615de557600080fd5b8301803591506001600160401b03821115615dff57600080fd5b6020019150600581901b3603821315614fa457600080fd5b6000808335601e19843603018112615e2e57600080fd5b8301803591506001600160401b03821115615e4857600080fd5b602001915036819003821315614fa457600080fd5b600060018201615e6f57615e6f615bd9565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090610f2b908301846151c2565b60008351615eb481846020880161519e565b9190910191825250602001919050565b60008251615bb281846020870161519e56fe00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000374d7938c26c25b06abd00f247faaac21c0f073e1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212208b152af05d3b3f7988ef459bd7d75def72e069f1d6db230ce903f26a80bdf36c64736f6c63430008110033